void APStartUp(int param_1)

{
  undefined1 uVar1;
  bool bVar2;
  char cVar3;
  byte bVar4;
  undefined1 uVar5;
  code *pcVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  void *__src;
  uint uVar9;
  ushort uVar10;
  int iVar11;
  ushort uVar12;
  int iVar13;
  undefined4 uVar14;
  uint uVar15;
  uint uVar16;
  undefined2 *puVar17;
  undefined1 *puVar18;
  void *__dest;
  int iVar19;
  int iVar20;
  undefined4 uVar21;
  int iVar22;
  ushort uVar23;
  
  cVar3 = *(char *)(param_1 + 0x16983)   //possible issue identified - semgrep
  if (2 < RTDebugLevel) {
    printk("===> APStartUp\n");
  }
  AsicDisableSync(param_1);
  uVar23 = 0;
  __src = (void *)(param_1 + 0x16973);
  if (*(int *)(param_1 + 0x16a70) != 0) {
    uVar23 = 0x20;
  }
  bVar2 = false;
  for (uVar15 = 0; uVar15 < *(byte *)(param_1 + 0x51aa); uVar15 = uVar15 + 1 & 0xff) {
    iVar11 = param_1 + uVar15 * 0x1140;
    if (0x1f < (byte)(*(char *)(iVar11 + 0x51b2) - 1U)) {
      memmove((void *)(iVar11 + 0x51b3),"HT_AP",5)   //possible issue identified - semgrep
      *(char *)(iVar11 + 0x51b8) = (char)uVar15 + '0';
      *(undefined1 *)(iVar11 + 0x51b2) = 6;
    }
    __dest = (void *)(param_1 + uVar15 * 0x1140 + 0x51ac);
    iVar11 = param_1 + uVar15 * 0x1140;
    memcpy(__dest,__src,6)   //possible issue identified - semgrep
    *(char *)(iVar11 + 0x51b1) = (char)uVar15 + *(char *)(iVar11 + 0x51b1);
    if (*(int *)(iVar11 + 0x51d8) != 0) {
      memmove(*(void **)(*(int *)(iVar11 + 0x51d8) + 0x140),__dest,6)   //possible issue identified - semgrep
    }
    iVar11 = uVar15 * 0x1140 + param_1;
    uVar12 = 0x11;
    if (*(int *)(iVar11 + 0x51e0) == 1) {
      uVar12 = 1;
    }
    uVar10 = 0x400;
    if (*(char *)(param_1 + 0x16a7c) == '\0') {
      uVar10 = 0;
    }
    uVar10 = uVar10 | uVar23 | uVar12;
    *(ushort *)(iVar11 + 0x51d4) = uVar10;
    if (*(char *)(iVar11 + 0x5b30) != '\0') {
      bVar2 = true;
    }
    if (*(char *)(param_1 + 0x16a2c) == '\x01') {
      *(ushort *)(iVar11 + 0x51d4) = uVar10 | 0x800;
    }
    iVar11 = uVar15 * 0x1140 + param_1;
    if (*(int *)(iVar11 + 0x51e0) == 8) {
      if ((*(uint *)(iVar11 + 0x51dc) & 0xff) < 10) {
        uVar9 = 1 << (*(uint *)(iVar11 + 0x51dc) & 0x1f);
        if ((uVar9 & 0x300) == 0) {
          if ((uVar9 & 0xc0) == 0) {
            if ((uVar9 & 0x18) != 0) {
              *(undefined4 *)(iVar11 + 0x51e8) = 0xc;
            }
          }
          else {
            *(undefined4 *)(iVar11 + 0x51e8) = 3;
          }
        }
        else {
          iVar11 = *(int *)(iVar11 + 0x51e8);
          if (((iVar11 == 0) || (iVar11 == 0xc)) || (iVar11 == 3)) {
            *(undefined4 *)(uVar15 * 0x1140 + param_1 + 0x51e8) = 0xf;
          }
        }
      }
    }
    else {
      *(undefined4 *)(iVar11 + 0x51e8) = 0;
    }
    iVar11 = uVar15 * 0x1140 + param_1;
    RTMPMakeRSNIE(param_1,*(undefined4 *)(iVar11 + 0x51dc),*(undefined4 *)(iVar11 + 0x51e0),uVar15);
  }
  if (*(char *)(param_1 + 0x16982) != cVar3) {
    RTMPSetPhyMode(param_1,cVar3);
  }
  SetCommonHT(param_1);
  memcpy((void *)(param_1 + 0x169e4),__src,6)   //possible issue identified - semgrep
  uVar15 = Status;
  if (*(byte *)(param_1 + 0x16982) < 5) {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_0006abd4:
    uVar9 = 0;
    if (cVar3 == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar16 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar16 = uVar15 & 1;
        }
        iVar11 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar15 = 0;
          if (cVar3 == '\0') {
            uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar15 & 0x20000) == 0) {
            if (cVar3 == '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0100;
            }
            iVar13 = 1;
            while( true ) {
              uVar15 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
              }
              if (((uVar15 & 0x20000) == 0) || (iVar13 == 100)) break;
              iVar13 = iVar13 + 1;
            }
            if ((uVar15 & 0x2ff00) == 0x100) {
              uVar9 = uVar15 & 0xff;
              goto LAB_0006acb8;
            }
          }
          iVar11 = iVar11 + 1;
          if (iVar11 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar9 = 0;
LAB_0006acb8:
        if ((int)(uVar15 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",0,1);
          uVar9 = (uint)*(byte *)(param_1 + 0x4aca);
LAB_0006ae4c:
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
      else {
        uVar16 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar16 = uVar15 & 1;
        }
        iVar11 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar15 = 0;
          if (cVar3 == '\0') {
            uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar15 & 0x20000) == 0) {
            if (cVar3 == '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0100;
            }
            AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
            RTMPusecDelay(1000);
            iVar13 = 1;
            while( true ) {
              uVar15 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
              }
              if (((uVar15 & 0x20000) == 0) || (iVar13 == 100)) break;
              iVar13 = iVar13 + 1;
            }
            if ((uVar15 & 0x2ff00) == 0x100) {
              uVar9 = uVar15 & 0xff;
              goto LAB_0006adf4;
            }
          }
          iVar11 = iVar11 + 1;
          if (iVar11 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar9 = 0;
LAB_0006adf4:
        if ((int)(uVar15 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",1,1);
          uVar9 = (uint)*(byte *)(param_1 + 0x4aca);
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
                 *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
          }
          goto LAB_0006ae4c;
        }
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      if (cVar3 == '\x01') {
        Status = Status & 0xfffffffe;
        if (uVar16 != 0) {
          Status = Status | 1;
        }
        goto LAB_0006ae70;
      }
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    else {
LAB_0006ae70:
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar15 = Status;
    if (cVar3 == '\0') {
      uVar9 = uVar9 & 0xe7;
      if (*(int *)(param_1 + 0x29f8) != 4) {
        uVar16 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar16 = uVar15 & 1;
        }
        iVar11 = 1;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar15 = 0;
          if (cVar3 == '\0') {
            uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar15 & 0x20000) == 0) goto LAB_0006b018;
          iVar13 = iVar11 % 0x14;
          iVar11 = iVar11 + 1;
          if ((iVar13 == 0) && (cVar3 == '\0')) {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar15 & 0xfffdffff;
          }
          printk(&_LC12)   //possible issue identified - semgrep
          if (iVar11 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        goto LAB_0006b0bc;
      }
      uVar16 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar16 = uVar15 & 1;
      }
      iVar11 = 1;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar15 = 0;
        if (cVar3 == '\0') {
          uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar15 & 0x20000) == 0) goto LAB_0006af04;
        iVar11 = iVar11 + 1;
        printk(&_LC12)   //possible issue identified - semgrep
        if (iVar11 == 100) break;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      goto LAB_0006af44;
    }
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if ((*(uint *)(param_1 + 0x4bf4) & 0xf0) != 0x20) goto LAB_0006abd4;
    uVar9 = 0;
    if (cVar3 == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar16 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar16 = uVar15 & 1;
        }
        iVar11 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar15 = 0;
          if (cVar3 == '\0') {
            uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar15 & 0x20000) == 0) {
            if (cVar3 == '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0100;
            }
            iVar13 = 1;
            while( true ) {
              uVar15 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
              }
              if (((uVar15 & 0x20000) == 0) || (iVar13 == 100)) break;
              iVar13 = iVar13 + 1;
            }
            if ((uVar15 & 0x2ff00) == 0x100) {
              uVar9 = uVar15 & 0xff;
              goto LAB_0006a8e8;
            }
          }
          iVar11 = iVar11 + 1;
          if (iVar11 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar9 = 0;
LAB_0006a8e8:
        if ((int)(uVar15 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",0,1);
          uVar9 = (uint)*(byte *)(param_1 + 0x4aca);
LAB_0006aa7c:
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
      else {
        uVar16 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar16 = uVar15 & 1;
        }
        iVar11 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar15 = 0;
          if (cVar3 == '\0') {
            uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar15 & 0x20000) == 0) {
            if (cVar3 == '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0100;
            }
            AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
            RTMPusecDelay(1000);
            iVar13 = 1;
            while( true ) {
              uVar15 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
              }
              if (((uVar15 & 0x20000) == 0) || (iVar13 == 100)) break;
              iVar13 = iVar13 + 1;
            }
            if ((uVar15 & 0x2ff00) == 0x100) {
              uVar9 = uVar15 & 0xff;
              goto LAB_0006aa24;
            }
          }
          iVar11 = iVar11 + 1;
          if (iVar11 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar9 = 0;
LAB_0006aa24:
        if ((int)(uVar15 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",1,1);
          uVar9 = (uint)*(byte *)(param_1 + 0x4aca);
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
                 *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
          }
          goto LAB_0006aa7c;
        }
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      if (cVar3 == '\x01') {
        Status = Status & 0xfffffffe;
        if (uVar16 != 0) {
          Status = Status | 1;
        }
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      else {
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
    }
    uVar15 = Status;
    if (cVar3 == '\0') {
      uVar9 = uVar9 & 0xe7 | 0x10;
      if (*(int *)(param_1 + 0x29f8) != 4) {
        uVar16 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar16 = uVar15 & 1;
        }
        iVar11 = 1;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar15 = 0;
          if (cVar3 == '\0') {
            uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar15 & 0x20000) == 0) goto LAB_0006b018;
          iVar13 = iVar11 % 0x14;
          iVar11 = iVar11 + 1;
          if ((iVar13 == 0) && (cVar3 == '\0')) {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar15 & 0xfffdffff;
          }
          printk(&_LC12)   //possible issue identified - semgrep
          if (iVar11 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        goto LAB_0006b0bc;
      }
      uVar16 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar16 = uVar15 & 1;
      }
      iVar11 = 1;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar15 = 0;
        if (cVar3 == '\0') {
          uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar15 & 0x20000) == 0) goto LAB_0006af04;
        iVar11 = iVar11 + 1;
        printk(&_LC12)   //possible issue identified - semgrep
        if (iVar11 == 100) break;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      goto LAB_0006af44;
    }
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
LAB_0006b12c:
  uVar15 = Status;
  uVar9 = 0;
  if (cVar3 == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar16 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar16 = uVar15 & 1;
      }
      iVar11 = 0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar15 = 0;
        if (cVar3 == '\0') {
          uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar15 & 0x20000) == 0) {
          if (cVar3 == '\0') {
            *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0300;
          }
          iVar13 = 1;
          while( true ) {
            uVar15 = 0;
            if (*(char *)(param_1 + 0xec) == '\0') {
              uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
            }
            if (((uVar15 & 0x20000) == 0) || (iVar13 == 100)) break;
            iVar13 = iVar13 + 1;
          }
          if ((uVar15 & 0x2ff00) == 0x300) {
            uVar9 = uVar15 & 0xff;
            goto LAB_0006b214;
          }
        }
        iVar11 = iVar11 + 1;
        if (iVar11 == 100) break;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      uVar9 = 0;
