undefined4 RTMPCheckAUTH(int param_1,char *param_2,int param_3)
{
byte bVar1;
byte bVar2;
int iVar3;
int iVar4;
int iVar5;
char *pcVar6;
ushort local_28 [6];
if (param_3 == 0) {
printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_wpa.c:%d assert pEntryfailed\n"
,0x1a4);
}
if (*(byte *)(param_3 + 0x31) < *(byte *)(param_1 + 0x51aa)) {
bVar1 = param_2[1];
}
else {
printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_wpa.c:%d assert pEntry->apidx < pAd->ApCfg.BssidNumfailed\n"
,0x1a5);
bVar1 = param_2[1];
}
bVar2 = *(byte *)(param_3 + 0x31);
if (bVar1 < 0x10) {
if (RTDebugLevel == 0) {
return 0;
}
pcVar6 = "RTMPCheckAUTH ==> WPAIE len is too short(%d) \n";
}
else {
pcVar6 = param_2 + 8;
if ((*param_2 == '0') || (pcVar6 = param_2 + 0xc, *param_2 == -0x23)) {
memmove(local_28,pcVar6,2) //possible issue identified - semgrep
pcVar6 = pcVar6 + (uint)local_28[0] * 4 + 2;
local_28[0] = 0;
memmove(local_28,pcVar6,2) //possible issue identified - semgrep
if ((byte)param_2[1] < 0x10) {
return 0;
}
if (*param_2 == -0x23) {
pcVar6 = pcVar6 + 2;
while( true ) {
if (local_28[0] == 0) {
return 0;
}
iVar3 = RTMPCheckAKM(pcVar6,(uint)bVar2 * 0x1140 + param_1 + 0x52e6,0);
if (iVar3 != 0) break;
local_28[0] = local_28[0] - 1;
pcVar6 = pcVar6 + 4;
}
return 1;
}
if (*param_2 != '0') {
return 0;
}
iVar3 = (uint)bVar2 * 0x1140;
iVar5 = *(int *)(param_1 + iVar3 + 0x51dc);
pcVar6 = pcVar6 + 2;
while( true ) {
if (local_28[0] == 0) {
return 0;
}
iVar4 = RTMPCheckAKM(pcVar6,(uint)(iVar5 - 8U < 2) * 0xff + param_1 + iVar3 + 0x52e6,1);
if (iVar4 != 0) break;
local_28[0] = local_28[0] - 1;
pcVar6 = pcVar6 + 4;
}
return 1;
}
if (RTDebugLevel == 0) {
return 0;
}
pcVar6 = "RTMPCheckAUTH ==> Unknown WPAIE, WPAIE=%d\n";
}
printk(pcVar6);
return 0;
}