void RTMPIoctlGetMacTableStaInfo(int param_1,uint *param_2)
{
uint uVar1;
uint uVar2;
uint uVar3;
uint uVar4;
undefined1 uVar5;
code *pcVar6;
uint uVar7;
char *pcVar8;
uint uVar9;
int *piVar10;
int iVar11;
int iVar12;
int iVar13;
int iVar14;
int unaff_gp;
int *local_30 [2];
local_30[0] = (int *)0x0;
os_alloc_mem(0,local_30,0x704);
if (local_30[0] == (int *)0x0) {
if (RTDebugLevel == 0) {
return;
}
pcVar8 = "%s: Allocate memory fail!!!\n";
pcVar6 = printk;
piVar10 = (int *)"RTMPIoctlGetMacTableStaInfo";
goto LAB_0003a214;
}
memset(local_30[0],0,0x704) //possible issue identified - semgrep
pcVar8 = (char *)(param_1 + 0x5d3c9);
iVar14 = 0;
do {
piVar10 = local_30[0];
if ((*(int *)(pcVar8 + -0x491) == 1) && (*(int *)(pcVar8 + -0x21d) == 2)) {
iVar11 = *local_30[0];
*(char *)(local_30[0] + iVar11 * 0xe + 1) = pcVar8[-0x460];
memcpy((void *)((int)local_30[0] + iVar11 * 0x38 + 5),
(void *)(param_1 + iVar14 * 0xa20 + 0x5d190),6) //possible issue identified - semgrep
iVar12 = iVar11 * 7 + 1;
*(char *)((int)piVar10 + iVar11 * 0x38 + 0xb) = (char)*(undefined2 *)(pcVar8 + -0x213);
*(char *)(piVar10 + iVar12 * 2 + 1) = pcVar8[-0x221];
*(char *)((int)piVar10 + iVar12 * 8 + 5) = pcVar8[-0x38];
iVar13 = param_1 + iVar14 * 0xa20;
*(char *)((int)piVar10 + iVar12 * 8 + 6) = *pcVar8;
*(char *)((int)piVar10 + iVar12 * 8 + 7) = pcVar8[1];
*(char *)(piVar10 + iVar12 * 2 + 2) = pcVar8[2];
uVar7 = piVar10[iVar11 * 0xe + 6];
piVar10[iVar11 * 0xe + 5] = *(int *)(pcVar8 + -0x1f5);
uVar9 = *(uint *)(iVar13 + 0x5d350) & 0x7f;
piVar10[iVar11 * 0xe + 6] = uVar7 & 0xffffff80 | uVar9;
uVar1 = ((uint)(*(int *)(iVar13 + 0x5d350) << 0x18) >> 0x1f) << 7;
piVar10[iVar11 * 0xe + 6] = uVar7 & 0xffffff00 | uVar9 | uVar1;
uVar2 = ((uint)(*(int *)(iVar13 + 0x5d350) << 0x17) >> 0x1f) << 8;
piVar10[iVar11 * 0xe + 6] = uVar7 & 0xfffffe00 | uVar9 | uVar1 | uVar2;
uVar3 = ((uint)(*(int *)(iVar13 + 0x5d350) << 0x15) >> 0x1e) << 9;
piVar10[iVar11 * 0xe + 6] = uVar7 & 0xfffff800 | uVar9 | uVar1 | uVar2 | uVar3;
uVar4 = ((uint)(*(int *)(iVar13 + 0x5d350) << 0x13) >> 0x1f) << 0xb;
piVar10[iVar11 * 0xe + 6] = uVar7 & 0xffffc000 | uVar9 | uVar1 | uVar2 | uVar3 | uVar4;
piVar10[iVar11 * 0xe + 6] =
uVar7 & 0xffff0000 | uVar9 | uVar1 | uVar2 | uVar3 | uVar4 |
((uint)(*(int *)(iVar13 + 0x5d350) << 0x10) >> 0x1e) << 0xe;
*(undefined2 *)(piVar10 + iVar11 * 0xe + 6) = *(undefined2 *)(pcVar8 + -0x79);
piVar10[iVar11 * 0xe + 7] = *(int *)(pcVar8 + 0x1b);
uVar5 = RTMPMaxRssi(param_1,(int)*pcVar8,(int)pcVar8[1],(int)pcVar8[2]);
*(undefined1 *)(piVar10 + iVar11 * 0xe + 0xe) = uVar5;
*(char *)((int)piVar10 + iVar11 * 0x38 + 0x39) = pcVar8[-0x460];
*local_30[0] = *local_30[0] + 1;
}
iVar14 = iVar14 + 1;
pcVar8 = pcVar8 + 0xa20;
} while (iVar14 != 0x20);
uVar9 = *param_2;
*(undefined2 *)(param_2 + 1) = 0x704;
if (((uVar9 + 0x704 | uVar9) & *(uint *)(unaff_gp + 0x18)) == 0) {
iVar14 = 0x704;
__copy_user(uVar9,local_30[0]);
if (iVar14 != 0) goto LAB_0003a1d0;
}
else {
LAB_0003a1d0:
if (2 < RTDebugLevel) {
printk("%s: copy_to_user() fail\n","RTMPIoctlGetMacTableStaInfo");
}
}
if (local_30[0] == (int *)0x0) {
return;
}
pcVar8 = (char *)0x0;
pcVar6 = os_free_mem;
piVar10 = local_30[0];
LAB_0003a214:
(*pcVar6)(pcVar8,piVar10);
return;
}