void AsicVCORecalibration(int param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  byte local_30 [8];
  
  uVar4 = Status;
  if (*(char *)(param_1 + 0x76a0c) != -0x80) {
    return;
  }
  if (*(char *)(param_1 + 0xd8) == '\0') {
    return;
  }
  if (*(char *)(param_1 + 0x50ca) == '\x01') {
    uVar3 = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar6 = uVar4 & 1;
        }
        iVar5 = 0;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar4 = 0;
          if (cVar1 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar4 & 0x20000) == 0) {
            if (cVar1 == '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
            }
            iVar2 = 1;
            while( true ) {
              uVar4 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
              }
              if (((uVar4 & 0x20000) == 0) || (iVar2 == 100)) break;
              iVar2 = iVar2 + 1;
            }
            if ((uVar4 & 0x2ff00) == 0x2f00) {
              uVar3 = uVar4 & 0xff;
              goto LAB_00050b2c;
            }
          }
          iVar5 = iVar5 + 1;
          if (iVar5 == 100) break;
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar3 = 0;
LAB_00050b2c:
        if ((int)(uVar4 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",0,0x2f);
          uVar3 = (uint)*(byte *)(param_1 + 0x4af8);
LAB_00050cc0:
          cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
      else {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar6 = uVar4 & 1;
        }
        iVar5 = 0;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar4 = 0;
          if (cVar1 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar4 & 0x20000) == 0) {
            if (cVar1 == '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb2f00;
            }
            AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
            RTMPusecDelay(1000);
            iVar2 = 1;
            while( true ) {
              uVar4 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
              }
              if (((uVar4 & 0x20000) == 0) || (iVar2 == 100)) break;
              iVar2 = iVar2 + 1;
            }
            if ((uVar4 & 0x2ff00) == 0x2f00) {
              uVar3 = uVar4 & 0xff;
              goto LAB_00050c68;
            }
          }
          iVar5 = iVar5 + 1;
          if (iVar5 == 100) break;
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar3 = 0;
LAB_00050c68:
        if ((int)(uVar4 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",1,0x2f);
          uVar3 = (uint)*(byte *)(param_1 + 0x4af8);
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
                 *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
          }
          goto LAB_00050cc0;
        }
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      if (cVar1 == '\x01') {
        Status = Status & 0xfffffffe;
        if (uVar6 != 0) {
          Status = Status | 1;
        }
        goto LAB_00050ce4;
      }
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    else {
LAB_00050ce4:
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar4 = Status;
    if (cVar1 == '\0') {
      uVar3 = uVar3 & 0xfc;
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar6 = uVar4 & 1;
        }
        iVar5 = 1;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar4 = 0;
          if (cVar1 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar4 & 0x20000) == 0) break;
          iVar5 = iVar5 + 1;
          printk(&_LC28)   //possible issue identified - semgrep
          if (iVar5 == 100) goto LAB_00050dbc;
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        if (cVar1 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar3 | 0xa2f00;
        }
        *(char *)(param_1 + 0x4af8) = (char)uVar3;
        if (iVar5 != 100) goto LAB_00050ddc;
LAB_00050dbc:
        printk("ERROR!!! ");
        printk("BBP write R%d fail\n",0x2f);
LAB_00050ddc:
        if (*(char *)(param_1 + 0xad) == '\x01') {
LAB_00050f94:
          Status = Status & 0xfffffffe;
          if (uVar6 != 0) {
            Status = Status | 1;
          }
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        else {
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
      }
      else {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar6 = uVar4 & 1;
        }
        iVar5 = 1;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar4 = 0;
          if (cVar1 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar4 & 0x20000) == 0) break;
          iVar2 = iVar5 % 0x14;
          iVar5 = iVar5 + 1;
          if ((iVar2 == 0) && (cVar1 == '\0')) {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 & 0xfffdffff;
          }
          printk(&_LC28)   //possible issue identified - semgrep
          if (iVar5 == 100) goto LAB_00050f38;
          cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        if (cVar1 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 | 0xa2f00;
        }
        iVar2 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
        if (*(char *)(param_1 + 0x16964) == '\x01') {
          RTMPusecDelay(1000);
        }
        if ((iVar2 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 | 0x82f00;
        }
        *(char *)(param_1 + 0x4af8) = (char)uVar3;
        if (iVar5 != 100) goto LAB_00050f80;
LAB_00050f38:
        printk("ERROR!!! ");
        printk("BBP write R%d fail\n",0x2f);
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
               *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_00050f80:
          cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        if (cVar1 == '\x01') goto LAB_00050f94;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
    }
    else {
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
  }
  else {
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  local_30[0] = 0;
  if (cVar1 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1328) =
         *(uint *)(*(int *)(param_1 + 0xdc) + 0x1328) & 0xfcfffff0;
  }
  RT30xxReadRFRegister(param_1,3,local_30);
  local_30[0] = local_30[0] & 0x7f | 0x80;
  RT30xxWriteRFRegister(param_1,3,local_30[0]);
  RtmpOsMsDelay(1);
  uVar4 = 0;
  if (*(char *)(param_1 + 0xec) == '\0') {
    uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1328);
  }
  if (*(byte *)(param_1 + 0x169ec) < 0xf) {
    uVar3 = *(uint *)(param_1 + 0x4bf4) & 0xf0;
    if (uVar3 == 0x10) {
      uVar4 = uVar4 | 2;
      goto LAB_000510c0;
    }
    if (uVar3 == 0x20) {
      uVar4 = uVar4 | 10;
      goto LAB_000510c0;
    }
    if (uVar3 != 0x30) goto LAB_000510c0;
    uVar3 = 0x200000a;
  }
  else {
    uVar3 = *(uint *)(param_1 + 0x4bf4) & 0xf0;
    if (uVar3 == 0x10) {
      uVar4 = uVar4 | 1;
      goto LAB_000510c0;
    }
    if (uVar3 == 0x20) {
      uVar4 = uVar4 | 5;
      goto LAB_000510c0;
    }
    if (uVar3 != 0x30) goto LAB_000510c0;
    uVar3 = 0x1000005;
  }
  uVar4 = uVar4 | uVar3;
LAB_000510c0:
  if (*(char *)(param_1 + 0xec) == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1328) = uVar4;
  }
  return;
}