void NICUpdateFifoStaCounters(int param_1)

{
  uint uVar1;
  char cVar2;
  undefined1 uVar3;
  short sVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  undefined4 local_38;
  
  if (*(char *)(param_1 + 0x76a0c) == -0x80) {
    iVar11 = 1;
    cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      if (cVar2 == '\0') {
        local_38 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1718);
      }
      else {
        local_38 = 0;
      }
      if ((local_38 & 1) == 0) break;
      uVar9 = local_38 >> 8 & 0xff;
      if (((local_38 & 0x80) != 0) && (uVar9 < 0x20)) {
        iVar6 = param_1 + uVar9 * 0xa20;
        *(int *)(iVar6 + 0x5d274) = *(int *)(iVar6 + 0x5d274) + 1;
        iVar10 = param_1 + uVar9 * 0xa20 + 0x5cf38;
        uVar1 = (local_38 << 0x1b) >> 0x1c;
        UAPSD_SP_AUE_Handle(param_1,iVar10,(local_38 << 0x1a) >> 0x1f);
        if ((local_38 & 0x20) == 0) {
          iVar5 = *(int *)(iVar6 + 0x5d270) + 1;
          *(int *)(iVar6 + 0x5d310) = *(int *)(iVar6 + 0x5d310) + 1;
          *(int *)(iVar6 + 0x5d270) = iVar5;
          if (iVar5 != 0) {
            if (2 < RTDebugLevel) {
              printk(&_LC22)   //possible issue identified - semgrep
            }
            iVar6 = uVar9 * 0xa20 + param_1;
            *(undefined2 *)(iVar6 + 0x5d22c) = 0x40;
            *(int *)(iVar6 + 0x5d314) = *(int *)(iVar6 + 0x5d314) + 1;
            if (*(char *)(iVar6 + 0x5d1a8) == '\0') {
              uVar3 = *(undefined1 *)(iVar6 + 0x5d1b6);
              iVar5 = 0;
              while( true ) {
                BAOriSessionTearDown(param_1,uVar3,iVar5,0,0);
                if (iVar5 + 1 == 8) break;
                uVar3 = *(undefined1 *)(iVar6 + 0x5d1b6);
                iVar5 = iVar5 + 1;
              }
            }
          }
          iVar6 = uVar9 * 0xa20 + param_1;
          if (*(uint *)(iVar6 + 0x5d314) < *(uint *)(param_1 + 0x168c4)) goto LAB_00029320;
          uVar8 = local_38._2_1_ & 0x7f;
          if ((param_1 != 0) && (iVar10 != 0)) {
            iVar5 = 3;
            iVar10 = 0x1824;
            do {
              sVar4 = 0;
              piVar7 = (int *)(iVar10 + param_1 + 0x184);
              do {
                sVar4 = sVar4 + 1   //possible issue identified - semgrep
                if (((*(byte *)(*piVar7 + 7) & 0x80) == 0) &&
                   (iVar10 = piVar7[5],
                   (ushort)*(byte *)(iVar10 + 5) == *(ushort *)(iVar6 + 0x5d1b6))) {
                  *(byte *)(iVar10 + 4) = *(byte *)(iVar10 + 4) & 0xfe;
                }
                piVar7 = piVar7 + 8;
              } while (sVar4 != 0x40);
              iVar5 = iVar5 + -1;
              iVar10 = iVar5 * 0x80c;
            } while (iVar5 != -1);
            goto LAB_00029320;
          }
        }
        else {
          if ((((*(char *)(iVar6 + 0x5d1a8) != '\x01') &&
               (sVar4 = *(short *)(iVar6 + 0x5d22c), sVar4 != 0)) &&   //possible issue identified - semgrep
              (*(short *)(iVar6 + 0x5d22c) = sVar4 + -1, sVar4 == 1)) && (2 < RTDebugLevel)) {
            printk(&_LC23)   //possible issue identified - semgrep
          }
          iVar6 = uVar9 * 0xa20 + param_1;
          *(undefined4 *)(iVar6 + 0x5d314) = 0;
          *(int *)(iVar6 + 0x5d308) = *(int *)(iVar6 + 0x5d308) + 1;
          *(undefined4 *)(iVar6 + 0x5d270) = 0;
          *(undefined4 *)(iVar6 + 0x5d1bc) = 0;
LAB_00029320:
          uVar8 = local_38._2_1_ & 0x7f;
        }
        iVar6 = uVar1 - uVar8;
        if ((local_38 & 0x20) == 0) {
          iVar10 = uVar9 * 0x288 + uVar1;
          iVar5 = 0x1751a;
LAB_00029398:
          iVar10 = iVar10 + iVar5;
        }
        else {
          iVar10 = uVar9 * 0x288 + uVar1;
          iVar5 = param_1 + (iVar10 + 0x174fa) * 4;
          *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
          if (uVar1 != uVar8) {
            iVar10 = uVar1 * 0x10 + uVar9 * 0x288 + uVar8;
            iVar5 = 0x1752a;
            goto LAB_00029398;
          }
          iVar10 = iVar10 + 0x1750a;
        }
        iVar10 = param_1 + iVar10 * 4;
        *(int *)(iVar10 + 4) = *(int *)(iVar10 + 4) + 1;
        if (0 < iVar6) {
          if ((0xb < uVar1) && (uVar8 < 8)) {
            iVar6 = iVar6 + -4;
          }
          iVar10 = uVar9 * 0xa20 + param_1;
          *(int *)(iVar10 + 0x5d30c) = iVar6 + *(int *)(iVar10 + 0x5d30c);
        }
      }
      iVar11 = iVar11 + 1;
      if (iVar11 == 0x81) {
        return;
      }
      cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
  }
  return;
}