void AsicTxAlcGetAutoAgcOffset
(int param_1,undefined1 *param_2,undefined1 *param_3,undefined4 param_4,
undefined1 *param_5)
{
bool bVar1;
byte bVar2;
char cVar3;
int iVar4;
int iVar5;
int iVar6;
char *pcVar7;
undefined1 uVar8;
uint uVar9;
uint uVar10;
undefined1 uVar11;
uint uVar12;
byte local_30 [8];
local_30[0] = 0;
uVar11 = 0;
if ((*(uint *)(param_1 + 0x1f0f8) & 3) != 0) {
uVar8 = 0;
goto LAB_00062b58;
}
iVar4 = GetDesiredTSSI();
uVar10 = Status;
if (iVar4 == -1) {
uVar8 = 0;
goto LAB_00062b58;
}
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) != 4) {
uVar9 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar9 = uVar10 & 1;
}
iVar6 = 0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
uVar10 = 0;
if (cVar3 == '\0') {
uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar10 & 0x20000) == 0) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb3100;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar5 = 1;
do {
uVar10 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
} while (((uVar10 & 0x20000) != 0) && (bVar1 = iVar5 != 100, iVar5 = iVar5 + 1, bVar1));
uVar12 = uVar10;
if ((uVar10 & 0x2ff00) == 0x3100) goto LAB_000629b0;
}
iVar6 = iVar6 + 1;
uVar12 = 0;
if (iVar6 == 100) goto LAB_000629b0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while( true );
}
uVar9 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar9 = uVar10 & 1;
}
iVar6 = 0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
uVar10 = 0;
if (cVar3 == '\0') {
uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar10 & 0x20000) == 0) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
}
iVar5 = 1;
while( true ) {
uVar10 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar10 & 0x20000) == 0) || (iVar5 == 100)) break;
iVar5 = iVar5 + 1;
}
uVar12 = uVar10;
if ((uVar10 & 0x2ff00) == 0x3100) goto LAB_00062870;
}
iVar6 = iVar6 + 1;
uVar12 = 0;
if (iVar6 == 100) goto LAB_00062870;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while( true );
}
uVar10 = 0;
uVar11 = 0;
goto LAB_00062a30;
LAB_000629b0:
if ((int)(uVar10 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,0x31);
uVar12 = (uint)*(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_00062a08;
}
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto LAB_00062a0c;
LAB_00062870:
if ((int)(uVar10 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,0x31);
uVar12 = (uint)*(byte *)(param_1 + 0x4afa);
LAB_00062a08:
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
LAB_00062a0c:
uVar11 = (undefined1)uVar12;
uVar10 = uVar12 & 0x1f;
if (cVar3 == '\x01') {
Status = Status & 0xfffffffe;
if (uVar9 != 0) {
Status = Status | 1;
}
uVar10 = uVar12 & 0x1f;
}
LAB_00062a30:
if ((int)uVar10 < iVar4) {
*(char *)(param_1 + 0x50db) = *(char *)(param_1 + 0x50db) + '\x01';
}
if (iVar4 < (int)uVar10) {
*(char *)(param_1 + 0x50db) = *(char *)(param_1 + 0x50db) + -1;
cVar3 = *(char *)(param_1 + 0x50db) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0x50db) //possible issue identified - semgrep
}
if (cVar3 < -0x1e) {
*(undefined1 *)(param_1 + 0x50db) = 0xe2;
bVar2 = *(byte *)(param_1 + 0xd6);
}
else {
bVar2 = *(byte *)(param_1 + 0xd6);
}
if ((int)(uint)bVar2 <= (int)*(char *)(param_1 + 0x50db)) {
*(byte *)(param_1 + 0x50db) = bVar2;
}
pcVar7 = TxPowerTuningTable + (*(char *)(param_1 + 0x50db) + 0x1e) * 2;
*(char *)(param_1 + 0x50dc) = *pcVar7;
*(char *)(param_1 + 0x50dd) = pcVar7[1];
RT30xxReadRFRegister(param_1,0x31,local_30);
local_30[0] = local_30[0] & 0xe0 | *(byte *)(param_1 + 0x50dc);
RT30xxWriteRFRegister(param_1,0x31,local_30[0]);
uVar8 = *(undefined1 *)(param_1 + 0x50dd);
if (2 < RTDebugLevel) {
printk("%s: desiredTSSI = %d, currentTSSI = %d, idxTxPowerTable = %d, {RF_TX_ALC = %d, MAC_PowerDelta = %d}\n"
,"AsicTxAlcGetAutoAgcOffset",iVar4,uVar10,(int)*(char *)(param_1 + 0x50db),(int)*pcVar7,
(int)pcVar7[1]);
}
LAB_00062b58:
*param_5 = uVar11;
*param_2 = 0;
*param_3 = uVar8;
return;
}