uint RTMP_COM_IoctlHandle
(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,uint *param_5,
uint param_6)
{
bool bVar1;
char cVar2;
char cVar3;
uint uVar4;
int iVar5;
char *pcVar6;
char *pcVar7;
uint *puVar8;
undefined1 *puVar9;
undefined1 local_38 [2];
undefined1 local_36 [2];
undefined1 local_34 [4];
uint local_30;
char local_2c [12];
puVar8 = (uint *)*param_1;
if (param_3 == 0x5023) {
pcVar7 = (char *)((int)param_1 + 0x4e3e);
uVar4 = 1;
while (uVar4 <= *(byte *)(param_1 + 0x1416)) {
cVar2 = *pcVar7;
pcVar7 = pcVar7 + 10;
*(char *)((int)param_5 + (uVar4 - 1)) = cVar2;
uVar4 = uVar4 + 1;
}
return 0;
}
if (param_3 < 0x5024) {
if (param_3 == 0x5004) {
uVar4 = Status & 1;
param_1[0x3c] = 0x3fffc;
param_1[0x3e] = 0;
param_1[0x3d] = 0;
Status = Status & 0xfffffffe;
if (uVar4 != 0) {
Status = Status | 1;
}
return 0;
}
if (param_3 < 0x5005) {
if (param_3 == 0x5000) {
uVar4 = param_1[1];
}
else {
if (param_3 < 0x5001) {
if (param_3 == 0xe) {
RtmpDoAte(param_1,param_2,param_5);
return 0;
}
if (param_3 == 0x24) {
uVar4 = (uint)*(ushort *)(param_1 + puVar8[0x3f] * 0x450 + 0x1481);
RtmpDrvMaxRateGet(param_1,(uVar4 << 0x10) >> 0x1e,(uVar4 << 0x17) >> 0x1f,
(uVar4 << 0x18) >> 0x1f,uVar4 & 0x7f,param_5 + 1);
return 0;
}
return 1;
}
if (param_3 != 0x5002) {
if (param_3 < 0x5003) {
param_1[0x1476] = param_5;
param_1[1] = param_5;
return 0;
}
param_5[2] = (uint)(param_1 + 0xa73);
*param_5 = (uint)(param_1 + 0xa7f);
return 0;
}
uVar4 = (uint)*(byte *)(param_1 + 0x5a59);
}
}
else {
if (param_3 == 0x5008) {
return ((param_1[0x1da41] ^ 2) << 0x1e) >> 0x1f;
}
if (param_3 < 0x5009) {
if (param_3 != 0x5006) {
if (param_3 < 0x5007) {
RtmpOSIRQRelease(param_1[1],param_1[0xa7e],*puVar8,0);
return 0;
}
param_1[0x1da41] = param_1[0x1da41] | 0x100;
return 0;
}
uVar4 = *puVar8;
}
else if (param_3 == 0x5021) {
uVar4 = param_1[0x12fd] & 0xf;
}
else {
if (param_3 < 0x5022) {
if (param_3 == 0x5020) {
APMakeAllBssBeacon();
APUpdateAllBeaconFrame(param_1);
return 0;
}
return 1;
}
uVar4 = (uint)*(byte *)(param_1 + 0x1416);
}
}
}
else {
if (param_3 == 0x502a) {
*(char *)(param_5 + 3) = '\0';
*(char *)((int)param_5 + 0xd) = '\0';
*(char *)((int)param_5 + 0xe) = '\0';
param_5[2] = param_1[0x1dac4];
if ((param_1[0x1da41] & 2) != 0) {
uVar4 = (uint)(param_1[0x5bee] * 0xc) / 10 + 10;
*(char *)(param_5 + 3) = (char)uVar4;
if (100 < (uVar4 & 0xff)) {
*(char *)(param_5 + 3) = 'd';
}
cVar2 = RTMPMaxRssi(param_1,(int)*(char *)((int)param_1 + 0x165f7),
(int)*(char *)(param_1 + 0x597e),(int)*(char *)((int)param_1 + 0x165f9)) //possible issue identified - semgrep
;
cVar3 = RTMPMinSnr(param_1,(int)*(char *)((int)param_1 + 0x16603),
(int)*(char *)(param_1 + 0x5981)) //possible issue identified - semgrep
*(char *)((int)param_5 + 0xe) = cVar2 - cVar3;
return 0;
}
return 1;
}
if (0x502a < param_3) {
if (param_3 == 0x502e) {
param_6 = param_6 ^ 0x600;
}
else {
if (0x502e < param_3) {
if (param_3 == 0x5030) {
pcVar7 = "RTWIFI SoftAP";
do {
cVar2 = *pcVar7;
pcVar7 = pcVar7 + 1;
*(char *)param_5 = cVar2;
param_5 = (uint *)((int)param_5 + 1);
} while (cVar2 != '\0');
return 0;
}
if (0x502f < param_3) {
if (param_3 == 0x5034) {
(*(code *)param_1[4])(param_1,4,local_38);
(*(code *)param_1[4])(param_1,6,local_36);
(*(code *)param_1[4])(param_1,8,local_34);
local_2c[5] = SUB21(local_34._0_2_,1);
local_2c[0] = local_38[0];
local_2c[2] = local_36[0];
local_2c[1] = local_38[1];
local_2c[3] = local_36[1];
local_2c[4] = (char)local_34._0_2_;
iVar5 = 0;
do {
pcVar7 = local_2c + iVar5;
pcVar6 = (char *)((int)param_5 + iVar5);
iVar5 = iVar5 + 1;
*pcVar6 = *pcVar7;
} while (iVar5 != 6);
return 0;
}
return 1;
}
uVar4 = (uint)*(byte *)(param_1 + 0x5a7b);
goto LAB_0003e934;
}
if (param_3 == 0x502c) {
*param_5 = 0x100;
return 0;
}
if (param_3 < 0x502d) {
uVar4 = RtmpPhyNetDevMainCreate();
*param_5 = uVar4;
return 0;
}
param_6 = param_6 ^ 0x100;
}
return (uint)(param_6 != 0);
}
if (param_3 == 0x5026) {
iVar5 = param_1[2];
param_1[2] = iVar5 + -1;
if (iVar5 + -1 != 0) {
return 0;
}
(*(code *)param_5[1])(param_1[1]);
return 0;
}
if (param_3 < 0x5027) {
if (param_3 == 0x5024) {
puVar9 = (undefined1 *)((int)param_1 + 0x4e3e);
uVar4 = 1;
while (bVar1 = uVar4 <= *(byte *)(param_1 + 0x1416), uVar4 = uVar4 + 1, bVar1) {
local_30 = 0x24cde0;
RTMP_MapChannelID2KHZ(*puVar9,&local_30);
puVar9 = puVar9 + 10;
*param_5 = local_30;
param_5 = param_5 + 1;
}
return 0;
}
if (param_3 == 0x5025) {
if (param_1[2] == 0) {
iVar5 = (*(code *)*param_5)(param_1[1]);
if (iVar5 != 0) {
if (2 < RTDebugLevel) {
printk("rt28xx_open return fail!\n");
return 1;
}
return 1;
}
iVar5 = param_1[2];
}
else {
APMakeAllBssBeacon();
APUpdateAllBeaconFrame(param_1);
iVar5 = param_1[2];
}
param_1[2] = iVar5 + 1;
return 0;
}
return 1;
}
if (param_3 == 0x5028) {
uVar4 = param_1[0xa7e];
}
else {
if (0x5028 < param_3) {
param_5[1] = param_1[0x1dac5];
param_5[2] = param_1[0x1d9b6];
param_5[3] = param_1[0x1d9a4];
param_5[4] = param_1[0x1d9d7];
param_5[5] = param_1[0x1d9d6];
param_5[6] = param_1[0x1d99c];
param_5[7] = param_1[0x1d99b];
param_5[8] = param_1[0x1d9b8];
param_5[9] = param_1[0x1d9a0] + param_1[0x1d99f];
uVar4 = param_1[0x1d99d];
param_5[0xb] = 0;
param_5[10] = uVar4;
param_5[0xc] = param_1[0x1d99e];
param_5[0xd] = param_1[0x1d99d];
return 0;
}
uVar4 = param_1[2];
}
}
LAB_0003e934:
*param_5 = uVar4;
return 0;
}