undefined4 Set_BBPWrite_Proc(int param_1,byte *param_2)
{
byte bVar1;
char cVar2;
int iVar3;
uint uVar4;
uint uVar5;
uint uVar6;
int iVar7;
uint uVar8;
byte *pbVar9;
undefined1 uVar10;
uint uVar11;
uVar6 = Status;
for (pbVar9 = param_2; *pbVar9 != 0x3a; pbVar9 = pbVar9 + 1) {
if (*pbVar9 == 0) {
uVar11 = 0;
goto LAB_0009ac08;
}
}
uVar8 = 0;
do {
bVar1 = *param_2;
iVar7 = (int)(char)bVar1;
if ((byte)(bVar1 + 0x9f) < 6) {
uVar8 = uVar8 * 0x10 + iVar7 + -0x57 & 0xffff;
}
else if ((byte)(bVar1 + 0xbf) < 6) {
uVar8 = uVar8 * 0x10 + iVar7 + -0x37 & 0xffff;
}
else {
if (9 < (byte)(bVar1 - 0x30)) goto code_r0x0009ab7c;
uVar8 = uVar8 * 0x10 + iVar7 + -0x30 & 0xffff;
}
param_2 = param_2 + 1;
} while( true );
LAB_0009ac08:
uVar8 = (uint)*param_2;
if ((uVar8 - 0x61 & 0xff) < 6) {
uVar11 = uVar11 * 0x10 + (uVar8 - 0x57) & 0xff;
}
else {
uVar5 = uVar8 - 0x30 & 0xff;
if ((uVar8 - 0x41 & 0xff) < 6) {
uVar11 = uVar11 * 0x10 + (uVar8 - 0x37) & 0xff;
}
else {
if (9 < uVar5) goto code_r0x0009ac60;
uVar11 = uVar11 * 0x10 + uVar5 & 0xff;
}
}
param_2 = param_2 + 1;
goto LAB_0009ac08;
code_r0x0009ac60:
uVar8 = 0;
goto LAB_0009ac68;
code_r0x0009ab7c:
uVar11 = 0;
while( true ) {
while( true ) {
while( true ) {
pbVar9 = pbVar9 + 1;
uVar5 = (uint)*pbVar9;
if (5 < (uVar5 - 0x61 & 0xff)) break;
uVar11 = uVar11 * 0x10 + (uVar5 - 0x57) & 0xff;
}
uVar4 = uVar5 - 0x30 & 0xff;
if (5 < (uVar5 - 0x41 & 0xff)) break;
uVar11 = uVar11 * 0x10 + (uVar5 - 0x37) & 0xff;
}
if (9 < uVar4) break;
uVar11 = uVar11 * 0x10 + uVar4 & 0xff;
}
LAB_0009ac68:
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
uVar10 = (undefined1)uVar11;
if (*(char *)(param_1 + 0x76a0c) == -0x80) {
if (cVar2 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar5 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar5 = uVar6 & 1;
}
iVar7 = 1;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar6 = 0;
if (cVar2 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar6 & 0x20000) == 0) break;
iVar7 = iVar7 + 1;
printk(&_LC94) //possible issue identified - semgrep
if (iVar7 == 100) goto LAB_0009adf8;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar2 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar11 | 0xa0000 | (uVar8 & 0xff) << 8;
}
*(undefined1 *)(param_1 + uVar8 + 0x4ac9) = uVar10;
if (iVar7 != 100) {
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x0009afc8;
}
LAB_0009adf8:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",uVar8);
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar5 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar5 = uVar6 & 1;
}
iVar7 = 1;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar6 = 0;
if (cVar2 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar6 & 0x20000) == 0) break;
iVar3 = iVar7 % 0x14;
iVar7 = iVar7 + 1;
if ((iVar3 == 0) && (cVar2 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
}
printk(&_LC94) //possible issue identified - semgrep
if (iVar7 == 100) goto LAB_0009af78;
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = (uVar8 & 0xff) << 8;
if (cVar2 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar11 | 0xa0000 | uVar6;
}
iVar3 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar3 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar11 | 0x80000 | uVar6;
}
*(undefined1 *)(param_1 + uVar8 + 0x4ac9) = uVar10;
if (iVar7 != 100) {
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x0009afc8;
}
LAB_0009af78:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",uVar8);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
joined_r0x0009afc8:
if ((cVar2 == '\x01') && (Status = Status & 0xfffffffe, uVar5 != 0)) {
Status = Status | 1;
}
}
}
else {
iVar7 = 0;
do {
uVar6 = 0;
if (cVar2 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar6 & 0x20000) == 0) {
if (cVar2 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar11 | 0xa0000 | (uVar8 & 0xff) << 8;
}
*(undefined1 *)(param_1 + uVar8 + 0x4ac9) = uVar10;
if (iVar7 != 100) {
return 1;
}
break;
}
iVar7 = iVar7 + 1;
} while (iVar7 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",uVar8);
}
}
return 1;
}