undefined4 RT30xxReadRFRegister(int param_1,uint param_2,undefined1 *param_3)
{
char cVar1;
uint uVar2;
int iVar3;
int iVar4;
param_2 = param_2 & 0xff;
if ((*(char *)(param_1 + 0xec) == '\x01') || (*(char *)(param_1 + 0x3a84) == '0')) {
printk("ERROR!!! ");
printk("RT30xxReadRFRegister. Not allow to read RF 0x%x : fail\n",param_2);
return 1;
}
if (*(uint *)(param_1 + 0xa4) < param_2) {
printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/common/rt_rf.c:%d assert (regID <= pAd->chipCap.MaxNumOfRfId)failed\n"
,0xa3);
}
iVar4 = 0;
iVar3 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x500);
}
if ((uVar2 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x500) = param_2 << 8 | 0x20000;
}
iVar3 = 0;
do {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x500);
}
} while (((uVar2 & 0x20000) != 0) && (iVar3 = iVar3 + 1, iVar3 != 100));
if (((uVar2 & 0x20000) == 0) && ((uVar2 << 0x10) >> 0x18 == param_2)) {
*param_3 = (char)uVar2;
LAB_000b01d8:
if (-1 < (int)(uVar2 << 0xe)) {
return 0;
}
printk("ERROR!!! ");
printk("RF read R%d=0x%X fail, i[%d], k[%d]\n",param_2,uVar2,iVar4,iVar3);
return 1;
}
}
iVar4 = iVar4 + 1;
if (iVar4 == 100) goto LAB_000b01d8;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while( true );
}