/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void UAPSD_TriggerFrameHandle(int param_1,int param_2,uint param_3)

{
  byte bVar1;
  byte bVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  char cVar6;
  int *piVar7;
  int iVar8;
  undefined4 *puVar9;
  bool bVar10;
  byte *pbVar11;
  uint uVar12;
  byte local_40 [4];
  int aiStack_3c [3];
  int local_30;
  uint auStack_2c [5];
  
  param_3 = param_3 & 0xff;
  memcpy(aiStack_3c,C_495_38751,0x10)   //possible issue identified - semgrep
  memcpy(auStack_2c,C_496_38752,0x10)   //possible issue identified - semgrep
  local_40[0] = 0;
  local_40[1] = 1;
  local_40[2] = 2;
  local_40[3] = 3;
  local_bh_disable();
  if (*(char *)(param_2 + 0x2eb) == '\0') {
    bVar1 = *(byte *)(param_2 + 0x2ac);
  }
  else {
    *(undefined4 *)(param_2 + 0x3dc) = 0;
    if ((uint)(_jiffies - *(int *)(param_2 + 0x2ec)) < 0x19) goto LAB_0007f1ac;
    local_bh_enable();
    UAPSD_SP_Close(param_1,param_2);
    local_bh_disable();
    bVar1 = *(byte *)(param_2 + 0x2ac);
  }
  if (bVar1 < 4) {
    uVar4 = *(uint *)(param_2 + 0x418);
  }
  else {
    if (RTDebugLevel < 3) {
      *(undefined1 *)(param_2 + 0x2ac) = 0;
    }
    else {
      printk("uapsd> MaxSPLength >= 4 (%d)!\n");
      *(undefined1 *)(param_2 + 0x2ac) = 0;
    }
    uVar4 = *(uint *)(param_2 + 0x418);
  }
  *(int *)(param_2 + 0x2ec) = _jiffies;
  if (((uVar4 & 0xc07f) == 0) || ((uVar4 & 0xc07f) == 0x4000)) {
    *(undefined1 *)(param_2 + 0x2f0) = 1;
  }
  else {
    *(undefined1 *)(param_2 + 0x2f0) = 0;
  }
  if ((*(char *)(param_2 + 0x2f0) != '\0') && (*(char *)(param_2 + 0x2ad) == '\0')) {
    *(undefined1 *)(param_2 + 0x2f0) = 0;
  }
  if (7 < param_3) {
    param_3 = 1;
  }
  if (*(char *)(param_2 + (uint)*(byte *)((int)&MapUserPriorityToAccessCategory + param_3) + 0x2a4)
      == '\0') {
LAB_0007f1ac:
    local_bh_enable();
    return;
  }
  uVar12 = auStack_2c[*(byte *)(param_2 + 0x2ac)];
  pbVar11 = (byte *)&local_30;
  bVar3 = false;
  puVar9 = (undefined4 *)0x0;
  piVar7 = (int *)0x0;
  uVar4 = 0;
  while( true ) {
    if (*(char *)(param_2 + local_30 + 0x2a8) != '\0') {
      iVar8 = local_30 * 0xc + param_2;
      if (*(int *)(iVar8 + 0x2b0) != 0) {
        bVar1 = local_40[local_30];
        while (*(int *)(iVar8 + 0x2b0) != 0) {
          if ((uVar12 != 0) && (uVar12 <= uVar4)) {
            bVar10 = false;
            goto LAB_0007f2f4;
          }
          if (piVar7 == (int *)0x0) {
            piVar7 = *(int **)(iVar8 + 0x2b0);
          }
          else {
            *piVar7 = 0;
            if ((undefined4 *)puVar9[1] == (undefined4 *)0x0) {
              *puVar9 = piVar7;
            }
            else {
              *(undefined4 *)puVar9[1] = piVar7;
            }
            puVar9[1] = piVar7;
            puVar9[2] = puVar9[2] + 1;
            piVar7 = *(int **)(iVar8 + 0x2b0);
          }
          bVar2 = bRam00000032;
          if (piVar7 != (int *)0x0) {
            iVar5 = *piVar7;
            *piVar7 = 0;
            *(int *)(iVar8 + 0x2b0) = iVar5;
            if (iVar5 == 0) {
              *(undefined4 *)(iVar8 + 0x2b4) = 0;
            }
            *(int *)(iVar8 + 0x2b8) = *(int *)(iVar8 + 0x2b8) + -1;
            bVar2 = *(byte *)((int)piVar7 + 0x32);
          }
          if ((int)((uint)bVar2 << 0x1c) < 0) {
            bVar3 = true;
          }
          if (piVar7 != (int *)0x0) {
            *(undefined1 *)((int)piVar7 + 0x29) = 1;
            *(byte *)((int)piVar7 + 0x2b) = bVar1 | 0x80;
          }
          uVar4 = uVar4 + 1;
          puVar9 = (undefined4 *)(param_1 + (uint)bVar1 * 0xc + 0x2a30);
        }
      }
    }
    pbVar11 = pbVar11 + -4;
    if (pbVar11 == local_40) break;
    local_30 = *(int *)pbVar11;
  }
  bVar10 = true;
LAB_0007f2f4:
  if (bVar3) {
    *(undefined1 *)(param_2 + 0x2f0) = 1;
  }
  if ((uVar4 != 0) && (bVar10)) {
    *(undefined1 *)((int)piVar7 + 0x29) = 0;
  }
  *(undefined1 *)(param_2 + 0x2eb) = 1;
  *(undefined1 *)(param_2 + 0x2ea) = 0;
  if (uVar4 < 2) {
    *(undefined4 *)(param_2 + 0x2e4) = 0;
    *(undefined2 *)(param_2 + 0x2e8) = 0;
    bVar3 = true;
    if (uVar4 == 0) goto LAB_0007f374;
    *(undefined1 *)(piVar7 + 0xb) = 1;
    *piVar7 = 0;
    if ((undefined4 *)puVar9[1] == (undefined4 *)0x0) {
      *puVar9 = piVar7;
    }
    else {
      *(undefined4 *)puVar9[1] = piVar7;
    }
    puVar9[1] = piVar7;
    puVar9[2] = puVar9[2] + 1;
  }
  else {
    *(undefined1 *)(piVar7 + 0xb) = 1;
    *(int **)(param_2 + 0x2e4) = piVar7;
    *(short *)(param_2 + 0x2e8) = (short)uVar4 + -1;
  }
  bVar3 = false;
LAB_0007f374:
  if (*(char *)(param_2 + 0x2f0) == '\0') {
    if (*(char *)(param_2 + 0x2f1) == '\0') {
      cVar6 = *(char *)(param_2 + 0x2ad)   //possible issue identified - semgrep
    }
    else {
      *(short *)(param_2 + 0x2e8) = *(short *)(param_2 + 0x2e8) + 1;
      cVar6 = *(char *)(param_2 + 0x2ad)   //possible issue identified - semgrep
    }
  }
  else {
    cVar6 = *(char *)(param_2 + 0x2ad)   //possible issue identified - semgrep
  }
  uVar4 = (uint)*(ushort *)(param_2 + 0x27e);
  if (((cVar6 == '\x01') && (bVar10)) && (uVar4 - 1 < 0x1f)) {
    iVar8 = (uint)*(byte *)(param_2 + 0x31) * 0x1140 + param_1 + ((uVar4 << 0x15) >> 0x18);
    *(byte *)(iVar8 + 0x5250) = ~(&NUM_BIT8)[uVar4 & 7] & *(byte *)(iVar8 + 0x5250);
  }
  *(undefined2 *)(param_2 + 0x2e0) = 0;
  local_bh_enable();
  if (bVar3) {
    ApEnqueueNullFrame(param_1,param_2 + 600,*(undefined1 *)(param_2 + 0x34d),uVar4 & 0xff,
                       *(undefined1 *)(param_2 + 0x31),1,1,param_3);
  }
  RTMPDeQueuePacket(param_1,0,5,0x40);
  return;
}