void RT5350_AsicTxAlcGetAutoAgcOffset
(int param_1,undefined1 *param_2,char *param_3,undefined4 param_4,byte *param_5)
{
byte bVar1;
char cVar2;
uint uVar3;
undefined1 *puVar4;
uint uVar5;
uint uVar6;
byte local_28;
byte local_27 [11];
local_27[0] = 0;
local_28 = 0;
cVar2 = '\0';
if ((*(uint *)(param_1 + 0x1f0f8) & 3) == 0) {
uVar3 = RT5350_GetDesiredTSSI(param_1,&local_28);
if (uVar3 == 0) {
return;
}
uVar6 = (uint)local_28 * 10000;
uVar5 = uVar3 >> 5;
if (2 < RTDebugLevel) {
printk("DesiredTSSI = %d, CurrentTSSI = %d (Range: %d ~ %d, BBP_R49=0x%X)\n",uVar3,uVar6,
uVar3 - uVar5,uVar5 + uVar3,(uint)local_28);
}
if (uVar6 < uVar3 - uVar5) {
*(char *)(param_1 + 0x50db) = *(char *)(param_1 + 0x50db) + '\x01';
}
if (uVar5 + uVar3 < uVar6) {
*(char *)(param_1 + 0x50db) = *(char *)(param_1 + 0x50db) + -1;
cVar2 = *(char *)(param_1 + 0x50db) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0x50db) //possible issue identified - semgrep
}
if (cVar2 < -0x1e) {
*(undefined1 *)(param_1 + 0x50db) = 0xe2;
bVar1 = *(byte *)(param_1 + 0xd6);
}
else {
bVar1 = *(byte *)(param_1 + 0xd6);
}
if ((int)(uint)bVar1 <= (int)*(char *)(param_1 + 0x50db)) {
*(byte *)(param_1 + 0x50db) = bVar1;
}
puVar4 = TxPowerTuningTable + (*(char *)(param_1 + 0x50db) + 0x1e) * 2;
*(undefined1 *)(param_1 + 0x50dc) = *puVar4;
*(undefined1 *)(param_1 + 0x50dd) = puVar4[1];
RT30xxReadRFRegister(param_1,0x31,local_27);
local_27[0] = local_27[0] & 0xc0 | *(byte *)(param_1 + 0x50dc);
RT30xxWriteRFRegister(param_1,0x31,local_27[0]);
if (2 < RTDebugLevel) {
printk("RF_R49 = 0x%X ",local_27[0]);
}
cVar2 = *(char *)(param_1 + 0x50dd) //possible issue identified - semgrep
if (2 < RTDebugLevel) {
printk("Current idxTxPowerTable = %d {RF_TX_ALC = 0x%X, MAC_PowerDelta = %d}\n",
*(char *)(param_1 + 0x50db) + 0x1e,(int)*(char *)(param_1 + 0x50dc),(int)cVar2);
}
}
*param_5 = local_28;
*param_2 = 0;
*param_3 = cVar2;
return;
}