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;
}