void AsicGetAutoAgcOffset(int param_1,char *param_2,undefined1 *param_3,char *param_4,byte *param_5)

{
  bool bVar1;
  byte bVar2;
  char cVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  char *pcVar7;
  int iVar8;
  uint uVar9;
  char *pcVar10;
  int iVar11;
  int iVar12;
  char local_38 [4];
  byte local_34;
  undefined1 local_33 [3];
  uint local_30;
  
  local_38[0] = '\0';
  local_33[0] = 0;
  local_34 = 0;
  if (*(char *)(param_1 + 0x50ca) == '\x01') {
    if (*(code **)(param_1 + 0x6c) != (code *)0x0) {
      (**(code **)(param_1 + 0x6c))(param_1,local_38,local_33,0,&local_34);
    }
  }
  uVar5 = Status;
  if ((*(uint *)(param_1 + 0x1f0f8) & 3) != 0) {
    if (*(byte *)(param_1 + 0x169ec) < 0xf) {
      cVar4 = *(char *)(param_1 + 0x50c9)   //possible issue identified - semgrep
      cVar3 = *(char *)(param_1 + 0x50bc)   //possible issue identified - semgrep
      pcVar10 = (char *)(param_1 + 0x50c9);
    }
    else {
      cVar4 = *(char *)(param_1 + 0x50bb)   //possible issue identified - semgrep
      cVar3 = *(char *)(param_1 + 0x50ae)   //possible issue identified - semgrep
      pcVar10 = (char *)(param_1 + 0x50bb);
    }
    if (cVar3 != '\0') {
      local_38[0] = cVar4 + local_38[0];
    }
    goto LAB_0005098c;
  }
  if (*(byte *)(param_1 + 0x169ec) < 0xf) {
    bVar2 = *(byte *)(param_1 + 0x50bd);
    cVar4 = *(char *)(param_1 + 0x50bc)   //possible issue identified - semgrep
    iVar11 = param_1 + 0x50c3;
    iVar12 = param_1 + 0x50be;
    cVar3 = *(char *)(param_1 + 0x50c8)   //possible issue identified - semgrep
    pcVar10 = (char *)(param_1 + 0x50c9);
  }
  else {
    bVar2 = *(byte *)(param_1 + 0x50af);
    cVar4 = *(char *)(param_1 + 0x50ae)   //possible issue identified - semgrep
    cVar3 = *(char *)(param_1 + 0x50ba)   //possible issue identified - semgrep
    iVar11 = param_1 + 0x50b5;
    iVar12 = param_1 + 0x50b0;
    pcVar10 = (char *)(param_1 + 0x50bb);
  }
  local_30 = (uint)bVar2;
  if (cVar4 == '\0') goto LAB_0005098c;
  if (*(char *)(param_1 + 0xec) == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar9 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar9 = uVar5 & 1;
      }
      iVar8 = 0;
      cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00050594:
      uVar5 = 0;
      if (cVar4 == '\0') {
        uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar5 & 0x20000) != 0) {
LAB_00050620:
        iVar8 = iVar8 + 1;
        if (iVar8 == 100) goto LAB_00050628;
        cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        goto LAB_00050594;
      }
      if (cVar4 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
      }
      iVar6 = 1;
      while( true ) {
        uVar5 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if (((uVar5 & 0x20000) == 0) || (iVar6 == 100)) break;
        iVar6 = iVar6 + 1;
      }
      if ((uVar5 & 0x2ff00) != 0x3100) goto LAB_00050620;
      local_34 = (byte)uVar5;
LAB_00050628:
      if ((int)(uVar5 << 0xe) < 0) {
        printk("ERROR!!! ");
        printk("BBP(viaMCU=%d) read R%d fail\n",0,0x31);
        local_34 = *(byte *)(param_1 + 0x4afa);
LAB_000507c8:
        cVar4 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar4 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
    else {
      uVar9 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar9 = uVar5 & 1;
      }
      iVar8 = 0;
      cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00050690:
      uVar5 = 0;
      if (cVar4 == '\0') {
        uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
      }
      if ((uVar5 & 0x20000) != 0) {
LAB_00050760:
        iVar8 = iVar8 + 1;
        if (iVar8 == 100) goto LAB_0005076c;
        cVar4 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        goto LAB_00050690;
      }
      if (cVar4 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb3100;
      }
      AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
      RTMPusecDelay(1000);
      iVar6 = 1;
      do {
        uVar5 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
      } while (((uVar5 & 0x20000) != 0) && (bVar1 = iVar6 != 100, iVar6 = iVar6 + 1, bVar1));
      if ((uVar5 & 0x2ff00) != 0x3100) goto LAB_00050760;
      local_34 = (byte)uVar5;
LAB_0005076c:
      if ((int)(uVar5 << 0xe) < 0) {
        printk("ERROR!!! ");
        printk("BBP(viaMCU=%d) read R%d fail\n",1,0x31);
        local_34 = *(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_000507c8;
      }
      cVar4 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    if ((cVar4 == '\x01') && (Status = Status & 0xfffffffe, uVar9 != 0)) {
      Status = Status | 1;
    }
  }
  if (*(byte *)(iVar11 + 1) < local_34) {
    iVar8 = 2;
    if (((*(byte *)(iVar11 + 2) < local_34) && (iVar8 = 3, *(byte *)(iVar11 + 3) < local_34)) &&
       (iVar8 = 5, local_34 <= *(byte *)(iVar11 + 4))) {
      iVar8 = 4;
    }
    cVar4 = ('\x01' - (char)iVar8) * cVar3   //possible issue identified - semgrep
    *pcVar10 = cVar4;
    local_38[0] = cVar4 + local_38[0];
    if (RTDebugLevel < 3) goto LAB_0005098c;
    iVar8 = iVar8 + -1;
    pcVar7 = "-- Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = -%d\n";
  }
  else if (local_34 < *(byte *)(iVar12 + 1)) {
    iVar8 = 2;
    if (((local_34 < *(byte *)(iVar12 + 2)) && (iVar8 = 3, local_34 < *(byte *)(iVar12 + 3))) &&
       (iVar8 = 5, *(byte *)(iVar12 + 4) <= local_34)) {
      iVar8 = 4;
    }
    iVar8 = iVar8 + -1;
    cVar4 = (char)iVar8 * cVar3   //possible issue identified - semgrep
    *pcVar10 = cVar4;
    local_38[0] = cVar4 + local_38[0];
    if (RTDebugLevel < 3) goto LAB_0005098c;
    pcVar7 = "++ Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n";
  }
  else {
    *pcVar10 = '\0';
    if (RTDebugLevel < 3) goto LAB_0005098c;
    pcVar7 = "   Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n";
    iVar8 = 0;
  }
  printk(pcVar7,local_34,local_30,cVar3,iVar8);
LAB_0005098c:
  *param_5 = local_34;
  *param_2 = local_38[0];
  *param_3 = local_33[0];
  *param_4 = *pcVar10;
  return;
}