void APMakeBssBeacon(int param_1,int param_2)
{
byte *pbVar1;
char cVar2;
byte bVar3;
int *piVar4;
code *pcVar5;
int iVar6;
char *pcVar7;
int iVar8;
char *pcVar9;
char *pcVar10;
int iVar11;
byte *pbVar12;
undefined1 *puVar13;
undefined4 *puVar14;
uint uVar15;
int iVar16;
int iVar17;
uint uVar18;
uint uVar19;
byte *pbVar20;
uint uVar21;
uint uVar22;
undefined4 uVar23;
int *piVar24;
undefined4 uVar25;
byte *pbVar26;
undefined4 uVar27;
undefined1 *puVar28;
undefined4 uVar29;
undefined4 uVar30;
undefined1 *puVar31;
undefined4 uVar32;
undefined4 uVar33;
undefined4 uVar34;
undefined1 local_70;
byte local_6f;
byte local_6e;
undefined4 local_6d;
undefined1 *local_68;
int local_64;
uint local_60;
char *local_5c;
int aiStack_58 [2];
undefined4 local_50;
undefined4 local_4c;
byte local_48 [32];
local_70 = 1;
local_68 = (undefined1 *)0x0;
if (param_2 == 0) {
cVar2 = *(char *)(param_1 + 0x62e8) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_2 * 0x1140 + param_1 + 0x62e8) //possible issue identified - semgrep
}
if (cVar2 != '\x01') {
return;
}
iVar8 = param_2 * 0x1140 + param_1;
cVar2 = *(char *)(iVar8 + 0x62ea) //possible issue identified - semgrep
if (*(char *)(iVar8 + 0x5920) == '\0') {
local_6f = *(byte *)(iVar8 + 0x51b2);
}
else {
local_6f = 0;
}
MgtMacHeaderInit(param_1,local_48 + 8,8,0,&BROADCAST_ADDR,param_2 * 0x1140 + param_1 + 0x51ac);
local_6e = *(byte *)(param_1 + 0x169fa);
if (cVar2 == '\x01') {
local_6e = 4;
}
iVar8 = param_1 + param_2 * 0x1140;
pcVar7 = (char *)(iVar8 + 0x51d4);
iVar16 = iVar8 + 0x51b3;
pbVar20 = (byte *)(iVar8 + 0x5720);
piVar4 = aiStack_58;
piVar24 = (int *)&SsidIe;
pbVar26 = &local_6f;
puVar28 = &SupRateIe;
pbVar12 = &local_6e;
uVar18 = (uint)local_6f;
uVar19 = (uint)local_6e;
puVar14 = (undefined4 *)(param_1 + 0x169ea);
iVar8 = param_1 + 0x169ee;
iVar17 = param_1 + 0x169ec;
puVar31 = &DsIe;
puVar13 = &local_70;
uVar22 = 2;
uVar21 = 2;
uVar23 = 1;
uVar25 = 1;
uVar27 = 1;
uVar29 = 1;
uVar30 = 1;
uVar32 = 1;
uVar33 = 1;
uVar34 = 0xffffffff;
MakeOutgoingFrame(pbVar20,&local_68,0x18,local_48 + 8,8,piVar4,2,puVar14,2,pcVar7,1,&SsidIe,1,
pbVar26,uVar18,iVar16,1,&SupRateIe,1,pbVar12,uVar19,iVar8,1,&DsIe,1,puVar13,1,
iVar17,0xffffffff);
uVar15 = (uint)*(byte *)(param_1 + 0x16a07);
if ((uVar15 != 0) && (cVar2 != '\x01')) {
puVar14 = (undefined4 *)(param_1 + 0x169fb);
piVar4 = (int *)(param_1 + 0x16a07);
uVar22 = 0xffffffff;
MakeOutgoingFrame(pbVar20 + (int)local_68,&local_64,1,&ExtRateIe,1,piVar4,uVar15,puVar14,
0xffffffff,pcVar7,uVar23,piVar24,uVar25,pbVar26,uVar18,iVar16,uVar27,puVar28,
uVar29,pbVar12,uVar19,iVar8,uVar30,puVar31,uVar32,puVar13,uVar33,iVar17,uVar34
);
local_68 = local_68 + local_64;
uVar21 = uVar15;
}
if (*(char *)(param_1 + 0x1697c) != '\0') {
local_64 = CONCAT31(local_64._1_3_,7);
local_5c = (char *)0x0;
os_alloc_mem(0,&local_5c,0x100);
if (local_5c == (char *)0x0) {
if (RTDebugLevel == 0) goto LAB_00070e58;
pcVar9 = "%s: Allocate memory fail!!!\n";
pcVar10 = "APMakeBssBeacon";
pcVar5 = printk;
}
else {
memset(local_5c,0,4) //possible issue identified - semgrep
local_6d._0_1_ = GetCuntryMaxTxPwr(param_1,*(undefined1 *)(param_1 + 0x169ec));
piVar4 = &local_6d;
MakeOutgoingFrame(local_5c,&local_60,1,param_1 + 0x4e3e,1,param_1 + 0x5058,1,piVar4,0xffffffff
);
if ((local_60 & 1) == 0) {
local_6d._0_1_ = (char)local_60 + '\x04';
uVar22 = local_60 + 1;
}
else {
local_6d._0_1_ = (char)local_60 + '\x03';
uVar22 = local_60;
}
puVar14 = (undefined4 *)(param_1 + 0x1697d);
uVar21 = 3;
uVar23 = 0xffffffff;
pcVar7 = local_5c;
MakeOutgoingFrame(pbVar20 + (int)local_68,&local_60,1,&local_64,1,piVar4,3,puVar14,uVar22,
local_5c,0xffffffff);
local_68 = local_68 + local_60;
pcVar9 = (char *)0x0;
pcVar5 = os_free_mem;
pcVar10 = local_5c;
}
(*pcVar5)(pcVar9,pcVar10);
}
LAB_00070e58:
local_6d._0_1_ = '3';
local_64 = CONCAT31(local_64._1_3_,8);
local_50 = 0x3020120;
local_4c = 0x7060504;
local_48[0] = 0x21;
local_48[1] = 5;
local_48[2] = 6;
local_48[3] = 7;
local_48[4] = 8;
local_48[5] = 9;
local_48[6] = 10;
local_48[7] = 0xb;
if (cVar2 == '\t') {
puVar14 = &local_50;
pbVar26 = local_48;
pcVar7 = (char *)&local_6d;
piVar4 = &local_64;
uVar18 = 0xffffffff;
uVar23 = 1;
uVar22 = 1;
uVar25 = 8;
uVar21 = 8;
piVar24 = piVar4;
MakeOutgoingFrame(pbVar20 + (int)local_68,&local_5c,1,pcVar7,1,piVar4,8,puVar14,1,pcVar7,1,
piVar4,8,pbVar26,0xffffffff,iVar16,uVar27,puVar28,uVar29,pbVar12,uVar19,iVar8,
uVar30,puVar31,uVar32,puVar13,uVar33,iVar17,uVar34);
local_68 = local_68 + (int)local_5c;
}
iVar6 = param_1 + param_2 * 0x1140;
iVar11 = *(int *)(iVar6 + 0x60dc);
if (iVar11 != 0) {
local_5c = (char *)0x0;
MakeOutgoingFrame(pbVar20 + (int)local_68,&local_5c,iVar11,iVar6 + 0x5fdb,0xffffffff,piVar4,
uVar21,puVar14,uVar22,pcVar7,uVar23,piVar24,uVar25,pbVar26,uVar18,iVar16,
uVar27,puVar28,uVar29,pbVar12,uVar19,iVar8,uVar30,puVar31,uVar32,puVar13,
uVar33,iVar17,uVar34);
local_68 = local_68 + (int)local_5c;
}
local_6d._1_2_ = 0;
RTMPWriteTxWI(param_1,(byte *)(param_1 + 0x5155),0,0,1,0,0,1,0,0,local_68,5,0,0,0,0,
(int)&local_6d + 1);
uVar21 = Status;
uVar22 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar22 = uVar21 & 1;
*(undefined1 *)(param_1 + 0x5154) = 1;
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) | 0x80000;
}
}
iVar8 = 0;
bVar3 = *(byte *)(param_1 + 0x5156);
pbVar12 = (byte *)(param_1 + 0x5155);
while( true ) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) +
iVar8 + (uint)*(ushort *)
(param_1 + (*(byte *)(param_2 * 0x1140 + param_1 + 0x62e9) + 0x28b4) *
2 + 4)) =
(uint)bVar3 * 0x100 + (uint)pbVar12[2] * 0x10000 + (uint)*pbVar12 +
(uint)pbVar12[3] * 0x1000000;
}
iVar8 = iVar8 + 4;
if (iVar8 == 0x10) break;
bVar3 = pbVar12[5];
pbVar12 = pbVar12 + 4;
}
for (puVar13 = (undefined1 *)0x0; puVar13 < local_68; puVar13 = puVar13 + 4) {
pbVar1 = pbVar20 + 1;
pbVar12 = pbVar20 + 2;
bVar3 = *pbVar20;
pbVar26 = pbVar20 + 3;
pbVar20 = pbVar20 + 4;
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(puVar13 +
*(int *)(param_1 + 0xdc) +
*(ushort *)
(param_1 + (*(byte *)(param_2 * 0x1140 + param_1 + 0x62e9) + 0x28b4) * 2 + 4) + 0x10
) = (uint)*pbVar1 * 0x100 + (uint)*pbVar12 * 0x10000 + (uint)bVar3 +
(uint)*pbVar26 * 0x1000000;
}
}
if (*(char *)(param_1 + 0xad) == '\x01') {
*(undefined1 *)(param_1 + 0x5154) = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) & 0xfff7ffff;
}
Status = Status & 0xfffffffe;
if (uVar22 != 0) {
Status = Status | 1;
}
}
param_1 = param_2 * 0x1140 + param_1;
*(undefined1 *)(param_1 + 0x551b) = 0x22;
*(char *)(param_1 + 0x551a) = (char)local_68;
return;
}