void APQuickResponeForRateUpExec(undefined4 param_1,int param_2)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  byte *pbVar11;
  int iVar12;
  uint uVar13;
  byte local_38;
  undefined1 auStack_37 [3];
  int local_34;
  uint local_30;
  int local_2c;
  
  *(undefined1 *)(param_2 + 0x168bc) = 0;
  pbVar11 = (byte *)(param_2 + 0x5dca6);
  local_38 = 0;
  iVar12 = 1;
  uVar13 = 0;
  local_30 = 0;
  do {
    if ((*(int *)(pbVar11 + -0x34e) != 0) &&
       ((*(int *)(pbVar11 + -0x34e) != 1 || (*(int *)(pbVar11 + -0xda) == 2)))) {
      local_2c = param_2 + iVar12 * 0xa20 + 0x5cf38;
      MlmeSelectTxRateTable(param_2,local_2c,&local_34,&local_38,auStack_37);
      uVar4 = *(uint *)(param_2 + 0x4bf4) & 0xf;
      if (uVar4 == 3) {
        iVar5 = (int)(char)(((int)(char)pbVar11[0x144] + (int)(char)pbVar11[0x143] +
                            (int)(char)pbVar11[0x145]) / 3);
      }
      else {
        iVar5 = (int)(char)pbVar11[0x143];
        if (uVar4 == 2) {
          iVar5 = (char)pbVar11[0x144] + iVar5 >> 1;
        }
      }
      uVar4 = (uint)*pbVar11;
      if (*(short *)(param_2 + 0x71338) == 1) {
        if (*(char *)(param_2 + 0xec) == '\0') {
          uVar8 = *(uint *)(*(int *)(param_2 + 0xdc) + 0x170c);
          uVar3 = *(uint *)(*(int *)(param_2 + 0xdc) + 0x1710);
          local_30 = uVar3 & 0xffff;
        }
        else {
          uVar8 = 0;
          uVar3 = 0;
          local_30 = 0;
        }
        uVar3 = uVar3 >> 0x10;
        uVar10 = uVar8 & 0xffff;
        iVar7 = local_30 + *(int *)(param_2 + 0x76708);
        iVar6 = uVar3 + *(int *)(param_2 + 0x7670c);
        iVar5 = uVar10 + *(int *)(param_2 + 0x76704);
        uVar9 = local_30 + uVar3 + uVar10;
        *(uint *)(param_2 + 0x766f4) = (uVar8 >> 0x10) + *(int *)(param_2 + 0x766f4);
        *(uint *)(param_2 + 0x76690) = local_30 + *(int *)(param_2 + 0x76690);
        *(uint *)(param_2 + 0x766a8) = uVar3 + *(int *)(param_2 + 0x766a8);
        *(uint *)(param_2 + 0x766a0) = uVar10 + *(int *)(param_2 + 0x766a0);
        uVar8 = iVar6 + iVar7 + iVar5;
        *(int *)(param_2 + 0x7670c) = iVar6;
        *(int *)(param_2 + 0x76708) = iVar7;
        *(int *)(param_2 + 0x76704) = iVar5;
        if (uVar9 != 0) {
          uVar13 = ((uVar10 + uVar3) * 100) / uVar9;
        }
        iVar5 = (int)(char)pbVar11[0x143];
        if (1 < (uint)(*(int *)(param_2 + 0x4bf4) << 0x18) >> 0x1c) {
          iVar5 = (char)pbVar11[0x144] + iVar5 >> 1;
        }
      }
      else {
        uVar3 = *(int *)(pbVar11 + 0x86) + *(int *)(pbVar11 + 0x82) + *(int *)(pbVar11 + 0x8a);
        uVar8 = 0;
        if (uVar3 != 0) {
          uVar13 = (uint)((*(int *)(pbVar11 + 0x8a) + *(int *)(pbVar11 + 0x86)) * 100) / uVar3;
          uVar8 = uVar3;
        }
      }
      if (uVar4 == 0) {
        uVar9 = 1;
        uVar10 = 0;
      }
      else {
        uVar3 = local_38 - 1;
        if ((int)uVar4 < (int)uVar3) {
          uVar9 = uVar4 + 1 & 0xff;
          uVar10 = uVar4 - 1 & 0xff;
        }
        else {
          uVar9 = uVar4;
          uVar10 = uVar4;
          if (uVar4 == uVar3) {
            uVar10 = local_38 - 2 & 0xff;
          }
        }
      }
      bVar1 = *(byte *)((uVar4 + 1) * 5 + local_34 + 4);
      uVar3 = (uint)bVar1;
      if (-0x41 < iVar5) {
        uVar3 = uVar3 + (bVar1 >> 1) & 0xff;
      }
      if (uVar8 < 0x10) {
        memset((void *)(param_2 + iVar12 * 0xa20 + 0x5d2c6),0,0x40)   //possible issue identified - semgrep
        memset((void *)(param_2 + iVar12 * 0xa20 + 0x5d32c),0,0x20)   //possible issue identified - semgrep
        if ((pbVar11[0x9f] == 1) && (uVar4 != uVar10)) {
          *(undefined2 *)(param_2 + (iVar12 * 0x510 + uVar4 + 0x2e960) * 2 + 6) = 8;
          *pbVar11 = (byte)uVar10;
        }
        else if ((pbVar11[0x9f] == 2) && (uVar4 != uVar9)) {
          *pbVar11 = (byte)uVar9;
        }
      }
      else {
        iVar5 = 4;
        if (pbVar11[0xa0] == 0) {
          iVar5 = 5;
        }
        if (uVar3 <= uVar13) {
          *(undefined2 *)(param_2 + (iVar12 * 0x510 + uVar4 + 0x2e960) * 2 + 6) = 8;
        }
        *(char *)(iVar12 * 0xa20 + param_2 + uVar4 + 0x5d32c) = (char)uVar13;
        uVar8 = iVar5 * local_30;
        if (*(short *)(param_2 + 0x71338) == 1) {
          bVar1 = pbVar11[0x9f];
        }
        else {
          uVar8 = iVar5 * *(uint *)(pbVar11 + 0x82) + (*(uint *)(pbVar11 + 0x82) >> 1);
          bVar1 = pbVar11[0x9f];
        }
        if ((bVar1 == 1) && (uVar4 != uVar10)) {
          if (uVar13 < uVar3) {
            if (RTDebugLevel < 4) {
              uVar8 = (uint)*pbVar11;
            }
            else {
              printk("QuickDRS: (Up) keep rate-up (L:%ld, C:%ld)\n",*(undefined4 *)(pbVar11 + 0xa2))
              ;
              uVar8 = (uint)*pbVar11;
            }
          }
          else {
            *(undefined2 *)(param_2 + (iVar12 * 0x510 + uVar4 + 0x2e960) * 2 + 6) = 8;
            *pbVar11 = (byte)uVar10;
LAB_00072a3c:
            uVar8 = (uint)*pbVar11;
          }
        }
        else {
          if (bVar1 == 2) {
            if (uVar4 != uVar9) {
              if (uVar13 < 0x32) {
                iVar5 = *(int *)(pbVar11 + 0xa2);
              }
              else {
                if (uVar3 <= uVar13) {
                  uVar8 = (uint)*pbVar11;
                  goto LAB_00072a40;
                }
                iVar5 = *(int *)(pbVar11 + 0xa2);
              }
              if (uVar8 <= iVar5 + 2U) {
                *pbVar11 = (byte)uVar9;
              }
            }
            goto LAB_00072a3c;
          }
          uVar8 = (uint)*pbVar11;
        }
LAB_00072a40:
        if (uVar4 < uVar8) {
          pbVar11[0x96] = 0;
          memset((void *)(param_2 + iVar12 * 0xa20 + 0x5d2c6),0,0x40)   //possible issue identified - semgrep
          memset((void *)(param_2 + iVar12 * 0xa20 + 0x5d32c),0,0x20)   //possible issue identified - semgrep
          bVar2 = true;
        }
        else {
          bVar2 = false;
          if (uVar8 < uVar4) {
            *(undefined2 *)(param_2 + (iVar12 * 0x510 + uVar8 + 0x2e960) * 2 + 6) = 0;
            *(undefined1 *)(iVar12 * 0xa20 + param_2 + uVar8 + 0x5d32c) = 0;
            pbVar11[0x96] = 0;
            bVar2 = true;
          }
        }
        if ((bVar2) && ((*pbVar11 + 1) * 5 + local_34 != 0)) {
          APMlmeSetTxRate(param_2,local_2c);
        }
      }
    }
    iVar12 = iVar12 + 1;
    pbVar11 = pbVar11 + 0xa20;
    if (iVar12 == 0x20) {
      return;
    }
  } while( true );
}