void PeerAddBAReqAction(int param_1,int param_2)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined1 uVar7;
  undefined4 local_50;
  undefined4 local_4c;
  undefined1 auStack_48 [8];
  undefined1 auStack_40 [24];
  undefined2 local_28;
  undefined1 uStack_26;
  undefined1 uStack_25;
  uint local_24;
  uint local_20;
  
  local_50 = 0;
  if (2 < RTDebugLevel) {
    printk("%s ==> (Wcid = %d)\n","PeerAddBAReqAction",*(undefined1 *)(param_2 + 0x65d));
  }
  bVar1 = *(byte *)(param_2 + 0x65d);
  if (bVar1 < 0x20) {
    if (RTDebugLevel < 3) {
      uVar5 = *(undefined4 *)(param_2 + 0x648);
    }
    else {
      printk("BA - PeerAddBAReqAction----> \n");
      uVar5 = *(undefined4 *)(param_2 + 0x648);
    }
    iVar3 = PeerAddBAReqActionSanity(param_1,param_2,uVar5,auStack_48);
    uVar7 = 1;
    if ((iVar3 != 0) && (uVar7 = 0x25, *(char *)(param_1 + 0x16e05) == '\0')) {
      if (*(uint *)((uint)bVar1 * 0xa20 + param_1 + 0x5d350) >> 0x1e < 2) {
        uVar7 = 0x25;
      }
      else {
        printk("Rcv Wcid(%d) AddBAReq\n",*(undefined1 *)(param_2 + 0x65d));
        iVar3 = BARecSessionAdd(param_1,param_1 + (uint)*(byte *)(param_2 + 0x65d) * 0xa20 + 0x5cf38
                                ,param_2);
        uVar7 = 0;
        if (iVar3 == 0) {
          uVar7 = 0x26;
        }
      }
    }
    iVar3 = (uint)*(byte *)(param_2 + 0x65d) * 0xa20 + param_1;
    if ((*(int *)(iVar3 + 0x5cf38) == 1) && (*(int *)(iVar3 + 0x5d1ac) != 2)) {
      printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/common/ba_action.c:%d assert pAd->MacTab.Content[Elem->Wcid].Sst == SST_ASSOCfailed\n"
             ,0x4da);
    }
    iVar3 = os_alloc_mem(param_1,&local_50,0x640);
    if (iVar3 == 0) {
      memset(auStack_40,0,0x21)   //possible issue identified - semgrep
      iVar3 = (uint)*(byte *)((uint)*(byte *)(param_2 + 0x65d) * 0xa20 + param_1 + 0x5cf69) * 0x1140
              + param_1 + 0x51ac;
      ActHeaderInit(param_1,auStack_40,auStack_48,iVar3,iVar3);
      uVar4 = (*(byte *)(param_2 + 0x1c) & 0x3f) << 2 | (uint)(*(byte *)(param_2 + 0x1b) >> 6);
      uVar6 = (uint)*(byte *)(param_1 + 0x16a64);
      if (uVar4 < *(byte *)(param_1 + 0x16a64)) {
        uVar6 = uVar4;
      }
      uVar4 = (((uint)*(byte *)(param_2 + 0x1b) << 0x1a) >> 0x1c) << 10;
      uVar2 = local_24 & 0xff0002ff | 0x200 | uVar4 | uVar6 << 0xe;
      if (uVar6 == 0) {
        uVar2 = local_24 & 0xff0002ff | 0x200 | uVar4 | 0x100000;
      }
      local_24 = uVar2;
      local_20 = local_20 & 0xffffff00;
      local_24 = local_24 & 0xffff00;
      _local_28 = CONCAT13(uVar7,CONCAT12(*(undefined1 *)(param_2 + 0x1a),0x103));
      MakeOutgoingFrame(local_50,&local_4c,0x21,auStack_40,0xffffffff);
      MiniportMMRequest(param_1,0,local_50,local_4c);
      os_free_mem(param_1,local_50);
      if (2 < RTDebugLevel) {
        printk("%s(%d): TID(%d), BufSize(%d) <== \n","PeerAddBAReqAction",
               *(undefined1 *)(param_2 + 0x65d),(local_24 << 0x12) >> 0x1c,(local_24 << 8) >> 0x16);
      }
    }
    else if (2 < RTDebugLevel) {
      printk("ACTION - PeerBAAction() allocate memory failed \n");
    }
  }
  return;
}