void APPeerBeaconAtScanAction(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined4 uVar4;
int iVar5;
int iVar6;
int iVar7;
undefined1 *puVar8;
undefined1 local_c0;
char local_bf;
undefined1 uStack_be;
undefined1 local_bd;
undefined1 uStack_bc;
undefined1 uStack_bb;
undefined1 uStack_ba;
undefined1 uStack_b9;
undefined1 uStack_b8;
undefined1 local_b7;
undefined1 local_b6;
undefined1 local_b5;
undefined1 uStack_b4;
undefined1 local_b3;
undefined1 local_b2;
undefined1 local_b1;
undefined1 auStack_b0 [2];
undefined2 local_ae;
undefined2 local_ac;
undefined2 local_aa;
undefined2 local_a8 [2];
int local_a4;
undefined1 auStack_a0 [4];
int local_9c;
int local_98;
int local_94;
undefined1 auStack_90 [8];
undefined1 auStack_88 [8];
undefined1 auStack_80 [8];
undefined1 auStack_78 [8];
undefined4 local_70;
undefined4 local_6c;
undefined1 auStack_68 [8];
undefined1 auStack_60 [12];
undefined1 auStack_54 [12];
undefined1 auStack_48 [32];
local_b1 = 0xff;
local_bf = '\0';
local_bd = 0;
local_a4 = 0;
local_9c = 0;
local_98 = 0;
local_94 = 0;
os_alloc_mem(0,&local_9c,0x400);
if ((((local_9c == 0) || (os_alloc_mem(0,&local_98,0x1a), local_98 == 0)) ||
(os_alloc_mem(0,&local_94,0x16), local_94 == 0)) ||
(os_alloc_mem(0,&local_a4,0x20), local_a4 == 0)) {
if (RTDebugLevel != 0) {
printk("%s: Allocate memory fail!!!\n","APPeerBeaconAtScanAction");
}
}
else {
local_bd = 0;
RTMPZeroMemory(local_98,0x1a);
RTMPZeroMemory(local_94,0x16);
iVar6 = local_9c;
*(undefined1 *)(local_9c + 1) = 0;
puVar8 = auStack_60;
iVar1 = PeerBeaconAndProbeRspSanity
(param_1,param_2,*(undefined4 *)(param_2 + 0x648),
*(undefined1 *)(param_2 + 0x65c),auStack_80,auStack_88,local_a4,&local_bd,
&local_c0,&local_ae,&local_bf,&uStack_be,&local_70,auStack_78,&local_ac,
&local_aa,&uStack_b8,&uStack_bc,&uStack_bb,&uStack_ba,&uStack_b9,puVar8,
&local_b7,auStack_54,&local_b6,&local_b5,&uStack_b4,auStack_48,auStack_68,
auStack_90,auStack_a0,&local_b3,local_98,auStack_b0,&local_b2,local_94,
&local_b1,local_a8,local_9c);
iVar7 = -0x7f;
if (iVar1 != 0) {
uVar2 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x658),0);
uVar3 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x659),1);
uVar4 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x65a),2);
iVar7 = RTMPMaxRssi(param_1,uVar2,uVar3,uVar4);
if ((local_bf == *(char *)(param_1 + 0x1f175)) || (*(char *)(param_1 + 0x16e01) != '\0')) {
if ((-0x55 < iVar7) && ((*(byte *)(local_98 + 1) & 0x40) != 0)) {
Handle_BSS_Width_Trigger_Events(param_1);
}
iVar7 = BssTableSearch(param_1 + 0x48330,auStack_88,local_bf);
iVar1 = -0x7f;
if (iVar7 != -1) {
iVar1 = (int)*(char *)(iVar7 * 0x520 + param_1 + 0x48390);
}
uVar2 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x658),0);
uVar3 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x659),1);
uVar4 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x65a),2);
iVar7 = RTMPMaxRssi(param_1,uVar2,uVar3,uVar4);
iVar5 = iVar7 + *(char *)(param_1 + 0x4bc9);
if (iVar1 < iVar5) {
iVar1 = (int)(char)iVar5;
}
iVar6 = BssTableSetEntry(param_1,param_1 + 0x48330,auStack_88,local_a4,local_bd,local_c0,
local_ae,auStack_78,local_ac,local_aa,auStack_60,local_b7,
auStack_54,local_b6,local_98,local_94,local_b3,local_b2,local_b1,
local_bf,iVar1,puVar8,local_70,local_6c,local_b5,auStack_48,
auStack_90,auStack_68,local_a8[0],iVar6);
if (iVar6 != -1) {
iVar6 = iVar6 * 0x520;
memmove((void *)(param_1 + iVar6 + 0x48811),(void *)(param_2 + 0x18),4) //possible issue identified - semgrep
memmove((void *)(param_1 + iVar6 + 0x48815),(void *)(param_2 + 0x650),4) //possible issue identified - semgrep
memmove((void *)(param_1 + iVar6 + 0x48819),(void *)(param_2 + 0x650),4) //possible issue identified - semgrep
}
}
}
if (*(char *)(param_1 + 0x16624) == local_bf) {
iVar6 = AutoChBssSearchWithSSID
(param_1,auStack_88,local_a4,local_bd,*(char *)(param_1 + 0x16624));
if (iVar6 == -1) {
iVar6 = *(int *)(param_1 + 0x16960) + (*(byte *)(param_1 + 0x16625) + 0x36) * 4;
*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;
}
AutoChBssInsertEntry(param_1,auStack_88,local_a4,local_bd,local_bf,local_b1,iVar7);
}
}
if (local_9c != 0) {
os_free_mem(0);
}
if (local_98 != 0) {
os_free_mem(0);
}
if (local_94 != 0) {
os_free_mem(0);
}
if (local_a4 != 0) {
os_free_mem(0);
}
return;
}