void AsicGetAutoAgcOffset(int param_1,char *param_2,undefined1 *param_3,char *param_4,byte *param_5)
{
bool bVar1;
byte bVar2;
char cVar3;
char cVar4;
uint uVar5;
int iVar6;
char *pcVar7;
int iVar8;
uint uVar9;
char *pcVar10;
int iVar11;
int iVar12;
char local_38 [4];
byte local_34;
undefined1 local_33 [3];
uint local_30;
local_38[0] = '\0';
local_33[0] = 0;
local_34 = 0;
if (*(char *)(param_1 + 0x50ca) == '\x01') {
if (*(code **)(param_1 + 0x6c) != (code *)0x0) {
(**(code **)(param_1 + 0x6c))(param_1,local_38,local_33,0,&local_34);
}
}
uVar5 = Status;
if ((*(uint *)(param_1 + 0x1f0f8) & 3) != 0) {
if (*(byte *)(param_1 + 0x169ec) < 0xf) {
cVar4 = *(char *)(param_1 + 0x50c9) //possible issue identified - semgrep
cVar3 = *(char *)(param_1 + 0x50bc) //possible issue identified - semgrep
pcVar10 = (char *)(param_1 + 0x50c9);
}
else {
cVar4 = *(char *)(param_1 + 0x50bb) //possible issue identified - semgrep
cVar3 = *(char *)(param_1 + 0x50ae) //possible issue identified - semgrep
pcVar10 = (char *)(param_1 + 0x50bb);
}
if (cVar3 != '\0') {
local_38[0] = cVar4 + local_38[0];
}
goto LAB_0005098c;
}
if (*(byte *)(param_1 + 0x169ec) < 0xf) {
bVar2 = *(byte *)(param_1 + 0x50bd);
cVar4 = *(char *)(param_1 + 0x50bc) //possible issue identified - semgrep
iVar11 = param_1 + 0x50c3;
iVar12 = param_1 + 0x50be;
cVar3 = *(char *)(param_1 + 0x50c8) //possible issue identified - semgrep
pcVar10 = (char *)(param_1 + 0x50c9);
}
else {
bVar2 = *(byte *)(param_1 + 0x50af);
cVar4 = *(char *)(param_1 + 0x50ae) //possible issue identified - semgrep
cVar3 = *(char *)(param_1 + 0x50ba) //possible issue identified - semgrep
iVar11 = param_1 + 0x50b5;
iVar12 = param_1 + 0x50b0;
pcVar10 = (char *)(param_1 + 0x50bb);
}
local_30 = (uint)bVar2;
if (cVar4 == '\0') goto LAB_0005098c;
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar9 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar9 = uVar5 & 1;
}
iVar8 = 0;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00050594:
uVar5 = 0;
if (cVar4 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar5 & 0x20000) != 0) {
LAB_00050620:
iVar8 = iVar8 + 1;
if (iVar8 == 100) goto LAB_00050628;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00050594;
}
if (cVar4 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
}
iVar6 = 1;
while( true ) {
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar5 & 0x20000) == 0) || (iVar6 == 100)) break;
iVar6 = iVar6 + 1;
}
if ((uVar5 & 0x2ff00) != 0x3100) goto LAB_00050620;
local_34 = (byte)uVar5;
LAB_00050628:
if ((int)(uVar5 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,0x31);
local_34 = *(byte *)(param_1 + 0x4afa);
LAB_000507c8:
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar9 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar9 = uVar5 & 1;
}
iVar8 = 0;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00050690:
uVar5 = 0;
if (cVar4 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar5 & 0x20000) != 0) {
LAB_00050760:
iVar8 = iVar8 + 1;
if (iVar8 == 100) goto LAB_0005076c;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00050690;
}
if (cVar4 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb3100;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar6 = 1;
do {
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
} while (((uVar5 & 0x20000) != 0) && (bVar1 = iVar6 != 100, iVar6 = iVar6 + 1, bVar1));
if ((uVar5 & 0x2ff00) != 0x3100) goto LAB_00050760;
local_34 = (byte)uVar5;
LAB_0005076c:
if ((int)(uVar5 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,0x31);
local_34 = *(byte *)(param_1 + 0x4afa);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_000507c8;
}
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if ((cVar4 == '\x01') && (Status = Status & 0xfffffffe, uVar9 != 0)) {
Status = Status | 1;
}
}
if (*(byte *)(iVar11 + 1) < local_34) {
iVar8 = 2;
if (((*(byte *)(iVar11 + 2) < local_34) && (iVar8 = 3, *(byte *)(iVar11 + 3) < local_34)) &&
(iVar8 = 5, local_34 <= *(byte *)(iVar11 + 4))) {
iVar8 = 4;
}
cVar4 = ('\x01' - (char)iVar8) * cVar3 //possible issue identified - semgrep
*pcVar10 = cVar4;
local_38[0] = cVar4 + local_38[0];
if (RTDebugLevel < 3) goto LAB_0005098c;
iVar8 = iVar8 + -1;
pcVar7 = "-- Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = -%d\n";
}
else if (local_34 < *(byte *)(iVar12 + 1)) {
iVar8 = 2;
if (((local_34 < *(byte *)(iVar12 + 2)) && (iVar8 = 3, local_34 < *(byte *)(iVar12 + 3))) &&
(iVar8 = 5, *(byte *)(iVar12 + 4) <= local_34)) {
iVar8 = 4;
}
iVar8 = iVar8 + -1;
cVar4 = (char)iVar8 * cVar3 //possible issue identified - semgrep
*pcVar10 = cVar4;
local_38[0] = cVar4 + local_38[0];
if (RTDebugLevel < 3) goto LAB_0005098c;
pcVar7 = "++ Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n";
}
else {
*pcVar10 = '\0';
if (RTDebugLevel < 3) goto LAB_0005098c;
pcVar7 = " Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n";
iVar8 = 0;
}
printk(pcVar7,local_34,local_30,cVar3,iVar8);
LAB_0005098c:
*param_5 = local_34;
*param_2 = local_38[0];
*param_3 = local_33[0];
*param_4 = *pcVar10;
return;
}