/* WARNING: Type propagation algorithm not settling */
void APPeerAuthReqAtIdleAction(char *param_1,int param_2)
{
byte bVar1;
undefined1 uVar2;
char cVar3;
int iVar4;
int *piVar5;
code *pcVar6;
char *pcVar7;
undefined4 uVar8;
uint uVar9;
uint uVar10;
undefined1 local_e0;
undefined1 local_df;
short local_de;
short local_dc [4];
undefined4 local_d4;
undefined4 local_d0;
undefined1 auStack_cc [8];
undefined1 local_c4;
undefined1 local_c3;
undefined1 local_c2;
undefined1 local_c1;
undefined1 local_c0;
undefined1 local_bf;
undefined1 auStack_bc [24];
undefined1 auStack_a4 [136];
local_e0 = 0x10;
local_df = 0x80;
local_d4 = 0;
local_d0 = 0;
iVar4 = APPeerAuthSanity(param_1,param_2,*(undefined4 *)(param_2 + 0x648),auStack_cc,&local_c4,
local_dc,&local_de,local_dc + 2,auStack_a4);
if (iVar4 == 0) {
return;
}
for (uVar10 = 0; uVar10 < (byte)param_1[0x51aa]; uVar10 = uVar10 + 1) {
iVar4 = memcmp(auStack_cc,param_1 + uVar10 * 0x1140 + 0x51ac,6);
if (iVar4 == 0) {
bVar1 = param_1[0x51aa];
goto LAB_0006f4e0;
}
}
bVar1 = param_1[0x51aa];
LAB_0006f4e0:
if (uVar10 < bVar1) {
if ((*(int *)(param_1 + uVar10 * 0x1140 + 0x51d8) == 0) ||
((*(uint *)(*(int *)(param_1 + uVar10 * 0x1140 + 0x51d8) + 0xc0) & 1) != 0)) {
piVar5 = (int *)MacTableLookup(param_1,&local_c4);
if ((piVar5 != (int *)0x0) && (*piVar5 == 1)) {
iVar4 = memcmp(auStack_cc,param_1 + (uint)*(byte *)((int)piVar5 + 0x31) * 0x1140 + 0x51ac,6)
;
if (iVar4 == 0) {
if (*(char *)((int)piVar5 + 5) == '\x01') {
AsicUpdateProtect(param_1,8,0x3c,0,0);
if (RTDebugLevel < 3) {
*(undefined1 *)((int)piVar5 + 5) = 0;
}
else {
printk("Atheros Problem. Turn on RTS/CTS!!!\n");
*(undefined1 *)((int)piVar5 + 5) = 0;
}
uVar2 = *(undefined1 *)((int)piVar5 + 0x27e);
}
else {
uVar2 = *(undefined1 *)((int)piVar5 + 0x27e);
}
BASessionTearDownALL(param_1,uVar2);
if (*(ushort *)((int)piVar5 + 0x27e) != (ushort)*(byte *)(param_2 + 0x65d)) {
printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_auth.c:%d assert pEntry->Aid == Elem->Wcidfailed\n"
,0x141);
}
}
else {
MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar5 + 0x27e),piVar5 + 0x96);
piVar5 = (int *)0x0;
if (1 < RTDebugLevel) {
printk("AUTH - Bssid does not match\n");
piVar5 = (int *)0x0;
}
}
}
if (2 < RTDebugLevel) {
printk("AUTH - MBSS(%d), Rcv AUTH seq#%d, Alg=%d, Status=%d from [wcid=%d]%02x:%02x:%02x:%02x:%02x:%02x\n"
,uVar10,local_de,local_dc[0],local_dc[2],*(undefined1 *)(param_2 + 0x65d),local_c4,
local_c3,local_c2,local_c1,local_c0,local_bf);
}
uVar9 = uVar10 & 0xff;
iVar4 = ApCheckAccessControlList(param_1,&local_c4,uVar9);
if (iVar4 != 0) {
if (local_dc[0] == 0) {
if (*(int *)(param_1 + uVar10 * 0x1140 + 0x51dc) != 1) {
if ((piVar5 == (int *)0x0) &&
(piVar5 = (int *)MacTableInsertEntry(param_1,&local_c4,uVar9,1,1),
piVar5 == (int *)0x0)) {
return;
}
piVar5[0x9d] = 1;
piVar5[0x9e] = 1;
APPeerAuthSimpleRspGenAndSend(param_1,param_2,local_dc[0],local_de + 1,0);
return;
}
}
else if ((local_dc[0] == 1) && (*(int *)(param_1 + uVar10 * 0x1140 + 0x51dc) - 1U < 2)) {
if ((piVar5 == (int *)0x0) &&
(piVar5 = (int *)MacTableInsertEntry(param_1,&local_c4,uVar9,1,1), piVar5 == (int *)0x0
)) {
return;
}
piVar5[0x9e] = 3;
piVar5[0x9d] = 0;
memcpy(param_1 + 0x168d0,&local_c4,6) //possible issue identified - semgrep
pcVar7 = param_1 + 0x168d8;
do {
cVar3 = RandomByte(param_1);
*pcVar7 = cVar3;
pcVar7 = pcVar7 + 1;
} while (pcVar7 != param_1 + 0x16958);
local_de = local_de + 1 //possible issue identified - semgrep
local_dc[1] = 0;
iVar4 = os_alloc_mem(param_1,&local_d4,0x640);
if (iVar4 != 0) {
return;
}
if (2 < RTDebugLevel) {
printk("AUTH - Send AUTH seq#2 (Challenge)\n");
}
MgtMacHeaderInit(param_1,auStack_bc,0xb,0,&local_c4,param_1 + uVar10 * 0x1140 + 0x51ac);
MakeOutgoingFrame(local_d4,&local_d0,0x18,auStack_bc,2,local_dc,2,&local_de,2,local_dc + 1
,1,&local_e0,1,&local_df,0x80,param_1 + 0x168d8,0xffffffff);
MiniportMMRequest(param_1,0,local_d4,local_d0);
pcVar6 = os_free_mem;
uVar8 = local_d4;
goto LAB_0006fa84;
}
APPeerAuthSimpleRspGenAndSend(param_1,param_2,local_dc[0],local_de + 1,0xd);
if (piVar5 != (int *)0x0) {
MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar5 + 0x27e),piVar5 + 0x96);
}
if (RTDebugLevel < 3) {
return;
}
printk("AUTH - Alg=%d, Seq=%d, AuthMode=%d\n",local_dc[0],local_de,
*(undefined4 *)(param_1 + uVar10 * 0x1140 + 0x51dc));
return;
}
if (local_de != 1) {
printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_auth.c:%d assert Seq == 1failed\n"
,0x158);
}
if (piVar5 != (int *)0x0) {
printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_auth.c:%d assert pEntry == NULLfailed\n"
,0x159);
}
APPeerAuthSimpleRspGenAndSend(param_1,param_2,local_dc[0],local_de + 1,1);
if (piVar5 != (int *)0x0) {
MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar5 + 0x27e),piVar5 + 0x96);
}
RtmpOsSendWirelessEvent(param_1,0x215,&local_c4,uVar9,0,RtmpDrvSendWirelessEvent);
if (RTDebugLevel < 3) {
return;
}
param_1 = "Failed in ACL checking => send an AUTH seq#2 with Status code = %d\n";
pcVar6 = printk;
uVar8 = 1;
LAB_0006fa84:
(*pcVar6)(param_1,uVar8);
return;
}
if (RTDebugLevel < 3) {
return;
}
pcVar7 = "AUTH - Bssid IF didn\'t up yet.\n";
}
else {
if (RTDebugLevel < 3) {
return;
}
pcVar7 = "AUTH - Bssid not found\n";
}
printk(pcVar7);
return;
}