void AsicVCORecalibration(int param_1)
{
char cVar1;
int iVar2;
uint uVar3;
uint uVar4;
int iVar5;
uint uVar6;
byte local_30 [8];
uVar4 = Status;
if (*(char *)(param_1 + 0x76a0c) != -0x80) {
return;
}
if (*(char *)(param_1 + 0xd8) == '\0') {
return;
}
if (*(char *)(param_1 + 0x50ca) == '\x01') {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar4 & 1;
}
iVar5 = 0;
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) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar2 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar2 == 100)) break;
iVar2 = iVar2 + 1;
}
if ((uVar4 & 0x2ff00) == 0x2f00) {
uVar3 = uVar4 & 0xff;
goto LAB_00050b2c;
}
}
iVar5 = iVar5 + 1;
if (iVar5 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = 0;
LAB_00050b2c:
if ((int)(uVar4 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,0x2f);
uVar3 = (uint)*(byte *)(param_1 + 0x4af8);
LAB_00050cc0:
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 = uVar4 & 1;
}
iVar5 = 0;
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) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb2f00;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar2 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar4 & 0x20000) == 0) || (iVar2 == 100)) break;
iVar2 = iVar2 + 1;
}
if ((uVar4 & 0x2ff00) == 0x2f00) {
uVar3 = uVar4 & 0xff;
goto LAB_00050c68;
}
}
iVar5 = iVar5 + 1;
if (iVar5 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = 0;
LAB_00050c68:
if ((int)(uVar4 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,0x2f);
uVar3 = (uint)*(byte *)(param_1 + 0x4af8);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_00050cc0;
}
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar1 == '\x01') {
Status = Status & 0xfffffffe;
if (uVar6 != 0) {
Status = Status | 1;
}
goto LAB_00050ce4;
}
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
LAB_00050ce4:
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = Status;
if (cVar1 == '\0') {
uVar3 = uVar3 & 0xfc;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar4 & 1;
}
iVar5 = 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;
iVar5 = iVar5 + 1;
printk(&_LC28) //possible issue identified - semgrep
if (iVar5 == 100) goto LAB_00050dbc;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar3 | 0xa2f00;
}
*(char *)(param_1 + 0x4af8) = (char)uVar3;
if (iVar5 != 100) goto LAB_00050ddc;
LAB_00050dbc:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x2f);
LAB_00050ddc:
if (*(char *)(param_1 + 0xad) == '\x01') {
LAB_00050f94:
Status = Status & 0xfffffffe;
if (uVar6 != 0) {
Status = Status | 1;
}
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar4 & 1;
}
iVar5 = 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;
iVar2 = iVar5 % 0x14;
iVar5 = iVar5 + 1;
if ((iVar2 == 0) && (cVar1 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 & 0xfffdffff;
}
printk(&_LC28) //possible issue identified - semgrep
if (iVar5 == 100) goto LAB_00050f38;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 | 0xa2f00;
}
iVar2 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar2 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 | 0x82f00;
}
*(char *)(param_1 + 0x4af8) = (char)uVar3;
if (iVar5 != 100) goto LAB_00050f80;
LAB_00050f38:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x2f);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_00050f80:
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar1 == '\x01') goto LAB_00050f94;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
local_30[0] = 0;
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1328) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1328) & 0xfcfffff0;
}
RT30xxReadRFRegister(param_1,3,local_30);
local_30[0] = local_30[0] & 0x7f | 0x80;
RT30xxWriteRFRegister(param_1,3,local_30[0]);
RtmpOsMsDelay(1);
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1328);
}
if (*(byte *)(param_1 + 0x169ec) < 0xf) {
uVar3 = *(uint *)(param_1 + 0x4bf4) & 0xf0;
if (uVar3 == 0x10) {
uVar4 = uVar4 | 2;
goto LAB_000510c0;
}
if (uVar3 == 0x20) {
uVar4 = uVar4 | 10;
goto LAB_000510c0;
}
if (uVar3 != 0x30) goto LAB_000510c0;
uVar3 = 0x200000a;
}
else {
uVar3 = *(uint *)(param_1 + 0x4bf4) & 0xf0;
if (uVar3 == 0x10) {
uVar4 = uVar4 | 1;
goto LAB_000510c0;
}
if (uVar3 == 0x20) {
uVar4 = uVar4 | 5;
goto LAB_000510c0;
}
if (uVar3 != 0x30) goto LAB_000510c0;
uVar3 = 0x1000005;
}
uVar4 = uVar4 | uVar3;
LAB_000510c0:
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1328) = uVar4;
}
return;
}