undefined * SelectBestChannel(int param_1,uint param_2)

{
  byte *pbVar1;
  byte bVar2;
  bool bVar3;
  char cVar4;
  int *piVar5;
  uint uVar6;
  bool bVar7;
  byte *pbVar8;
  byte bVar9;
  int iVar10;
  int iVar11;
  uint *puVar12;
  uint uVar13;
  char *pcVar14;
  int iVar15;
  int iVar16;
  byte *pbVar17;
  int iVar18;
  undefined *puVar19;
  uint uVar20;
  byte *pbVar21;
  uint uVar22;
  uint *puVar23;
  undefined *puVar24;
  int iVar25;
  byte local_90 [4];
  byte local_8c [60];
  byte *local_50;
  byte *local_4c;
  uint *local_48;
  uint *local_44;
  uint local_40;
  uint local_3c;
  undefined *local_38;
  int local_34;
  int local_30;
  
  cVar4 = *(char *)(param_1 + 0x16982)   //possible issue identified - semgrep
  if ((((byte)(cVar4 - 2U) < 2) || (cVar4 == '\x05')) || (cVar4 == '\b')) {
    bVar7 = true;
  }
  else {
    bVar7 = cVar4 == '\n';
  }
  *(bool *)(*(int *)(param_1 + 0x16960) + 0x3a8) = bVar7;
  if (param_2 < 2) {
    iVar18 = *(int *)(param_1 + 0x16960);
    if (iVar18 != 0) {
      for (uVar6 = 0; uVar6 < *(byte *)(param_1 + 0x5058); uVar6 = uVar6 + 1 & 0xff) {
        if (*(int *)(iVar18 + (uVar6 + 0x36) * 4 + 4) != 0) {
          piVar5 = (int *)(iVar18 + uVar6 * 4);
          cVar4 = *(char *)(iVar18 + 0x3a8)   //possible issue identified - semgrep
          *piVar5 = *piVar5 + 0x1e;
          if ((cVar4 == '\0') ||
             (uVar13 = (uint)*(byte *)(uVar6 * 10 + param_1 + 0x4e3e),
             (*(uint *)(param_1 + 0x16a44) & 0x800) == 0)) {
LAB_0007f920:
            cVar4 = *(char *)(iVar18 + 0x3a8)   //possible issue identified - semgrep
          }
          else if (uVar13 < 0xf) {
            cVar4 = *(char *)(iVar18 + 0x3a8)   //possible issue identified - semgrep
          }
          else if (((((uVar13 == 0x24) || (uVar13 == 0x2c)) ||
                    ((uVar13 == 0x34 || (((uVar13 == 0x3c || (uVar13 == 100)) || (uVar13 == 0x6c))))
                    )) || ((uVar13 == 0x74 || (uVar13 == 0x7c)))) ||
                  ((uVar13 == 0x84 || ((uVar13 == 0x95 || (uVar13 == 0x9d)))))) {
            uVar22 = uVar6 + 1;
            if (uVar22 < 0x36) {
              iVar16 = *(byte *)(uVar22 * 10 + param_1 + 0x4e3e) - uVar13;
LAB_0007f904:
              if (iVar16 == 4) {
                piVar5 = (int *)(iVar18 + uVar22 * 4);
                *piVar5 = *piVar5 + 1;
                goto LAB_0007f920;
              }
              cVar4 = *(char *)(iVar18 + 0x3a8)   //possible issue identified - semgrep
            }
            else {
              cVar4 = *(char *)(iVar18 + 0x3a8)   //possible issue identified - semgrep
            }
          }
          else {
            if ((((uVar13 == 0x28) ||
                 (((((uVar13 == 0x30 || (uVar13 == 0x38)) || (uVar13 == 0x40)) ||
                   ((uVar13 == 0x68 || (uVar13 == 0x70)))) || (uVar13 == 0x78)))) ||
                (((uVar13 == 0x80 || (uVar13 == 0x88)) || (uVar13 == 0x99)))) || (uVar13 == 0xa1)) {
              uVar22 = uVar6 - 1;
              if (uVar6 == 0) goto LAB_0007f920;
              iVar16 = uVar13 - *(byte *)(uVar22 * 10 + param_1 + 0x4e3e);
              goto LAB_0007f904;
            }
            cVar4 = *(char *)(iVar18 + 0x3a8)   //possible issue identified - semgrep
          }
          if (cVar4 == '\0') {
            iVar16 = uVar6 + 1;
            iVar25 = 4;
            if ((*(uint *)(param_1 + 0x16a44) & 0x60800) == 0x60800) {
              iVar25 = 8;
            }
            piVar5 = (int *)(iVar18 + iVar16 * 4);
            iVar10 = 0;
            while( true ) {
              iVar11 = iVar16 + iVar10;
              iVar10 = iVar10 + 1;
              if (iVar16 + iVar25 <= iVar11) break;
              if (iVar11 < 0x36) {
                *piVar5 = *piVar5 + 1;
                piVar5 = piVar5 + 1;
              }
              else {
                piVar5 = piVar5 + 1;
              }
            }
            iVar16 = uVar6 - 1;
            iVar25 = 4;
            if ((*(uint *)(param_1 + 0x16a44) & 0x60800) == 0x20800) {
              iVar25 = 8;
            }
            piVar5 = (int *)(iVar18 + iVar16 * 4);
            iVar10 = 0;
            while( true ) {
              iVar11 = iVar16 - iVar10;
              iVar10 = iVar10 + 1;
              if (iVar11 <= iVar16 - iVar25) break;
              if (iVar11 < 0) {
                piVar5 = piVar5 + -1;
              }
              else {
                *piVar5 = *piVar5 + 1;
                piVar5 = piVar5 + -1;
              }
            }
          }
        }
      }
      for (uVar6 = 0; uVar6 < *(byte *)(param_1 + 0x16626); uVar6 = uVar6 + 1 & 0xff) {
        uVar13 = 0;
        pcVar14 = (char *)(param_1 + 0x4e3e);
        while (((int)uVar13 < (int)(uint)*(byte *)(param_1 + 0x5058) &&
               (cVar4 = *pcVar14, pcVar14 = pcVar14 + 10,
               *(char *)(param_1 + uVar6 + 0x16627) != cVar4))) {
          uVar13 = uVar13 + 1;
        }
        if ((uVar13 & 0xff) != (uint)*(byte *)(param_1 + 0x5058)) {
          *(undefined1 *)(*(int *)(param_1 + 0x16960) + (uVar13 & 0xff) + 0x294) = 1;
        }
      }
      if (2 < RTDebugLevel) {
        printk("=====================================================\n");
      }
      for (uVar6 = 0; uVar6 < *(byte *)(param_1 + 0x5058); uVar6 = uVar6 + 1 & 0xff) {
        if (2 < RTDebugLevel) {
          pcVar14 = "FALSE";
          if (*(char *)(iVar18 + uVar6 + 0x294) == '\x01') {
            pcVar14 = "TRUE";
          }
          printk("Channel %d : Dirty = %ld, ApCnt=%ld, Busy Time = %d, Skip Channel = %s\n",
                 *(undefined1 *)(uVar6 * 10 + param_1 + 0x4e3e),*(undefined4 *)(iVar18 + uVar6 * 4),
                 *(undefined4 *)(iVar18 + (uVar6 + 0x36) * 4 + 4),
                 *(undefined4 *)(iVar18 + (uVar6 + 0xb2) * 4 + 4),pcVar14);
        }
      }
      if (2 < RTDebugLevel) {
        printk("=====================================================\n");
      }
      *(undefined1 *)(param_1 + 0x16624) = 0;
      uVar6 = 0;
      while( true ) {
        if (*(byte *)(param_1 + 0x5058) <= uVar6) break;
        if (*(char *)(iVar18 + uVar6 + 0x294) != '\x01') {
          iVar16 = RadarChannelCheck(param_1,*(undefined1 *)(uVar6 * 10 + param_1 + 0x4e3e));
          if (((iVar16 == 0) || (*(char *)(param_1 + 0x1661c) != '\x01')) ||
             (*(char *)(iVar18 + 0x3a8) != '\x01')) {
            iVar16 = QBSS_LoadIsBusyTimeAccepted
                               (param_1,*(undefined4 *)(iVar18 + (uVar6 + 0xb2) * 4 + 4));
            if ((iVar16 != 0) && (*(int *)(iVar18 + uVar6 * 4) == 0)) {
              bVar9 = *(byte *)(param_1 + 0x5058);
              goto LAB_0007fc28;
            }
          }
        }
        uVar6 = uVar6 + 1 & 0xff;
      }
      bVar9 = *(byte *)(param_1 + 0x5058);
LAB_0007fc28:
      uVar13 = 0x1e;
      if (bVar9 <= uVar6) {
        do {
          memset(local_8c,0,0x37);
          local_38 = (undefined *)(uVar13 & 0xff);
          cVar4 = '\0';
          uVar6 = 0;
          while( true ) {
            uVar22 = uVar6 + 1;
            if (*(byte *)(param_1 + 0x5058) <= uVar6) break;
            if (*(char *)(iVar18 + uVar6 + 0x294) == '\x01') {
              uVar6 = uVar22 & 0xff;
            }
            else if (*(uint *)(iVar18 + uVar6 * 4) == uVar13) {
              cVar4 = cVar4 + '\x01';
              local_8c[uVar6] = 1;
              uVar6 = uVar22 & 0xff;
            }
            else {
              uVar6 = uVar22 & 0xff;
            }
          }
          if (cVar4 != '\0') {
            puVar24 = (undefined *)0x0;
            uVar6 = 0xff;
            for (uVar22 = 0; uVar22 < *(byte *)(param_1 + 0x5058); uVar22 = uVar22 + 1 & 0xff) {
              iVar16 = QBSS_LoadIsBusyTimeAccepted
                                 (param_1,*(undefined4 *)(iVar18 + (uVar22 + 0xb2) * 4 + 4));
              if (((iVar16 != 0) && (local_8c[uVar22] != 0)) &&
                 (*(uint *)(iVar18 + (uVar22 + 0x36) * 4 + 4) < uVar6)) {
                if ((*(uint *)(param_1 + 0x16a44) & 0x800) != 0) {
                  cVar4 = *(char *)(uVar22 * 10 + param_1 + 0x4e3e);
                  local_90[0] = 0x8c;
                  local_90[1] = 0xa5;
                  if ((cVar4 == -0x74) || (cVar4 == -0x5b)) goto LAB_0007fe04;
                }
                iVar16 = RadarChannelCheck(param_1,*(undefined1 *)(uVar22 * 10 + param_1 + 0x4e3e));
                if ((iVar16 == 0) ||
                   ((*(char *)(param_1 + 0x1661c) != '\x01' || (*(char *)(iVar18 + 0x3a8) != '\x01')
                    ))) {
                  puVar24 = (undefined *)(uint)*(byte *)(uVar22 * 10 + param_1 + 0x4e3e);
                  uVar6 = (uint)*(byte *)(iVar18 + (uVar22 + 0x36) * 4 + 4);
                }
              }
LAB_0007fe04:
            }
            if (puVar24 != (undefined *)0x0) {
              if (2 < RTDebugLevel) {
                printk("Rule 2 APCnt : minimum APCnt with  minimum interference(dirtiness: 30~32) ==> Select Channel %d\n"
                       ,puVar24);
              }
              if (RTDebugLevel < 3) {
                iVar18 = (int)(char)puVar24;
                goto LAB_00080f14;
              }
              pcVar14 = " Dirtiness = %d ,  Min ApCnt = %d\n";
              puVar19 = local_38;
              goto LAB_00080e24;
            }
          }
          uVar13 = uVar13 + 1;
        } while (uVar13 != 0x21);
        iVar16 = RandomByte2(param_1);
        puVar24 = (undefined *)0x0;
        uVar6 = 0;
        while( true ) {
          if (*(byte *)(param_1 + 0x5058) <= uVar6) break;
          puVar24 = (undefined *)
                    (uint)*(byte *)(((int)(uVar6 + iVar16) % (int)(uint)*(byte *)(param_1 + 0x5058))
                                    * 10 + param_1 + 0x4e3e);
          pbVar21 = (byte *)(param_1 + 0x16627);
          bVar9 = 0;
          do {
            if (*(byte *)(param_1 + 0x16626) <= bVar9) {
              iVar25 = RadarChannelCheck(param_1,puVar24);
              if (((iVar25 == 0) || (*(char *)(param_1 + 0x1661c) != '\x01')) ||
                 (*(char *)(iVar18 + 0x3a8) != '\x01')) goto LAB_0007ff30;
              break;
            }
            bVar2 = *pbVar21;
            pbVar21 = pbVar21 + 1;
            bVar9 = bVar9 + 1;
          } while (puVar24 != (undefined *)(uint)bVar2);
          uVar6 = uVar6 + 1 & 0xff;
        }
LAB_0007ff30:
        if (RTDebugLevel < 3) {
          iVar18 = (int)(char)puVar24;
          goto LAB_00080f14;
        }
        pcVar14 = "Rule 3 APCnt : Randomly Select  ==> Select Channel %d\n";
        puVar19 = puVar24;
LAB_00080d28:
        printk(pcVar14,puVar24);
        iVar18 = (int)(char)puVar19;
        puVar24 = puVar19;
        goto LAB_00080f14;
      }
      if (2 < RTDebugLevel) {
        printk("Rule 1 APCnt : dirtiness == 0 (no one used and no interference) ==> Select Channel %d\n"
               ,*(undefined1 *)(uVar6 * 10 + param_1 + 0x4e3e));
      }
      puVar24 = (undefined *)(uint)*(byte *)(uVar6 * 10 + param_1 + 0x4e3e);
      goto LAB_00080f10;
    }
LAB_000806e8:
    if (RTDebugLevel != 0) {
      pcVar14 = "pAd->pChannelInfo equal NULL.\n";
LAB_00080700:
      printk(pcVar14);
    }
LAB_00080714:
    puVar24 = (undefined *)FirstChannel(param_1);
  }
  else if (param_2 == 2) {
    pbVar21 = *(byte **)(param_1 + 0x1695c);
    puVar23 = *(uint **)(param_1 + 0x16960);
    local_90[0] = 0;
    local_90[1] = 0;
    local_8c[0] = 0;
    local_8c[1] = 0;
    if (pbVar21 == (byte *)0x0) {
LAB_000806ac:
      local_8c[0] = 0;
      local_8c[1] = 0;
      local_90[0] = 0;
      local_90[1] = 0;
      if (RTDebugLevel != 0) {
        pcVar14 = "pAd->pBssInfoTab equal NULL.\n";
        goto LAB_00080700;
      }
      goto LAB_00080714;
    }
    if (puVar23 == (uint *)0x0) goto LAB_000806e8;
    pbVar17 = pbVar21;
    for (iVar18 = 0; iVar18 < (int)(uint)*pbVar21; iVar18 = iVar18 + 1) {
      iVar16 = 0;
      pbVar8 = (byte *)(param_1 + 0x4e3e);
      while ((iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058) &&
             (bVar9 = *pbVar8, pbVar8 = pbVar8 + 10, pbVar17[0x28] != bVar9))) {
        iVar16 = iVar16 + 1;
      }
      if ((char)pbVar17[0x2a] < 'F') {
        if ((char)pbVar17[0x2a] < ')') {
          uVar6 = puVar23[iVar16] + 0x1e;
        }
        else {
          uVar6 = puVar23[iVar16] + 0x28;
        }
      }
      else {
        uVar6 = puVar23[iVar16] + 0x32;
      }
      puVar23[iVar16] = uVar6;
      puVar23[iVar16] = puVar23[iVar16] + 0x28;
      cVar4 = (char)puVar23[0xea]   //possible issue identified - semgrep
      if (pbVar17[0x29] == 1) {
        iVar10 = 8;
        iVar25 = 4;
        if (cVar4 != '\0') {
          iVar10 = 2;
          iVar25 = 1;
        }
      }
      else if (pbVar17[0x29] == 3) {
        iVar10 = 4;
        iVar25 = 8;
        if (cVar4 != '\0') {
          iVar10 = 1;
          iVar25 = 2;
        }
      }
      else {
        iVar10 = 4;
        iVar25 = iVar10;
        if (cVar4 != '\0') {
          iVar10 = 1;
          iVar25 = iVar10;
        }
      }
      iVar15 = iVar16 + 1;
      puVar12 = puVar23 + iVar15;
      pbVar8 = (byte *)(iVar15 * 10 + param_1 + 0x4e3e);
      iVar11 = 0x20;
      while( true ) {
        bVar7 = iVar10 + iVar16 < iVar15;
        bVar3 = 0x35 < iVar15;
        iVar15 = iVar15 + 1;
        if (((bVar7) || (bVar3)) ||
           (bVar9 = *pbVar8, pbVar1 = pbVar8 + -10, pbVar8 = pbVar8 + 10,
           4 < (int)((uint)bVar9 - (uint)*pbVar1))) break;
        *puVar12 = *puVar12 + iVar11;
        iVar11 = iVar11 + -4;
        puVar12 = puVar12 + 1;
      }
      iVar10 = iVar16 + -1;
      pbVar8 = (byte *)(iVar16 * 10 + param_1 + 0x4e3e);
      puVar12 = puVar23 + iVar10;
      iVar11 = 0x20;
      while ((iVar16 - iVar25 <= iVar10 && (iVar10 != -1))) {
        bVar9 = *pbVar8;
        pbVar1 = pbVar8 + -10;
        iVar10 = iVar10 + -1;
        pbVar8 = pbVar8 + -10;
        if ((int)((uint)bVar9 - (uint)*pbVar1) < 5) {
          *puVar12 = *puVar12 + iVar11;
        }
        puVar12 = puVar12 + -1;
        iVar11 = iVar11 + -4;
      }
      if (2 < RTDebugLevel) {
        printk(" ch%d bssid=%02x:%02x:%02x:%02x:%02x:%02x\n",pbVar17[0x28],pbVar17[1],pbVar17[2],
               pbVar17[3],pbVar17[4],pbVar17[5],pbVar17[6]);
      }
      pbVar17 = pbVar17 + 0x2a;
    }
    for (uVar6 = 0; uVar6 < *(byte *)(param_1 + 0x16626); uVar6 = uVar6 + 1 & 0xff) {
      uVar13 = 0;
      pcVar14 = (char *)(param_1 + 0x4e3e);
      while (((int)uVar13 < (int)(uint)*(byte *)(param_1 + 0x5058) &&
             (cVar4 = *pcVar14, pcVar14 = pcVar14 + 10,
             *(char *)(param_1 + uVar6 + 0x16627) != cVar4))) {
        uVar13 = uVar13 + 1;
      }
      if ((uVar13 & 0xff) != (uint)*(byte *)(param_1 + 0x5058)) {
        *(undefined1 *)(*(int *)(param_1 + 0x16960) + (uVar13 & 0xff) + 0x294) = 1;
      }
    }
    if (2 < RTDebugLevel) {
      printk("=====================================================\n");
    }
    pbVar21 = (byte *)(param_1 + 0x4e3e);
    puVar12 = puVar23;
    local_4c = pbVar21;
    local_44 = puVar23;
    for (iVar18 = 0; iVar18 < (int)(uint)*(byte *)(param_1 + 0x5058); iVar18 = iVar18 + 1) {
      if (2 < RTDebugLevel) {
        pcVar14 = "FALSE";
        if (*(char *)((int)puVar23 + iVar18 + 0x294) == '\x01') {
          pcVar14 = "TRUE";
        }
        printk("Channel %d : Dirty = %ld, False CCA = %u, Busy Time = %u, Skip Channel = %s\n",
               *pbVar21,*puVar12,puVar12[0x6e],puVar12[0xb3],pcVar14);
      }
      pbVar21 = pbVar21 + 10;
      puVar12 = puVar12 + 1;
    }
    if (2 < RTDebugLevel) {
      printk("=====================================================\n");
    }
    local_34 = param_1 + 0x10000;
    iVar18 = -1;
    local_3c = 0xffffffff;
    puVar24 = (undefined *)0x1;
    iVar16 = -4;
    puVar12 = puVar23;
    pbVar21 = local_4c;
    while( true ) {
      iVar25 = iVar16 + 4;
      if ((int)(uint)*(byte *)(param_1 + 0x5058) <= iVar25) break;
      if ((*(char *)((int)puVar23 + iVar16 + 0x298) != '\x01') && (puVar12[0x6e] < 0x65)) {
        uVar6 = *puVar12;
        puVar24 = (undefined *)(uint)*pbVar21;
        iVar10 = QBSS_LoadIsBusyTimeAccepted(param_1,puVar12[0xb3]);
        if (iVar10 != 0) {
          if ((*(uint *)(local_34 + 0x6a44) & 0x800) != 0) {
            if ((char)puVar23[0xea] != '\0') goto LAB_0008046c;
            if (*(char *)(*(int *)(local_34 + 0x6960) + 0x3a8) != '\0') {
              if (iVar25 < (int)(uint)*(byte *)(param_1 + 0x5058)) {
                uVar6 = uVar6 + *puVar12;
              }
              goto LAB_00080438;
            }
            if (*pbVar21 == 0xe) break;
            memset(local_90,0,2)   //possible issue identified - semgrep
            iVar10 = 0;
            if (iVar16 < 0) {
LAB_00080408:
              bVar9 = *(byte *)(param_1 + 0x5058);
            }
            else {
              if (iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058)) {
                uVar6 = uVar6 + puVar12[-4];
                local_90[0] = pbVar21[-0x28];
                iVar10 = 1;
                goto LAB_00080408;
              }
              bVar9 = *(byte *)(param_1 + 0x5058);
            }
            if (iVar16 + 8 < (int)(uint)bVar9) {
              uVar13 = puVar12[4];
              local_90[iVar10] = pbVar21[0x28];
              uVar6 = uVar6 + uVar13;
            }
          }
LAB_00080438:
          if (uVar6 < local_3c) {
            memmove(local_8c,local_90,2)   //possible issue identified - semgrep
            local_3c = uVar6;
            iVar18 = iVar25;
          }
        }
      }
LAB_0008046c:
      puVar12 = puVar12 + 1;
      pbVar21 = pbVar21 + 10;
      iVar16 = iVar16 + 1;
    }
    if (iVar18 != -1) {
      puVar19 = (undefined *)(uint)*(byte *)(iVar18 * 10 + param_1 + 0x4e3e);
      if (2 < RTDebugLevel) {
        printk("Rule 1 CCA value : Min Dirtiness (Include extension channel) ==> Select Channel %d \n"
               ,puVar19);
      }
      if (2 < RTDebugLevel) {
        printk("Min Dirty = %u\n",local_3c);
      }
      if (2 < RTDebugLevel) {
        bVar9 = local_8c[0];
        bVar2 = local_8c[1];
LAB_00080cd0:
        printk("ExChannel = %d , %d\n",bVar9,bVar2);
      }
LAB_00080ce8:
      iVar18 = (int)(char)puVar19;
      puVar24 = puVar19;
      if (RTDebugLevel < 3) goto LAB_00080f14;
      if ((*(uint *)(param_1 + 0x16a44) & 0x800) == 0) {
        puVar24 = &_LC15;
      }
      else {
        puVar24 = &_LC16;
      }
      pcVar14 = "BW        = %s\n";
      goto LAB_00080d28;
    }
    uVar6 = 0xffffffff;
    iVar18 = -1;
    for (iVar16 = 0; iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058); iVar16 = iVar16 + 1) {
      uVar13 = uVar6;
      iVar25 = iVar18;
      if ((*(char *)((int)puVar23 + iVar16 + 0x294) != '\x01') &&
         (uVar22 = local_44[0x6e], 100 < uVar22)) {
        uVar20 = *local_44;
        puVar24 = (undefined *)(uint)*local_4c;
        if (((*(uint *)(param_1 + 0x16a44) & 0x800) == 0) || ((char)puVar23[0xea] == '\0')) {
          iVar10 = QBSS_LoadIsBusyTimeAccepted(param_1,local_44[0xb3]);
          uVar20 = uVar20 + uVar22;
          if ((iVar10 != 0) && (uVar13 = uVar20, iVar25 = iVar16, uVar6 <= uVar20)) {
            uVar13 = uVar6;
            iVar25 = iVar18;
          }
        }
      }
      local_44 = local_44 + 1;
      local_4c = local_4c + 10;
      uVar6 = uVar13;
      iVar18 = iVar25;
    }
    if (iVar18 == -1) {
      iVar18 = RandomByte2(param_1);
      for (iVar16 = 0; iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058); iVar16 = iVar16 + 1) {
        puVar24 = (undefined *)
                  (uint)*(byte *)(((iVar16 + iVar18) % (int)(uint)*(byte *)(param_1 + 0x5058)) * 10
                                  + param_1 + 0x4e3e);
        pbVar21 = (byte *)(param_1 + 0x16627);
        bVar9 = 0;
        do {
          if (*(byte *)(param_1 + 0x16626) <= bVar9) {
            iVar25 = RadarChannelCheck(param_1,puVar24);
            if (((iVar25 == 0) || (*(char *)(param_1 + 0x1661c) != '\x01')) ||
               ((char)puVar23[0xea] != '\x01')) goto LAB_00080ee4;
            break;
          }
          bVar2 = *pbVar21;
          pbVar21 = pbVar21 + 1;
          bVar9 = bVar9 + 1;
        } while (puVar24 != (undefined *)(uint)bVar2);
      }
      goto LAB_00080ee4;
    }
