void RT28xx_UpdateBeaconToAsic(int param_1,int param_2,uint param_3,uint param_4)
{
byte bVar1;
char cVar2;
int iVar3;
uint uVar4;
uint uVar5;
int iVar6;
uint *puVar7;
byte *pbVar8;
uint uVar9;
uint uVar10;
uint uVar11;
uint uVar12;
if (((param_2 < (int)(uint)*(byte *)(param_1 + 0x51aa)) && (param_2 < 0x10)) &&
(*(char *)(param_1 + 0x16964) == '\x01')) {
iVar3 = param_1 + param_2 * 0x1140;
uVar12 = (uint)*(byte *)(iVar3 + 0x551b);
uVar11 = (uint)*(byte *)(iVar3 + 0x62e9);
iVar3 = BeaconTransmitRequired(param_1,param_2,param_1 + param_2 * 0x1140 + 0x51ac);
uVar9 = Status;
if (iVar3 == 0) {
uVar10 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar10 = uVar9 & 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;
}
}
iVar3 = 0;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
if (cVar2 == '\0') {
*(undefined4 *)
(*(int *)(param_1 + 0xdc) +
iVar3 + (uint)*(ushort *)(param_1 + (uVar11 + 0x28b4) * 2 + 4)) = 0;
}
iVar3 = iVar3 + 4;
if (iVar3 == 0x10) break;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (*(char *)(param_1 + 0xad) != '\x01') {
return;
}
*(undefined1 *)(param_1 + 0x5154) = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) & 0xfff7ffff;
}
}
else {
uVar10 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar10 = uVar9 & 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;
}
}
iVar3 = 0;
bVar1 = *(byte *)(param_1 + 0x5156);
pbVar8 = (byte *)(param_1 + 0x5155);
while( true ) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) +
iVar3 + (uint)*(ushort *)(param_1 + (uVar11 + 0x28b4) * 2 + 4)) =
(uint)bVar1 * 0x100 + (uint)pbVar8[2] * 0x10000 + (uint)*pbVar8 +
(uint)pbVar8[3] * 0x1000000;
}
iVar3 = iVar3 + 4;
if (iVar3 == 0x10) break;
bVar1 = pbVar8[5];
pbVar8 = pbVar8 + 4;
}
iVar3 = param_2 * 0x1140 + param_1 + 0x5720;
pbVar8 = (byte *)(iVar3 + uVar12);
uVar9 = uVar12 + 2;
for (; uVar12 < uVar9; uVar12 = uVar12 + 1) {
uVar4 = *(ushort *)(param_1 + (uVar11 + 0x28b4) * 2 + 4) + 0x10 + uVar12;
uVar5 = uVar4 & 3;
puVar7 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar4 - uVar5));
iVar6 = uVar5 << 3;
*puVar7 = *puVar7 & ~(0xff << iVar6) | (uint)*pbVar8 << iVar6;
pbVar8 = pbVar8 + 1;
}
if (param_4 < param_3) {
pbVar8 = (byte *)(iVar3 + param_4);
for (; param_4 < param_3; param_4 = param_4 + 1) {
uVar9 = *(ushort *)(param_1 + (uVar11 + 0x28b4) * 2 + 4) + 0x10 + param_4;
uVar12 = uVar9 & 3;
puVar7 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar9 - uVar12));
iVar3 = uVar12 << 3;
*puVar7 = *puVar7 & ~(0xff << iVar3) | (uint)*pbVar8 << iVar3;
pbVar8 = pbVar8 + 1;
}
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar2 != '\x01') {
return;
}
*(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 (uVar10 != 0) {
Status = Status | 1;
}
}
else if (RTDebugLevel != 0) {
printk("%s() : No valid Interface be found.\n","RT28xx_UpdateBeaconToAsic");
return;
}
return;
}