undefined4 RT28xxPciAsicRadioOff(int param_1,char param_2,uint param_3)
{
uint uVar1;
char *pcVar2;
char cVar3;
uint uVar4;
uint uVar5;
param_3 = param_3 & 0xffff;
if (2 < RTDebugLevel) {
printk("%s ===> Lv= %d, TxCpuIdx = %d, TxDmaIdx = %d. RxCpuIdx = %d, RxDmaIdx = %d.\n",
"RT28xxPciAsicRadioOff",param_2,*(undefined4 *)(param_1 + 0x980),
*(undefined4 *)(param_1 + 0x984),*(undefined4 *)(param_1 + 0x4a88),
*(undefined4 *)(param_1 + 0x4a8c));
}
if (*(char *)(param_1 + 0x16964) == '\x01') {
if (param_2 == '\0') {
return 0;
}
}
else if (param_2 == '\0') {
if (*(char *)(param_1 + 0xec) == '\0') {
uVar1 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x29c);
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x298);
uVar4 = uVar5;
if (uVar5 < uVar1) {
if (0x2a < uVar1 - uVar5) {
if (RTDebugLevel < 3) {
return 0;
}
pcVar2 = "AsicRadioOff ===> return1. RxDmaIdx = %d , RxCpuIdx = %d. \n";
uVar4 = uVar1;
uVar1 = uVar5;
goto LAB_0005476c;
}
if (uVar5 < uVar1) goto LAB_00054784;
}
}
else {
uVar1 = 0;
uVar4 = 0;
}
if (uVar4 - uVar1 < 0x2a) {
if (RTDebugLevel < 3) {
return 0;
}
pcVar2 = "AsicRadioOff ===> return2. RxCpuIdx = %d. RxDmaIdx = %d , \n";
LAB_0005476c:
printk(pcVar2,uVar4,uVar1);
return 0;
}
}
LAB_00054784:
*(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) | 0x40000000;
if (((((*(uint *)(param_1 + 0x16abc) & 1) == 0) && (*(char *)(param_1 + 0x16964) != '\x01')) ||
(cVar3 = *(char *)(param_1 + 0x169ed), *(char *)(param_1 + 0x169ec) == cVar3)) || //possible issue identified - semgrep
((*(uint *)(param_1 + 0x1f19c) & 0x20000) == 0)) {
cVar3 = *(char *)(param_1 + 0x169ec) //possible issue identified - semgrep
}
AsicTurnOffRFClk(param_1,cVar3);
if (param_2 == '\x02') {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if ((*(uint *)(param_1 + 0x76904) & 0x2000) != 0) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x204) = 0;
}
*(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) & 0xffffdfff;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar3 != '\0') goto LAB_00054894;
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x204) = 0x4000;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x298) = *(undefined4 *)(param_1 + 0x4a88);
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
LAB_00054894:
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x701c) = 0xffffffff;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7014) = 0xffffffff;
}
AsicSendCommandToMcu(param_1,0x30,1,0xff,1);
if (param_2 == '\0') {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (param_3 == 0) {
param_3 = 1;
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1208) = 0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1208) = (param_3 - 1 & 0x7f) << 8 | 0x8005;
}
}
return 1;
}