void QBSS_LoadUpdate(int param_1,uint param_2)

{
  ushort uVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  byte bVar5;
  byte bVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  int *piVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  undefined2 local_50 [2];
  undefined4 local_4c;
  undefined4 local_48;
  undefined1 auStack_44 [28];
  
  uVar12 = (uint)*(ushort *)(param_1 + 0x169ea);
  if (*(char *)(param_1 + 0x76b44) == '\0') {
    return;
  }
  if (((param_2 != 0) && (uVar8 = *(uint *)(param_1 + 0x76b48), uVar8 != 0)) && (uVar8 < param_2)) {
    uVar12 = ((param_2 - uVar8) * 1000) / 0xfa;
    if (uVar12 != *(uint *)(param_1 + 0x76c10)) {
      *(uint *)(param_1 + 0x76c14) = (uVar12 * *(byte *)(param_1 + 0x76c01)) / 100 << 10;
    }
    *(uint *)(param_1 + 0x76c10) = uVar12;
  }
  *(uint *)(param_1 + 0x76b48) = param_2;
  bVar2 = false;
  if ((*(uint *)(param_1 + 0x16b18) & 0x300) != 0) {
    cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if ((*(uint *)(param_1 + 0x16b18) & 0x400) == 0) goto LAB_00081f64;
    uVar8 = 0;
    if (cVar4 == '\0') {
      uVar8 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1138);
    }
    uVar14 = ((uVar8 >> 10) * 0x14) / uVar12;
    cVar4 = *(char *)(param_1 + 0x76c00)   //possible issue identified - semgrep
    *(uint *)(param_1 + 0x76b5c) = uVar8;
    uVar9 = 0x13;
    if (uVar14 < 0x14) {
      uVar9 = uVar14;
    }
    piVar10 = (int *)(param_1 + (uVar9 + 0x1daec) * 4);
    *piVar10 = *piVar10 + 1;
    if (cVar4 == '\0') {
      bVar2 = false;
      if (*(char *)(param_1 + 0x76c01) != '\0') {
        if (*(uint *)(param_1 + 0x76c14) == 0) {
          cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          goto LAB_00081f64;
        }
        bVar2 = true;
        if (uVar8 < *(uint *)(param_1 + 0x76c14)) goto LAB_00081f5c;
      }
    }
    else {
LAB_00081f5c:
      bVar2 = false;
    }
  }
  cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00081f64:
  uVar8 = 0;
  if (cVar4 == '\0') {
    uVar8 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1134);
  }
  uVar12 = ((uVar8 >> 10) * 0x14) / uVar12;
  cVar4 = *(char *)(param_1 + 0x76c00)   //possible issue identified - semgrep
  *(uint *)(param_1 + 0x76b58) = uVar8;
  uVar9 = 0x13;
  if (uVar12 < 0x14) {
    uVar9 = uVar12;
  }
  piVar10 = (int *)(param_1 + (uVar9 + 0x1dad8) * 4);
  *piVar10 = *piVar10 + 1;
  if (((cVar4 == '\0') && (*(char *)(param_1 + 0x76c01) != '\0')) &&
     ((*(uint *)(param_1 + 0x76c14) != 0 && (*(uint *)(param_1 + 0x76c14) <= uVar8)))) {
    bVar2 = true;
  }
  iVar11 = *(int *)(RTMPDeletePMKIDCache + param_1);
  bVar5 = *(char *)(param_1 + 0x76b54) + 1;
  bVar6 = *(byte *)(param_1 + 0x76b55);
  *(uint *)(RTMPDeletePMKIDCache + param_1) = uVar8 + iVar11;
  *(byte *)(param_1 + 0x76b54) = bVar5;
  if ((uint)bVar6 <= (uint)bVar5) {
    uVar1 = *(ushort *)(param_1 + 0x169ea);
    *(undefined4 *)(RTMPDeletePMKIDCache + param_1) = 0;
    *(undefined1 *)(param_1 + 0x76b54) = 0;
    *(char *)(param_1 + 0x76b4c) =
         (char)(((uVar8 + iVar11) * 0xff) / ((uint)uVar1 * (uint)bVar6 * 0x400));
  }
  if ((*(char *)(param_1 + 0x76c00) == '\0') && (*(char *)(param_1 + 0x76c01) != '\0')) {
    if (bVar2) {
      bVar3 = false;
      if ((*(char *)(param_1 + 0x76c04) == '\0') &&
         (bVar6 = *(char *)(param_1 + 0x76c03) + 1, *(byte *)(param_1 + 0x76c03) = bVar6,
         *(byte *)(param_1 + 0x76c02) <= bVar6)) {
        *(bool *)(param_1 + 0x76c04) = bVar2;
        bVar3 = true;
      }
    }
    else {
      *(undefined1 *)(param_1 + 0x76c03) = 0;
      bVar3 = false;
    }
    cVar4 = *(char *)(param_1 + 0x76c04)   //possible issue identified - semgrep
    if ((cVar4 != '\0') && (*(char *)(param_1 + 0x76c04) = cVar4 + '\x01', 99 < (byte)(cVar4 + 1U)))
    {
      *(undefined1 *)(param_1 + 0x76c03) = 0;
      *(undefined1 *)(param_1 + 0x76c04) = 0;
    }
    if (bVar3) {
      *(bool *)(param_1 + 0x76c00) = bVar3;
      *(int *)(param_1 + 0x76c08) = *(int *)(param_1 + 0x76c08) + 1;
      if (((*(uint *)(param_1 + 0x16b18) & 0x300) == 0) ||
         ((*(uint *)(param_1 + 0x16b18) & 0x400) == 0)) {
        if (2 < RTDebugLevel) {
          printk("qbss> Alarm! Switch channel...\n");
        }
        RTEnqueueInternalCmd(param_1,0xd730101,0,0);
      }
      else {
        if (2 < RTDebugLevel) {
          printk("qbss> Alarm! Change to 20 bw...\n");
        }
        piVar10 = (int *)(param_1 + 0x5d958);
        iVar11 = 1;
        do {
          if (((*piVar10 == 1) && (piVar10[0x9d] == 2)) && ((char)piVar10[0x11d] != '\0')) {
            iVar13 = param_1 + iVar11 * 0xa20 + 0x5d190;
            RtmpOsSendWirelessEvent(param_1,0x203,iVar13,0,0,RtmpDrvSendWirelessEvent);
            local_4c = 0;
            local_48 = 0;
            iVar7 = os_alloc_mem(param_1,&local_4c,0x640);
            if (iVar7 == 0) {
              local_50[0] = 3;
              MgtMacHeaderInit(param_1,auStack_44,0xc,0,iVar13,
                               (uint)*(byte *)((int)piVar10 + 0x31) * 0x1140 + param_1 + 0x51ac);
              MakeOutgoingFrame(local_4c,&local_48,0x18,auStack_44,2,local_50,0xffffffff);
              MiniportMMRequest(param_1,0,local_4c,local_48);
              os_free_mem(param_1,local_4c);
              if (2 < RTDebugLevel) {
                printk("qbss> Alarm! Deauth the station %02x:%02x:%02x:%02x:%02x:%02x\n",
                       (char)piVar10[0x96],*(undefined1 *)((int)piVar10 + 0x259),
                       *(undefined1 *)((int)piVar10 + 0x25a),*(undefined1 *)((int)piVar10 + 0x25b),
                       (char)piVar10[0x97],*(undefined1 *)((int)piVar10 + 0x25d));
              }
              MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar10 + 0x27e),iVar13);
            }
            else if (2 < RTDebugLevel) {
              printk(" MlmeAllocateMemory fail  ..\n");
            }
          }
          iVar11 = iVar11 + 1;
          piVar10 = piVar10 + 0x288;
        } while (iVar11 != 0x20);
        *(uint *)(param_1 + 0x16b18) = *(uint *)(param_1 + 0x16b18) & 0xfffff8ff;
        *(uint *)(param_1 + 0x16a44) = *(uint *)(param_1 + 0x16a44) & 0xfffff7ff;
        *(undefined1 *)(param_1 + 0x76c0c) = 1;
        *(undefined1 *)(param_1 + 0x76c00) = 0;
      }
    }
  }
  else {
    *(undefined1 *)(param_1 + 0x76c0c) = 0;
    *(undefined1 *)(param_1 + 0x76c03) = 0;
    *(undefined1 *)(param_1 + 0x76c04) = 0;
  }
  return;
}