LAB_00080df8:
    puVar24 = (undefined *)(uint)*(byte *)(iVar18 * 10 + param_1 + 0x4e3e);
    if (2 < RTDebugLevel) {
      pcVar14 = "Rule 2 CCA value : Min False CCA value ==> Select Channel %d, min falsecca = %d \n"
      ;
      puVar19 = puVar24;
LAB_00080e24:
      printk(pcVar14,puVar19,uVar6);
      iVar18 = (int)(char)puVar24;
      goto LAB_00080f14;
    }
  }
  else {
    pbVar21 = *(byte **)(param_1 + 0x1695c);
    puVar23 = *(uint **)(param_1 + 0x16960);
    local_8c[0] = 0;
    local_8c[1] = 0;
    local_90[0] = 0;
    local_90[1] = 0;
    if (pbVar21 == (byte *)0x0) goto LAB_000806ac;
    if (puVar23 == (uint *)0x0) goto LAB_000806e8;
    pbVar17 = pbVar21;
    for (iVar18 = 0; iVar18 < (int)(uint)*pbVar21; iVar18 = iVar18 + 1) {
      iVar16 = 0;
      pbVar8 = (byte *)(param_1 + 0x4e3e);
      while ((iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058) &&
             (bVar9 = *pbVar8, pbVar8 = pbVar8 + 10, pbVar17[0x28] != bVar9))) {
        iVar16 = iVar16 + 1;
      }
      if ((char)pbVar17[0x2a] < 'F') {
        if ((char)pbVar17[0x2a] < ')') {
          uVar6 = puVar23[iVar16] + 0x1e;
        }
        else {
          uVar6 = puVar23[iVar16] + 0x28;
        }
      }
      else {
        uVar6 = puVar23[iVar16] + 0x32;
      }
      puVar23[iVar16] = uVar6;
      puVar23[iVar16] = puVar23[iVar16] + 0x28;
      cVar4 = (char)puVar23[0xea]   //possible issue identified - semgrep
      if (pbVar17[0x29] == 1) {
        iVar10 = 8;
        iVar25 = 4;
        if (cVar4 != '\0') {
          iVar10 = 2;
          iVar25 = 1;
        }
      }
      else if (pbVar17[0x29] == 3) {
        iVar10 = 4;
        iVar25 = 8;
        if (cVar4 != '\0') {
          iVar10 = 1;
          iVar25 = 2;
        }
      }
      else {
        iVar10 = 4;
        iVar25 = iVar10;
        if (cVar4 != '\0') {
          iVar10 = 1;
          iVar25 = iVar10;
        }
      }
      iVar15 = iVar16 + 1;
      puVar12 = puVar23 + iVar15;
      pbVar8 = (byte *)(iVar15 * 10 + param_1 + 0x4e3e);
      iVar11 = 0x20;
      while( true ) {
        bVar7 = iVar10 + iVar16 < iVar15;
        bVar3 = 0x35 < iVar15;
        iVar15 = iVar15 + 1;
        if (((bVar7) || (bVar3)) ||
           (bVar9 = *pbVar8, pbVar1 = pbVar8 + -10, pbVar8 = pbVar8 + 10,
           4 < (int)((uint)bVar9 - (uint)*pbVar1))) break;
        *puVar12 = *puVar12 + iVar11;
        iVar11 = iVar11 + -4;
        puVar12 = puVar12 + 1;
      }
      iVar10 = iVar16 + -1;
      pbVar8 = (byte *)(iVar16 * 10 + param_1 + 0x4e3e);
      puVar12 = puVar23 + iVar10;
      iVar11 = 0x20;
      while ((iVar16 - iVar25 <= iVar10 && (iVar10 != -1))) {
        bVar9 = *pbVar8;
        pbVar1 = pbVar8 + -10;
        iVar10 = iVar10 + -1;
        pbVar8 = pbVar8 + -10;
        if ((int)((uint)bVar9 - (uint)*pbVar1) < 5) {
          *puVar12 = *puVar12 + iVar11;
        }
        puVar12 = puVar12 + -1;
        iVar11 = iVar11 + -4;
      }
      if (2 < RTDebugLevel) {
        printk(" ch%d bssid=%02x:%02x:%02x:%02x:%02x:%02x\n",pbVar17[0x28],pbVar17[1],pbVar17[2],
               pbVar17[3],pbVar17[4],pbVar17[5],pbVar17[6]);
      }
      pbVar17 = pbVar17 + 0x2a;
    }
    for (uVar6 = 0; uVar6 < *(byte *)(param_1 + 0x16626); uVar6 = uVar6 + 1 & 0xff) {
      uVar13 = 0;
      pcVar14 = (char *)(param_1 + 0x4e3e);
      while (((int)uVar13 < (int)(uint)*(byte *)(param_1 + 0x5058) &&
             (cVar4 = *pcVar14, pcVar14 = pcVar14 + 10,
             *(char *)(param_1 + uVar6 + 0x16627) != cVar4))) {
        uVar13 = uVar13 + 1;
      }
      if ((uVar13 & 0xff) != (uint)*(byte *)(param_1 + 0x5058)) {
        *(undefined1 *)(*(int *)(param_1 + 0x16960) + (uVar13 & 0xff) + 0x294) = 1;
      }
    }
    if (2 < RTDebugLevel) {
      printk("=====================================================\n");
    }
    pbVar21 = (byte *)(param_1 + 0x4e3e);
    puVar12 = puVar23;
    local_50 = pbVar21;
    local_48 = puVar23;
    for (iVar18 = 0; iVar18 < (int)(uint)*(byte *)(param_1 + 0x5058); iVar18 = iVar18 + 1) {
      if (2 < RTDebugLevel) {
        pcVar14 = "FALSE";
        if (*(char *)((int)puVar23 + iVar18 + 0x294) == '\x01') {
          pcVar14 = "TRUE";
        }
        printk("Channel %d : Dirty = %ld, False CCA = %u, Busy Time = %u, Skip Channel = %s\n",
               *pbVar21,*puVar12,puVar12[0x6e],puVar12[0xb3],pcVar14);
      }
      pbVar21 = pbVar21 + 10;
      puVar12 = puVar12 + 1;
    }
    if (2 < RTDebugLevel) {
      printk("=====================================================\n");
    }
    local_30 = param_1 + 0x10000;
    iVar18 = -1;
    local_40 = 0xffffffff;
    puVar24 = (undefined *)0x1;
    iVar16 = -4;
    puVar12 = puVar23;
    pbVar21 = local_50;
    while( true ) {
      iVar25 = iVar16 + 4;
      if ((int)(uint)*(byte *)(param_1 + 0x5058) <= iVar25) break;
      if ((*(char *)((int)puVar23 + iVar16 + 0x298) != '\x01') && (puVar12[0x6e] < 0x65)) {
        uVar6 = *puVar12;
        puVar24 = (undefined *)(uint)*pbVar21;
        iVar10 = QBSS_LoadIsBusyTimeAccepted(param_1,puVar12[0xb3]);
        if (iVar10 != 0) {
          if ((*(uint *)(local_30 + 0x6a44) & 0x800) != 0) {
            if ((char)puVar23[0xea] != '\0') goto LAB_00080c10;
            if (*(char *)(*(int *)(local_30 + 0x6960) + 0x3a8) != '\0') {
              if (iVar25 < (int)(uint)*(byte *)(param_1 + 0x5058)) {
                uVar6 = uVar6 + *puVar12;
              }
              goto LAB_00080bdc;
            }
            if (*pbVar21 == 0xe) break;
            memset(local_8c,0,2)   //possible issue identified - semgrep
            iVar10 = 0;
            if (iVar16 < 0) {
LAB_00080bac:
              bVar9 = *(byte *)(param_1 + 0x5058);
            }
            else {
              if (iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058)) {
                uVar6 = uVar6 + puVar12[-4];
                local_8c[0] = pbVar21[-0x28];
                iVar10 = 1;
                goto LAB_00080bac;
              }
              bVar9 = *(byte *)(param_1 + 0x5058);
            }
            if (iVar16 + 8 < (int)(uint)bVar9) {
              uVar13 = puVar12[4];
              local_8c[iVar10] = pbVar21[0x28];
              uVar6 = uVar6 + uVar13;
            }
          }
LAB_00080bdc:
          if (uVar6 < local_40) {
            memmove(local_90,local_8c,2)   //possible issue identified - semgrep
            local_40 = uVar6;
            iVar18 = iVar25;
          }
        }
      }
