void BAOriSessionSetupTimeout(undefined4 param_1,byte *param_2)

{
  byte bVar1;
  code *pcVar2;
  undefined2 uVar3;
  int iVar4;
  byte *pbVar5;
  undefined1 local_28;
  undefined1 auStack_27 [6];
  byte local_21;
  undefined2 local_20;
  byte local_1e;
  byte local_1d;
  
  if ((param_2 != (byte *)0x0) && (pbVar5 = *(byte **)(param_2 + 0x34), pbVar5[0x76a0c] == 0x80)) {
    if ((*(int *)(param_2 + 8) == 2) && (param_2[3] < 8)) {
      iVar4 = (uint)*param_2 * 0xa20;
      memset(&local_28,0,0xe)   //possible issue identified - semgrep
      memcpy(auStack_27,pbVar5 + iVar4 + 0x5d190,6)   //possible issue identified - semgrep
      local_1e = param_2[1];
      local_28 = (undefined1)*(undefined2 *)(pbVar5 + iVar4 + 0x5d1b6);
      local_21 = pbVar5[0x16a64];
      local_1d = param_2[3];
      local_20 = 0;
      MlmeEnqueue(pbVar5,9,0x12,0xe,&local_28,0);
      MlmeHandler(pbVar5);
      if (RTDebugLevel < 3) {
        bVar1 = param_2[3];
      }
      else {
        printk("BA Ori Session Timeout(%d) : Send ADD BA again\n",param_2[3]);
        bVar1 = param_2[3];
      }
      pbVar5 = param_2 + 0xc;
      param_2[3] = bVar1 + 1;
      uVar3 = 2000;
      pcVar2 = RTMPSetTimer;
    }
    else {
      uVar3 = *(undefined2 *)
               (pbVar5 + ((uint)*param_2 * 0x510 + (uint)param_2[1] + 0x2e9b4) * 2 + 6);
      pcVar2 = BATableFreeOriEntry;
    }
    (*pcVar2)(pbVar5,uVar3);
  }
  return;
}