LAB_0006b214:
      if ((int)(uVar15 << 0xe) < 0) {
        printk("ERROR!!! ");
        printk("BBP(viaMCU=%d) read R%d fail\n",0,3);
        uVar9 = (uint)*(byte *)(param_1 + 0x4acc);
LAB_0006b3ac:
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
    else {
      uVar16 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar16 = uVar15 & 1;
      }
      iVar11 = 0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar15 = 0;
        if (cVar3 == '\0') {
          uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar15 & 0x20000) == 0) {
          if (cVar3 == '\0') {
            *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0300;
          }
          AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
          RTMPusecDelay(1000);
          iVar13 = 1;
          while( true ) {
            uVar15 = 0;
            if (*(char *)(param_1 + 0xec) == '\0') {
              uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
            }
            if (((uVar15 & 0x20000) == 0) || (iVar13 == 100)) break;
            iVar13 = iVar13 + 1;
          }
          if ((uVar15 & 0x2ff00) == 0x300) {
            uVar9 = uVar15 & 0xff;
            goto LAB_0006b354;
          }
        }
        iVar11 = iVar11 + 1;
        if (iVar11 == 100) break;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      uVar9 = 0;
LAB_0006b354:
      if ((int)(uVar15 << 0xe) < 0) {
        printk("ERROR!!! ");
        printk("BBP(viaMCU=%d) read R%d fail\n",1,3);
        uVar9 = (uint)*(byte *)(param_1 + 0x4acc);
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
               *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
        }
        goto LAB_0006b3ac;
      }
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    if (cVar3 != '\x01') {
      uVar15 = *(uint *)(param_1 + 0x4bf4);
      goto LAB_0006b3d4;
    }
    Status = Status & 0xfffffffe;
    if (uVar16 != 0) {
      Status = Status | 1;
    }
  }
  uVar15 = *(uint *)(param_1 + 0x4bf4);
