undefined4
RtmpAsicSendCommandToSwMcu
(int param_1,byte param_2,undefined4 param_3,undefined1 param_4,undefined1 param_5)
{
bool bVar1;
char cVar2;
int iVar3;
void *__dest;
uint uVar4;
uint uVar5;
int iVar6;
undefined2 local_30 [4];
if (param_2 == 0x52) {
__dest = (void *)(param_1 + 0x511c);
}
else {
if (param_2 < 0x53) {
if (param_2 == 0x50) {
*(undefined1 *)(param_1 + 0x5128) = param_5;
*(undefined1 *)(param_1 + 0x5122) = param_4;
SetLedLinkStatus();
return 0;
}
if (param_2 != 0x51) {
return 0;
}
*(undefined1 *)(param_1 + 0x512a) = param_4;
*(undefined1 *)(param_1 + 0x5129) = param_5;
return 0;
}
if (param_2 == 0x54) {
__dest = (void *)(param_1 + 0x5120);
}
else {
if (0x53 < param_2) {
if (param_2 != 0x80) {
return 0;
}
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar5 & 0xa0000) != 0xa0000) && (RTDebugLevel != 0)) {
printk("error read write BBP 1\n");
}
iVar6 = 0;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
uVar4 = 0;
if (cVar2 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) {
if (cVar2 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar5;
}
if ((uVar5 & 0x10000) == 0) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 & 0xfffdffff;
}
*(char *)(param_1 + (((uVar5 & 0xfffdffff) << 0x10) >> 0x18) + 0x4ac9) = (char)uVar5;
return 0;
}
iVar3 = 1;
do {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) goto LAB_0005342c;
bVar1 = iVar3 != 100;
iVar3 = iVar3 + 1;
} while (bVar1);
if (RTDebugLevel != 0) {
printk("error read write BBP 2\n");
}
LAB_0005342c:
if (((uVar4 & 0x20000) == 0) && ((uVar4 << 0x10) >> 0x18 == (uVar5 << 0x10) >> 0x18)) {
uVar5 = uVar5 & 0xffffff00 | uVar4 & 0xff;
if (*(char *)(param_1 + 0xec) != '\0') {
return 0;
}
goto LAB_000534bc;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) {
if (RTDebugLevel != 0) {
printk("error read write BBP 3\n");
}
if (((int)(uVar5 << 0xe) < 0) && (*(char *)(param_1 + 0xec) == '\0')) {
LAB_000534bc:
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 & 0xfffdffff;
}
return 0;
}
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while( true );
}
__dest = (void *)(param_1 + 0x511e);
}
}
local_30[0] = CONCAT11(param_5,param_4);
memmove(__dest,local_30,2) //possible issue identified - semgrep
return 0;
}