void BbpSoftReset(int param_1)
{
char cVar1;
byte bVar2;
uint uVar3;
uint uVar4;
uint uVar5;
int iVar6;
int iVar7;
iVar7 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb1500;
}
iVar6 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar6 == 100)) break;
iVar6 = iVar6 + 1;
}
if ((uVar3 & 0x2ff00) == 0x1500) {
uVar4 = uVar3 & 0xff;
goto LAB_00095fd0;
}
}
iVar7 = iVar7 + 1;
if (iVar7 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = 0;
LAB_00095fd0:
if ((int)(uVar3 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4ade);
}
else {
printk("BBP read R%d fail\n",0x15);
bVar2 = *(byte *)(param_1 + 0x4ade);
}
uVar4 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = uVar4 | 1;
iVar7 = 0;
do {
uVar5 = 0;
if (cVar1 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar4 | 0xa1501;
}
*(char *)(param_1 + 0x4ade) = (char)uVar3;
if (iVar7 != 100) goto LAB_000960b4;
break;
}
iVar7 = iVar7 + 1;
} while (iVar7 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x15);
}
LAB_000960b4:
iVar7 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000960d0:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb1500;
}
iVar6 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar6 == 100)) break;
iVar6 = iVar6 + 1;
}
if ((uVar4 & 0x2ff00) == 0x1500) {
uVar3 = uVar4 & 0xff;
LAB_00096164:
if ((int)(uVar4 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4ade);
}
else {
printk("BBP read R%d fail\n",0x15);
bVar2 = *(byte *)(param_1 + 0x4ade);
}
uVar3 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
iVar7 = 0;
while( true ) {
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) break;
iVar7 = iVar7 + 1;
if (iVar7 == 100) {
LAB_0009621c:
if (RTDebugLevel == 0) {
return;
}
printk("BBP write R%d fail\n",0x15);
return;
}
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar3 & 0xfe | 0xa1500;
}
*(char *)(param_1 + 0x4ade) = (char)(uVar3 & 0xfe);
if (iVar7 != 100) {
return;
}
goto LAB_0009621c;
}
}
iVar7 = iVar7 + 1;
if (iVar7 == 100) goto LAB_00096164;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000960d0;
}