LAB_0006b3d4:
  uVar16 = Status;
  uVar9 = uVar9 & 0xe7;
  if ((uVar15 & 0xf) == 3) {
    uVar9 = uVar9 | 0x10;
  }
  else if ((uVar15 & 0xf) == 2) {
    uVar9 = uVar9 | 8;
  }
  if (*(char *)(param_1 + 0xec) == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar15 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar15 = uVar16 & 1;
      }
      iVar11 = 1;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar16 = 0;
        if (cVar3 == '\0') {
          uVar16 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar16 & 0x20000) == 0) break;
        iVar11 = iVar11 + 1;
        printk(&_LC12)   //possible issue identified - semgrep
        if (iVar11 == 100) goto LAB_0006b4cc;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar3 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar9 | 0xa0300;
      }
      *(char *)(param_1 + 0x4acc) = (char)uVar9;
      if (iVar11 != 100) goto LAB_0006b4ec;
LAB_0006b4cc:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",3);
LAB_0006b4ec:
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      uVar15 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar15 = uVar16 & 1;
      }
      iVar11 = 1;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar16 = 0;
        if (cVar3 == '\0') {
          uVar16 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar16 & 0x20000) == 0) break;
        iVar13 = iVar11 % 0x14;
        iVar11 = iVar11 + 1;
        if ((iVar13 == 0) && (cVar3 == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar16 & 0xfffdffff;
        }
        printk(&_LC12)   //possible issue identified - semgrep
        if (iVar11 == 100) goto LAB_0006b648;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar3 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 | 0xa0300;
      }
      iVar13 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
      if (*(char *)(param_1 + 0x16964) == '\x01') {
        RTMPusecDelay(1000);
      }
      if ((iVar13 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 | 0x80300;
      }
      *(char *)(param_1 + 0x4acc) = (char)uVar9;
      if (iVar11 != 100) goto LAB_0006b690;
LAB_0006b648:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",3);
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
             *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_0006b690:
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
    if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar15 != 0)) {
      Status = Status | 1;
    }
  }
  if ((4 < *(byte *)(param_1 + 0x16982)) || (bVar2)) {
    if (*(char *)(param_1 + 0x16a90) == '\0') {
      *(undefined2 *)(param_1 + 0x16aaa) = 0x2f;
      *(undefined1 *)(param_1 + 0x16a98) = 7;
      *(undefined1 *)(param_1 + 0x16a9e) = 2;
      *(undefined1 *)(param_1 + 0x16a9f) = 6;
      *(undefined1 *)(param_1 + 0x16aa0) = 10;
      *(undefined1 *)(param_1 + 0x16a9a) = 1;
      *(undefined1 *)(param_1 + 0x16aa1) = 4;
      *(undefined1 *)(param_1 + 0x16aa2) = 3;
      *(undefined2 *)(param_1 + 0x16aa8) = 0x5e;
      *(undefined1 *)(param_1 + 0x16a90) = 1;
      AsicEvaluateRxAnt[param_1 + 3] = (code)0x3;
      *(undefined1 *)(param_1 + 0x16a99) = 1;
      *(undefined1 *)(param_1 + 0x16a9b) = 4;
      *(undefined1 *)(param_1 + 0x16a9c) = 4;
      *(undefined1 *)(param_1 + 0x16a9d) = 3;
      *(undefined2 *)(param_1 + 0x16aa4) = 0;
      *(undefined2 *)(param_1 + 0x16aa6) = 0;
    }
    AsicSetEdcaParm(param_1,param_1 + 0x16a90);
    if (*(char *)(param_1 + 0x16874) == '\0') {
      *(undefined2 *)(param_1 + 0x1688e) = 0x2f;
      *(undefined1 *)(param_1 + 0x16874) = 1;
      *(undefined1 *)(param_1 + 0x1687c) = 7;
      *(undefined1 *)(param_1 + 0x16882) = 2;
      *(undefined1 *)(param_1 + 0x16884) = 10;
      *(undefined1 *)(param_1 + 0x16885) = 4;
      *(undefined1 *)(param_1 + 0x16886) = 3;
      *(undefined2 *)(param_1 + 0x1688c) = 0x5e;
      *(undefined1 *)(param_1 + 0x1687b) = 3;
      *(undefined1 *)(param_1 + 0x1687d) = 2;
      *(undefined1 *)(param_1 + 0x1687e) = 2;
      *(undefined1 *)(param_1 + 0x1687f) = 4;
      *(undefined1 *)(param_1 + 0x16880) = 4;
      *(undefined1 *)(param_1 + 0x16881) = 3;
      *(undefined1 *)(param_1 + 0x16883) = 10;
      *(undefined2 *)(param_1 + 0x16888) = 0;
      *(undefined2 *)(param_1 + 0x1688a) = 0;
    }
  }
  else {
    AsicSetEdcaParm(param_1,0);
  }
  if (*(byte *)(param_1 + 0x16982) < 5) {
    *(uint *)(param_1 + 0x16afc) = *(uint *)(param_1 + 0x16afc) & 0xfffdffff;
  }
  if (*(char *)(param_1 + 0x16a88) == '\0') {
    *(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) & 0xffefffff;
    pcVar6 = AsicDisableRDG;
  }
  else {
    *(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) | 0x100000;
    pcVar6 = AsicEnableRDG;
  }
  (*pcVar6)(param_1);
  memcpy((void *)(param_1 + 0x51ac),__src,6)   //possible issue identified - semgrep
  AsicSetBssid(param_1,__src);
  AsicSetMcastWC(param_1);
  if ((*(char *)(param_1 + 0xec) == '\0') &&
     (*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1800) = 0, *(char *)(param_1 + 0xec) == '\0')) {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1804) = 0;
  }
  iVar11 = 0x180c;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  while( true ) {
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar11 + -4) = 0;
    }
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar11) = 0;
    }
    iVar11 = iVar11 + 8;
    if (iVar11 == 0x1ffc) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  *(undefined2 *)(param_1 + 0x71358) = 5;
  *(uint *)(param_1 + 0x5d350) = *(uint *)(param_1 + 0x5d350) & 0xffff3f80 | 0x4003;
  *(undefined1 *)(param_1 + 0x5d190) = 1;
  *(undefined1 *)(param_1 + 0x169ed) = *(undefined1 *)(param_1 + 0x169ec);
  AsicBBPAdjust(param_1);
  *(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) & 0xfffffffb;
  AsicSwitchChannel(param_1,*(undefined1 *)(param_1 + 0x169ed),0);
  AsicLockChannel(param_1,*(undefined1 *)(param_1 + 0x169ed));
  MlmeSetTxPreamble(param_1,*(undefined2 *)(param_1 + 0x16a70));
  for (bVar4 = 0; bVar4 < *(byte *)(param_1 + 0x51aa); bVar4 = bVar4 + 1) {
    MlmeUpdateTxRates(param_1,0,bVar4);
    if (4 < *(byte *)(param_1 + 0x16982)) {
      MlmeUpdateHtTxRates(param_1,bVar4);
    }
  }
  *(undefined1 *)(param_1 + 0x16acc) = 0;
  AsicUpdateProtect(param_1,0,0x3f,1,0);
  APUpdateCapabilityAndErpIe(param_1);
  APUpdateOperationMode(param_1);
  RTMPSetLEDStatus(param_1,1);
  puVar17 = (undefined2 *)(param_1 + 0x5d12a);
  iVar11 = 0;
  do {
    *puVar17 = 2;
    iVar13 = iVar11 + 1;
    AsicRemovePairwiseKeyEntry(param_1,iVar11);
    puVar17 = puVar17 + 0x510;
    iVar11 = iVar13;
  } while (iVar13 != 0x20);
  for (uVar15 = 0; uVar15 < *(byte *)(param_1 + 0x51aa); uVar15 = uVar15 + 1 & 0xff) {
    iVar11 = uVar15 * 0x1140 + param_1;
    *(undefined1 *)(iVar11 + 0x52d7) = 2;
    if (*(int *)(iVar11 + 0x51dc) - 3U < 7) {
      *(undefined1 *)(iVar11 + 0x5240) = 1;
    }
    iVar13 = uVar15 * 0x1140 + param_1;
    iVar11 = *(int *)(iVar13 + 0x51e0);
    uVar9 = (*(byte *)(param_1 + 0xb0) - 3) + uVar15;
    if (iVar11 == 0) {
      iVar11 = uVar15 * 0x10c;
      puVar18 = (undefined1 *)(param_1 + iVar11 + 0x755d4);
      iVar19 = param_1 + 0x75594 + iVar11;
      uVar16 = 0;
      do {
        uVar1 = *puVar18;
        if ((puVar18[1] != '\0') &&
           (AsicAddSharedKeyEntry(param_1,uVar15,uVar16,iVar19),
           (uint)*(byte *)(iVar13 + 0x5240) == (uVar16 & 0xff))) {
          uVar5 = RandomByte(param_1);
          *(undefined1 *)(param_1 + uVar16 * 0x43 + iVar11 + 0x755b4) = uVar5;
          uVar5 = RandomByte(param_1);
          puVar18[-0x1f] = uVar5;
          uVar5 = RandomByte(param_1);
          puVar18[-0x1e] = uVar5;
          RTMPSetWcidSecurityInfo(param_1,uVar15,uVar16,uVar1,uVar9 & 0xff,0);
        }
        uVar16 = uVar16 + 1;
        puVar18 = puVar18 + 0x43;
        iVar19 = iVar19 + 0x43;
      } while (uVar16 != 4);
    }
    else if (((iVar11 == 4) || (iVar11 == 6)) || (iVar11 == 8)) {
      iVar11 = uVar15 * 0x1140;
      iVar19 = param_1 + iVar11 + 0x5255;
      iVar20 = param_1 + iVar11 + 0x51ac;
      GenRandom(param_1,iVar20,iVar19);
      iVar13 = param_1 + iVar11 + 0x52b7;
      GenRandom(param_1,iVar20,iVar13);
      iVar22 = param_1 + iVar11 + 0x5295;
      WpaDeriveGTK(iVar19,iVar13,iVar20,iVar22,0x20);
      WPAInstallSharedKey(param_1,*(undefined1 *)(param_1 + iVar11 + 0x51e4),uVar15,
                          *(undefined1 *)(param_1 + iVar11 + 0x5240),uVar9 & 0xff,1,iVar22,0x20);
    }
    iVar11 = uVar15 * 0x1140 + param_1;
    uVar21 = *(undefined4 *)(iVar11 + 0x51dc);
    if (2 < RTDebugLevel) {
      uVar7 = GetAuthMode((int)(char)uVar21);
      uVar14 = *(undefined4 *)(iVar11 + 0x51e0);
      uVar8 = GetEncryptType((int)(char)uVar14);
      printk("### BSS(%d) AuthMode(%d)=%s, WepStatus(%d)=%s , AccessControlList.Policy=%ld\n",uVar15
             ,uVar21,uVar7,uVar14,uVar8,*(undefined4 *)(iVar11 + 0x5928));
    }
  }
  RTMPSetPiggyBack(param_1,*(undefined1 *)(param_1 + 0x16a7f));
  ApLogEvent(param_1,__src,0);
  *(undefined4 *)(param_1 + 0x1f0f8) = 0;
  *(undefined4 *)(param_1 + 0x1f0f0) = 0;
  *(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) | 0x200000;
  RTMP_IndicateMediaState(param_1,1);
  *(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) & 0xffffffbf;
  APMakeAllBssBeacon(param_1);
  APUpdateAllBeaconFrame(param_1);
  *(undefined1 *)(param_1 + 0x16acc) = 0;
  AsicEnableBssSync(param_1);
  if ((*(char *)(param_1 + 0xec) == '\0') &&
     (*(uint *)(*(int *)(param_1 + 0xdc) + 0x1128) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x1128) & 0xffff0000 | 0x60,
     *(char *)(param_1 + 0xec) == '\0')) {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x112c) = *(uint *)(*(int *)(param_1 + 0xdc) + 0x112c) | 1;
  }
  WPA_APSetGroupRekeyAction(param_1);
  if (RTDebugLevel < 3) {
    return;
  }
  printk("<=== APStartUp\n");
  return;
LAB_0006b018:
  if (cVar3 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 | 0xa0100;
  }
  iVar13 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
  if (*(char *)(param_1 + 0x16964) == '\x01') {
    RTMPusecDelay(1000);
  }
  if ((iVar13 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 | 0x80100;
  }
  *(char *)(param_1 + 0x4aca) = (char)uVar9;
  if (iVar11 == 100) {
LAB_0006b0bc:
    printk("ERROR!!! ");
    printk("BBP write R%d fail\n",1);
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
      goto LAB_0006b104;
    }
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  else {
LAB_0006b104:
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  if (cVar3 == '\x01') goto LAB_0006b118;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  goto LAB_0006b12c;
LAB_0006af04:
  if (cVar3 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar9 | 0xa0100;
  }
  *(char *)(param_1 + 0x4aca) = (char)uVar9;
  if (iVar11 == 100) {
LAB_0006af44:
    printk("ERROR!!! ");
    printk("BBP write R%d fail\n",1);
  }
  if (*(char *)(param_1 + 0xad) == '\x01') {
LAB_0006b118:
    Status = Status & 0xfffffffe;
    if (uVar16 != 0) {
      Status = Status | 1;
    }
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  goto LAB_0006b12c;
}