void AsicTxAlcGetAutoAgcOffset
               (int param_1,undefined1 *param_2,undefined1 *param_3,undefined4 param_4,
               undefined1 *param_5)

{
  bool bVar1;
  byte bVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  undefined1 uVar8;
  uint uVar9;
  uint uVar10;
  undefined1 uVar11;
  uint uVar12;
  byte local_30 [8];
  
  local_30[0] = 0;
  uVar11 = 0;
  if ((*(uint *)(param_1 + 0x1f0f8) & 3) != 0) {
    uVar8 = 0;
    goto LAB_00062b58;
  }
  iVar4 = GetDesiredTSSI();
  uVar10 = Status;
  if (iVar4 == -1) {
    uVar8 = 0;
    goto LAB_00062b58;
  }
  if (*(char *)(param_1 + 0xec) == '\0') {
    if (*(int *)(param_1 + 0x29f8) != 4) {
      uVar9 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar9 = uVar10 & 1;
      }
      iVar6 = 0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      do {
        uVar10 = 0;
        if (cVar3 == '\0') {
          uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar10 & 0x20000) == 0) {
          if (cVar3 == '\0') {
            *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb3100;
          }
          AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
          RTMPusecDelay(1000);
          iVar5 = 1;
          do {
            uVar10 = 0;
            if (*(char *)(param_1 + 0xec) == '\0') {
              uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
            }
          } while (((uVar10 & 0x20000) != 0) && (bVar1 = iVar5 != 100, iVar5 = iVar5 + 1, bVar1));
          uVar12 = uVar10;
          if ((uVar10 & 0x2ff00) == 0x3100) goto LAB_000629b0;
        }
        iVar6 = iVar6 + 1;
        uVar12 = 0;
        if (iVar6 == 100) goto LAB_000629b0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      } while( true );
    }
    uVar9 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar9 = uVar10 & 1;
    }
    iVar6 = 0;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    do {
      uVar10 = 0;
      if (cVar3 == '\0') {
        uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar10 & 0x20000) == 0) {
        if (cVar3 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
        }
        iVar5 = 1;
        while( true ) {
          uVar10 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar10 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if (((uVar10 & 0x20000) == 0) || (iVar5 == 100)) break;
          iVar5 = iVar5 + 1;
        }
        uVar12 = uVar10;
        if ((uVar10 & 0x2ff00) == 0x3100) goto LAB_00062870;
      }
      iVar6 = iVar6 + 1;
      uVar12 = 0;
      if (iVar6 == 100) goto LAB_00062870;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    } while( true );
  }
  uVar10 = 0;
  uVar11 = 0;
  goto LAB_00062a30;
LAB_000629b0:
  if ((int)(uVar10 << 0xe) < 0) {
    printk("ERROR!!! ");
    printk("BBP(viaMCU=%d) read R%d fail\n",1,0x31);
    uVar12 = (uint)*(byte *)(param_1 + 0x4afa);
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
    }
    goto LAB_00062a08;
  }
  cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  goto LAB_00062a0c;
LAB_00062870:
  if ((int)(uVar10 << 0xe) < 0) {
    printk("ERROR!!! ");
    printk("BBP(viaMCU=%d) read R%d fail\n",0,0x31);
    uVar12 = (uint)*(byte *)(param_1 + 0x4afa);
LAB_00062a08:
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
LAB_00062a0c:
  uVar11 = (undefined1)uVar12;
  uVar10 = uVar12 & 0x1f;
  if (cVar3 == '\x01') {
    Status = Status & 0xfffffffe;
    if (uVar9 != 0) {
      Status = Status | 1;
    }
    uVar10 = uVar12 & 0x1f;
  }
LAB_00062a30:
  if ((int)uVar10 < iVar4) {
    *(char *)(param_1 + 0x50db) = *(char *)(param_1 + 0x50db) + '\x01';
  }
  if (iVar4 < (int)uVar10) {
    *(char *)(param_1 + 0x50db) = *(char *)(param_1 + 0x50db) + -1;
    cVar3 = *(char *)(param_1 + 0x50db)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0x50db)   //possible issue identified - semgrep
  }
  if (cVar3 < -0x1e) {
    *(undefined1 *)(param_1 + 0x50db) = 0xe2;
    bVar2 = *(byte *)(param_1 + 0xd6);
  }
  else {
    bVar2 = *(byte *)(param_1 + 0xd6);
  }
  if ((int)(uint)bVar2 <= (int)*(char *)(param_1 + 0x50db)) {
    *(byte *)(param_1 + 0x50db) = bVar2;
  }
  pcVar7 = TxPowerTuningTable + (*(char *)(param_1 + 0x50db) + 0x1e) * 2;
  *(char *)(param_1 + 0x50dc) = *pcVar7;
  *(char *)(param_1 + 0x50dd) = pcVar7[1];
  RT30xxReadRFRegister(param_1,0x31,local_30);
  local_30[0] = local_30[0] & 0xe0 | *(byte *)(param_1 + 0x50dc);
  RT30xxWriteRFRegister(param_1,0x31,local_30[0]);
  uVar8 = *(undefined1 *)(param_1 + 0x50dd);
  if (2 < RTDebugLevel) {
    printk("%s: desiredTSSI = %d, currentTSSI = %d, idxTxPowerTable = %d, {RF_TX_ALC = %d, MAC_PowerDelta = %d}\n"
           ,"AsicTxAlcGetAutoAgcOffset",iVar4,uVar10,(int)*(char *)(param_1 + 0x50db),(int)*pcVar7,
           (int)pcVar7[1]);
  }
LAB_00062b58:
  *param_5 = uVar11;
  *param_2 = 0;
  *param_3 = uVar8;
  return;
}