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 );
}