undefined4 RT30xxWriteRFRegister(int param_1,uint param_2,uint param_3)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint uVar5;
  byte local_20 [8];
  
  param_2 = param_2 & 0xff;
  param_3 = param_3 & 0xff;
  if ((*(char *)(param_1 + 0xec) == '\x01') || (*(char *)(param_1 + 0x3a84) == '0')) {
    printk("ERROR!!! ");
    printk("RT30xxWriteRFRegister. Not allow to write RF 0x%x : fail\n",param_2);
    uVar3 = 1;
  }
  else {
    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"
             ,0x43);
    }
    iVar2 = 0;
    do {
      uVar4 = 0;
      if (*(char *)(param_1 + 0xec) == '\0') {
        uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x500);
      }
      if ((uVar4 & 0x20000) == 0) {
        if (iVar2 == 10) goto LAB_000b0354;
        break;
      }
      iVar2 = iVar2 + 1;
      if (iVar2 == 10) goto LAB_000b0354;
    } while ((*(uint *)(param_1 + 0x76904) & 0x100) == 0);
    if ((*(uint *)(param_1 + 0x76904) & 0x100) == 0) {
      uVar4 = uVar4 & 0xfffc00ff | 0x30000 | param_2 << 8;
      if ((*(char *)(param_1 + 0xac) == '\x01') && (param_2 == 0x11)) {
        RT30xxReadRFRegister(param_1,0x11,local_20);
        uVar5 = (uint)local_20[0];
        if (param_3 < uVar5) {
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          do {
            uVar4 = uVar4 & 0xffffff00 | uVar5;
            if (cVar1 == '\0') {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x500) = uVar4;
            }
            RtmpOsMsDelay(1);
            uVar5 = uVar5 - 1 & 0xff;
            cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          } while (param_3 < uVar5);
        }
        else {
          for (; uVar5 < param_3; uVar5 = uVar5 + 1 & 0xff) {
            uVar4 = uVar4 & 0xffffff00 | uVar5;
            if (*(char *)(param_1 + 0xec) == '\0') {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x500) = uVar4;
            }
            RtmpOsMsDelay(1);
          }
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        if (cVar1 != '\0') {
          return 0;
        }
        iVar2 = *(int *)(param_1 + 0xdc);
      }
      else {
        if (*(char *)(param_1 + 0xec) != '\0') {
          return 0;
        }
        iVar2 = *(int *)(param_1 + 0xdc);
      }
      *(uint *)(iVar2 + 0x500) = uVar4 & 0xffffff00 | param_3;
      uVar3 = 0;
    }
    else {
LAB_000b0354:
      uVar3 = 1;
      if (RTDebugLevel != 0) {
        printk("Retry count exhausted or device removed!!!\n");
        uVar3 = 1;
      }
    }
  }
  return uVar3;
}