LAB_00080c10:
      puVar12 = puVar12 + 1;
      pbVar21 = pbVar21 + 10;
      iVar16 = iVar16 + 1;
    }
    if (iVar18 != -1) {
      puVar19 = (undefined *)(uint)*(byte *)(iVar18 * 10 + param_1 + 0x4e3e);
      if (2 < RTDebugLevel) {
        printk("Rule 1 CCA value : Min Dirtiness (Include extension channel) ==> Select Channel %d \n"
               ,puVar19);
      }
      if (2 < RTDebugLevel) {
        printk("Min Dirty = %u\n",local_40);
      }
      if (2 < RTDebugLevel) {
        bVar9 = local_90[0];
        bVar2 = local_90[1];
        goto LAB_00080cd0;
      }
      goto LAB_00080ce8;
    }
    uVar6 = 0xffffffff;
    iVar18 = -1;
    for (iVar16 = 0; iVar16 < (int)(uint)*(byte *)(param_1 + 0x5058); iVar16 = iVar16 + 1) {
      uVar13 = uVar6;
      iVar25 = iVar18;
      if ((*(char *)((int)puVar23 + iVar16 + 0x294) != '\x01') &&
         (uVar22 = local_48[0x6e], 100 < uVar22)) {
        uVar20 = *local_48;
        puVar24 = (undefined *)(uint)*local_50;
        if (((*(uint *)(param_1 + 0x16a44) & 0x800) == 0) || ((char)puVar23[0xea] == '\0')) {
          iVar10 = QBSS_LoadIsBusyTimeAccepted(param_1,local_48[0xb3]);
          uVar20 = uVar20 + uVar22;
          if ((iVar10 != 0) && (uVar13 = uVar20, iVar25 = iVar16, uVar6 <= uVar20)) {
            uVar13 = uVar6;
            iVar25 = iVar18;
          }
        }
      }
      local_48 = local_48 + 1;
      local_50 = local_50 + 10;
      uVar6 = uVar13;
      iVar18 = iVar25;
    }
    if (iVar18 != -1) goto LAB_00080df8;
    iVar18 = RandomByte2(param_1);
    iVar16 = 0;
    while( true ) {
      if ((int)(uint)*(byte *)(param_1 + 0x5058) <= iVar16) break;
      puVar24 = (undefined *)
                (uint)*(byte *)(((iVar16 + iVar18) % (int)(uint)*(byte *)(param_1 + 0x5058)) * 10 +
                                param_1 + 0x4e3e);
      pbVar21 = (byte *)(param_1 + 0x16627);
      bVar9 = 0;
      do {
        if (*(byte *)(param_1 + 0x16626) <= bVar9) {
          iVar25 = RadarChannelCheck(param_1,puVar24);
          if (((iVar25 == 0) || (*(char *)(param_1 + 0x1661c) != '\x01')) ||
             ((char)puVar23[0xea] != '\x01')) goto LAB_00080ee4;
          break;
        }
        bVar2 = *pbVar21;
        pbVar21 = pbVar21 + 1;
        bVar9 = bVar9 + 1;
      } while (puVar24 != (undefined *)(uint)bVar2);
      iVar16 = iVar16 + 1;
    }
LAB_00080ee4:
    if (2 < RTDebugLevel) {
      printk("Rule 3 CCA value : Randomly Select ==> Select Channel %d\n",puVar24);
    }
  }
LAB_00080f10:
  iVar18 = (int)(char)puVar24;
LAB_00080f14:
  RtmpOsSendWirelessEvent(param_1,0x213,0,0,iVar18,RtmpDrvSendWirelessEvent);
  return puVar24;
}