undefined4 DO_RACFG_CMD_BBP_READ_ALL(int param_1,undefined4 param_2,int param_3)
{
char cVar1;
uint uVar2;
int iVar3;
int iVar4;
uint uVar5;
uint uVar6;
uVar5 = 0;
do {
uVar2 = Status;
if (*(int *)(param_1 + 0xa8) + 1U <= uVar5) {
ResponseToGUI(param_3,param_2,*(int *)(param_1 + 0xa8) + 3,0);
return 0;
}
*(undefined1 *)(param_3 + uVar5 + 0xe) = 0;
iVar4 = 0;
if (*(char *)(param_1 + 0x76a0c) == -0x80) {
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar2 & 1;
}
iVar4 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00099f18:
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar2 & 0x20000) != 0) {
LAB_00099fb4:
iVar4 = iVar4 + 1;
if (iVar4 == 100) goto LAB_00099fbc;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00099f18;
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = (uVar5 & 0xff) << 8 | 0xb0000;
}
iVar3 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar2 & 0x20000) == 0) || (iVar3 == 100)) break;
iVar3 = iVar3 + 1;
}
if (((uVar2 & 0x20000) != 0) || ((uVar2 << 0x10) >> 0x18 != uVar5)) goto LAB_00099fb4;
*(char *)(param_3 + uVar5 + 0xe) = (char)uVar2;
LAB_00099fbc:
if ((int)(uVar2 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,uVar5);
*(undefined1 *)(param_3 + uVar5 + 0xe) = *(undefined1 *)(param_1 + uVar5 + 0x4ac9);
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar2 & 1;
}
iVar4 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_0009a03c:
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar2 & 0x20000) != 0) {
LAB_0009a10c:
iVar4 = iVar4 + 1;
if (iVar4 == 100) goto LAB_0009a114;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_0009a03c;
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = (uVar5 & 0xff) << 8 | 0xb0000;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar3 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar2 & 0x20000) == 0) || (iVar3 == 100)) break;
iVar3 = iVar3 + 1;
}
if (((uVar2 & 0x20000) != 0) || ((uVar2 << 0x10) >> 0x18 != uVar5)) goto LAB_0009a10c;
*(char *)(param_3 + uVar5 + 0xe) = (char)uVar2;
LAB_0009a114:
if ((int)(uVar2 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,uVar5);
*(undefined1 *)(param_3 + uVar5 + 0xe) = *(undefined1 *)(param_1 + uVar5 + 0x4ac9);
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar2 & 0xfffdffff;
}
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
if ((cVar1 == '\x01') && (Status = Status & 0xfffffffe, uVar6 != 0)) {
Status = Status | 1;
}
}
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00099dec:
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar2 & 0x20000) != 0) {
LAB_00099e88:
iVar4 = iVar4 + 1;
if (iVar4 == 100) goto LAB_00099e90;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00099dec;
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = (uVar5 & 0xff) << 8 | 0xb0000;
}
iVar3 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar2 & 0x20000) == 0) || (iVar3 == 100)) break;
iVar3 = iVar3 + 1;
}
if (((uVar2 & 0x20000) != 0) || ((uVar2 << 0x10) >> 0x18 != uVar5)) goto LAB_00099e88;
*(char *)(param_3 + uVar5 + 0xe) = (char)uVar2;
LAB_00099e90:
if ((int)(uVar2 << 0xe) < 0) {
if (RTDebugLevel != 0) {
printk("BBP read R%d fail\n",uVar5);
}
*(undefined1 *)(param_3 + uVar5 + 0xe) = *(undefined1 *)(param_1 + uVar5 + 0x4ac9);
}
}
uVar5 = uVar5 + 1 & 0xffff;
} while( true );
}