undefined4 Set_HiPower_Proc(int param_1,undefined4 param_2)
{
char cVar1;
int iVar2;
int iVar3;
uint uVar4;
uint uVar5;
iVar2 = simple_strtol(param_2,0,10);
uVar4 = Status;
*(bool *)(param_1 + 0x16e78) = iVar2 == 0;
if (iVar2 != 0) {
return 1;
}
if (*(char *)(param_1 + 0xec) != '\0') goto LAB_00037f90;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar5 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar5 = uVar4 & 1;
}
iVar2 = 1;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) break;
iVar2 = iVar2 + 1;
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_00037abc;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa5262;
}
*(undefined1 *)(param_1 + 0x4b1b) = 0x62;
if (iVar2 != 100) {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto LAB_00037ae0;
}
LAB_00037abc:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x52);
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
LAB_00037ae0:
if (cVar1 == '\x01') {
LAB_00037ca4:
Status = Status & 0xfffffffe;
if (uVar5 != 0) {
Status = Status | 1;
}
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
uVar5 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar5 = uVar4 & 1;
}
iVar2 = 1;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar4 & 0x20000) == 0) break;
iVar3 = iVar2 % 0x14;
iVar2 = iVar2 + 1;
if ((iVar3 == 0) && (cVar1 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 & 0xfffdffff;
}
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_00037c48;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa5262;
}
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')) {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x85262;
}
*(undefined1 *)(param_1 + 0x4b1b) = 0x62;
if (iVar2 != 100) {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto LAB_00037c94;
}
LAB_00037c48:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x52);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
LAB_00037c94:
if (cVar1 == '\x01') goto LAB_00037ca4;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = Status;
if (cVar1 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar5 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar5 = uVar4 & 1;
}
iVar2 = 1;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) break;
iVar2 = iVar2 + 1;
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_00037d94;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa4320;
}
*(undefined1 *)(param_1 + 0x4b0c) = 0x20;
if (iVar2 != 100) {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x00037f70;
}
LAB_00037d94:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x43);
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar5 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar5 = uVar4 & 1;
}
iVar2 = 1;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar4 & 0x20000) == 0) break;
iVar3 = iVar2 % 0x14;
iVar2 = iVar2 + 1;
if ((iVar3 == 0) && (cVar1 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 & 0xfffdffff;
}
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_00037f20;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa4320;
}
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')) {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x84320;
}
*(undefined1 *)(param_1 + 0x4b0c) = 0x20;
if (iVar2 != 100) {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x00037f70;
}
LAB_00037f20:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x43);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
joined_r0x00037f70:
if ((cVar1 == '\x01') && (Status = Status & 0xfffffffe, uVar5 != 0)) {
Status = Status | 1;
}
}
LAB_00037f90:
RT30xxWriteRFRegister(param_1,0x1b,0x23);
return 1;
}