void MlmeADDBAAction(int param_1,byte *param_2)

{
  int iVar1;
  char *pcVar2;
  uint uVar3;
  undefined4 local_58;
  undefined4 local_54;
  undefined1 auStack_50 [8];
  undefined1 auStack_48 [24];
  undefined4 local_30;
  uint local_2c;
  uint local_28;
  
  local_58 = 0;
  memset(auStack_48,0,0x21)   //possible issue identified - semgrep
  iVar1 = MlmeAddBAReqSanity(param_1,param_2,*(undefined4 *)(param_2 + 0x648),auStack_50);
  if (iVar1 == 0) {
    return;
  }
  if (0x1e < (byte)(*param_2 - 1)) {
    return;
  }
  iVar1 = os_alloc_mem(param_1,&local_58,0x640);
  if (iVar1 == 0) {
    if (*(short *)(param_1 + ((uint)*param_2 * 0x510 + (uint)param_2[10] + 0x2e9b4) * 2 + 6) != 0) {
      iVar1 = (uint)*(byte *)((uint)*param_2 * 0xa20 + param_1 + 0x5cf69) * 0x1140 + param_1 +
              0x51ac;
      ActHeaderInit(param_1,auStack_48,param_2 + 1,iVar1,iVar1);
      uVar3 = (uint)*(ushort *)
                     (param_1 + ((uint)*param_2 * 0x510 + (uint)param_2[10] + 0x2e9d8) * 2 + 4);
      local_28 = local_28 & 0xffffff00 | (uVar3 << 0x14) >> 0x18;
      local_30._3_1_ =
           (byte)(((param_2[10] & 0xf) << 0x1a) >> 0x18) | 2 |
           (byte)(((uint)param_2[7] << 0x1e) >> 0x18);
      local_2c = (uint)CONCAT21(*(undefined2 *)(param_2 + 8),param_2[7] >> 2) | uVar3 << 0x1c;
      local_30._0_3_ = CONCAT12(param_2[0xb],3);
      MakeOutgoingFrame(local_58,&local_54,0x21,auStack_48,0xffffffff);
      MiniportMMRequest(param_1,*(byte *)((int)&MapUserPriorityToAccessCategory + (uint)param_2[10])
                                & 0x7f | 0x80,local_58,local_54);
      os_free_mem(param_1,local_58);
      if (RTDebugLevel < 3) {
        return;
      }
      printk("BA - Send ADDBA request. StartSeq = %x,  FrameLen = %ld. BufSize = %d\n",
             (local_28 & 0xff) << 4 | local_2c >> 0x1c,local_54,
             (local_2c & 0xff) << 2 | local_30 >> 0x1e);
      return;
    }
    os_free_mem(param_1,local_58);
    if (RTDebugLevel == 0) {
      return;
    }
    pcVar2 = "BA - MlmeADDBAAction() can\'t find BAOriEntry \n";
  }
  else {
    if (RTDebugLevel < 3) {
      return;
    }
    pcVar2 = "BA - MlmeADDBAAction() allocate memory failed \n";
  }
  printk(pcVar2);
  return;
}