undefined4 RTMPCheckUcast(int param_1,char *param_2,int param_3)
{
byte bVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
uint uVar7;
char *pcVar8;
uint uVar9;
short 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"
,0x90);
}
if (*(byte *)(param_3 + 0x31) < *(byte *)(param_1 + 0x51aa)) {
bVar1 = *(byte *)(param_3 + 0x31);
}
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"
,0x91);
bVar1 = *(byte *)(param_3 + 0x31);
}
uVar9 = (uint)bVar1;
*(undefined4 *)(param_3 + 0x1e8) = *(undefined4 *)(uVar9 * 0x1140 + param_1 + 0x51e0);
if ((byte)param_2[1] < 0x10) {
if (RTDebugLevel == 0) {
return 0;
}
pcVar8 = "[ERROR]RTMPCheckUcast : the length is too short(%d) \n";
}
else {
pcVar8 = param_2 + 8;
if ((*param_2 == '0') || (pcVar8 = param_2 + 0xc, *param_2 == -0x23)) {
memmove(local_28,pcVar8,2) //possible issue identified - semgrep
if ((byte)param_2[1] < 0x10) {
return 0;
}
pcVar8 = pcVar8 + 2;
if (*param_2 == -0x23) {
iVar6 = param_1 + uVar9 * 0x1140;
iVar5 = uVar9 * 0x1140 + 0x52e0;
if (*(int *)(iVar6 + 0x51e0) != 8) {
while( true ) {
if (local_28[0] == 0) {
return 0;
}
iVar6 = memcmp(pcVar8,(void *)(param_1 + iVar5 + 0x12),4);
if (iVar6 == 0) break;
local_28[0] = local_28[0] + -1;
pcVar8 = pcVar8 + 4;
}
return 1;
}
param_1 = param_1 + iVar5;
while( true ) {
if (local_28[0] == 0) {
return 0;
}
iVar5 = memcmp(pcVar8,(void *)(param_1 + 0x12),4);
uVar2 = 6;
if (iVar5 == 0) break;
if ((*(uint *)(iVar6 + 0x51e8) & 8) != 0) {
iVar5 = memcmp(pcVar8,(void *)(param_1 + 0x16),4);
uVar2 = 4;
if (iVar5 == 0) break;
}
pcVar8 = pcVar8 + 4;
local_28[0] = local_28[0] + -1;
}
}
else {
if (*param_2 != '0') {
return 0;
}
iVar6 = param_1 + uVar9 * 0x1140;
uVar7 = (uint)(*(int *)(iVar6 + 0x51dc) - 8U < 2);
iVar5 = uVar9 * 0x1140 + 0x52e0;
if (*(int *)(iVar6 + 0x51e0) != 8) {
while( true ) {
if (local_28[0] == 0) {
return 0;
}
iVar6 = memcmp(pcVar8,(void *)(uVar7 * 0xff + param_1 + iVar5 + 0xe),4);
if (iVar6 == 0) break;
local_28[0] = local_28[0] + -1;
pcVar8 = pcVar8 + 4;
}
return 1;
}
iVar3 = uVar7 * 0xff;
iVar5 = param_1 + iVar5 + 6;
while( true ) {
if (local_28[0] == 0) {
return 0;
}
iVar4 = memcmp(pcVar8,(void *)(iVar5 + iVar3 + 8),4);
if (iVar4 == 0) break;
if (((*(uint *)(iVar6 + 0x51e8) & 2) != 0) &&
(iVar4 = memcmp(pcVar8,(void *)(iVar5 + iVar3 + 0xc),4), iVar4 == 0)) {
uVar2 = 4;
goto LAB_00077738;
}
pcVar8 = pcVar8 + 4;
local_28[0] = local_28[0] + -1;
}
uVar2 = 6;
}
LAB_00077738:
*(undefined4 *)(param_3 + 0x1e8) = uVar2;
return 1;
}
if (RTDebugLevel == 0) {
return 0;
}
pcVar8 = "[ERROR]RTMPCheckUcast : invalid IE=%d\n";
}
printk(pcVar8);
return 0;
}