void RT5350ATEAsicAdjustTxPower(int param_1)

{
  byte bVar1;
  char cVar2;
  bool bVar3;
  byte bVar4;
  char cVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  int iVar10;
  uint *puVar11;
  char *pcVar12;
  uint uVar13;
  int iVar14;
  int iVar15;
  uint local_60 [4];
  undefined4 local_50;
  byte local_40;
  byte local_3f [7];
  int local_38;
  uint local_34;
  uint local_30;
  
  local_40 = 0;
  local_3f[0] = 0;
  puVar11 = local_60;
  if ((*(uint *)(param_1 + 0x76a14) & 0x8000) == 0) {
    if (*(byte *)(param_1 + 0x76a38) < 0xf) {
      local_60[0] = *(uint *)(param_1 + 0x5070);
      local_60[1] = *(undefined4 *)(param_1 + 0x5074);
      local_60[3] = *(undefined4 *)(param_1 + 0x507c);
      local_60[2] = *(undefined4 *)(param_1 + 0x5078);
      local_50 = *(undefined4 *)(param_1 + 0x5080);
    }
    else {
      local_60[0] = *(uint *)(param_1 + 0x505c);
      local_60[1] = *(undefined4 *)(param_1 + 0x5060);
      local_60[3] = *(undefined4 *)(param_1 + 0x5068);
      local_60[2] = *(undefined4 *)(param_1 + 0x5064);
      local_50 = *(undefined4 *)(param_1 + 0x506c);
    }
  }
  else if (*(byte *)(param_1 + 0x76a38) < 0xf) {
    local_60[0] = *(uint *)(param_1 + 0x5098);
    local_60[1] = *(undefined4 *)(param_1 + 0x509c);
    local_60[3] = *(undefined4 *)(param_1 + 0x50a4);
    local_60[2] = *(undefined4 *)(param_1 + 0x50a0);
    local_50 = *(undefined4 *)(param_1 + 0x50a8);
  }
  else {
    local_60[0] = *(uint *)(param_1 + 0x5084);
    local_60[1] = *(undefined4 *)(param_1 + 0x5088);
    local_60[3] = *(undefined4 *)(param_1 + 0x5090);
    local_60[2] = *(undefined4 *)(param_1 + 0x508c);
    local_50 = *(undefined4 *)(param_1 + 0x5094);
  }
  iVar14 = 0;
  if (*(char *)(param_1 + 0x50ca) == '\x01') {
    uVar6 = RT5350_ATEGetDesiredTSSI(param_1,&local_40);
    uVar9 = (uint)local_40 * 10000;
    if (2 < RTDebugLevel) {
      printk("DesiredTSSI = %d, CurrentTSSI = %d (Range: %d ~ %d, BBP_R49=0x%X)\n",uVar6,uVar9,
             uVar6 - (uVar6 >> 2),(uVar6 >> 5) + uVar6,(uint)local_40);
    }
    if (uVar9 < uVar6 - (uVar6 >> 2)) {
      cVar5 = *(char *)(param_1 + 0x50db) + '\x01'   //possible issue identified - semgrep
LAB_000ae92c:
      bVar3 = false;
      *(char *)(param_1 + 0x50db) = cVar5;
    }
    else {
      bVar3 = true;
      if ((uVar6 >> 5) + uVar6 < uVar9) {
        cVar5 = *(char *)(param_1 + 0x50db) + -1   //possible issue identified - semgrep
        goto LAB_000ae92c;
      }
    }
    cVar5 = *(char *)((uint)*(byte *)(param_1 + 0x76a38) * 10 + param_1 + 0x4c1a) +
            *(char *)(param_1 + 0x50db)   //possible issue identified - semgrep
    if (cVar5 < -0x1e) {
      cVar5 = -0x1e   //possible issue identified - semgrep
    }
    iVar15 = (int)cVar5;
    if ((int)(uint)*(byte *)(param_1 + 0xd6) <= (int)cVar5) {
      iVar15 = (int)(char)*(byte *)(param_1 + 0xd6);
    }
    iVar14 = (iVar15 + 0x1e) * 2;
    *(undefined1 *)(param_1 + 0x50dc) = RT5350_TxPowerTuningTable[iVar14];
    *(undefined1 *)(param_1 + 0x50dd) = RT5350_TxPowerTuningTable[iVar14 + 1];
    if (!bVar3) {
      RT30xxReadRFRegister(param_1,0x31,local_3f);
      bVar1 = *(byte *)(param_1 + 0x50dc);
      bVar4 = local_3f[0] & 0xc0;
      local_3f[0] = bVar4 | bVar1;
      if (0x27 < (bVar1 & 0x3f)) {
        local_3f[0] = bVar4 | bVar1 & 0xc0 | 0x27;
      }
      RT30xxWriteRFRegister(param_1,0x31,local_3f[0]);
      if (2 < RTDebugLevel) {
        printk("RF_R49 = %u\n",local_3f[0]);
      }
    }
    if (2 < RTDebugLevel) {
      printk("Channel is %u, and Tx power = 0x%02x\n",(uint)*(byte *)(param_1 + 0x76a38),
             (int)*(char *)((uint)*(byte *)(param_1 + 0x76a38) * 10 + param_1 + 0x4c1a));
    }
    iVar14 = (int)*(char *)(param_1 + 0x50dd);
    if (2 < RTDebugLevel) {
      printk("Current index of tuning table = %d {RF_TX_ALC = 0x%02x, MAC_PowerDelta = %d}\n",
             iVar15 + 0x1e,(int)*(char *)(param_1 + 0x50dc),iVar14);
    }
    if (2 < RTDebugLevel) {
      printk(&_LC257)   //possible issue identified - semgrep
    }
  }
  if ((*(uint *)(param_1 + 0x1f0f8) & 3) == 0) {
    if (*(byte *)(param_1 + 0x76a38) < 0xf) {
      cVar5 = *(char *)(param_1 + 0x50bc)   //possible issue identified - semgrep
      bVar1 = *(byte *)(param_1 + 0x50bd);
      iVar8 = param_1 + 0x50c3;
      iVar10 = param_1 + 0x50be;
      cVar2 = *(char *)(param_1 + 0x50c8)   //possible issue identified - semgrep
      pcVar12 = (char *)(param_1 + 0x50c9);
    }
    else {
      cVar5 = *(char *)(param_1 + 0x50ae)   //possible issue identified - semgrep
      bVar1 = *(byte *)(param_1 + 0x50af);
      cVar2 = *(char *)(param_1 + 0x50ba)   //possible issue identified - semgrep
      iVar8 = param_1 + 0x50b5;
      iVar10 = param_1 + 0x50b0;
      pcVar12 = (char *)(param_1 + 0x50bb);
    }
    uVar6 = (uint)bVar1;
    iVar15 = 0;
    if (cVar5 != '\0') {
      iVar15 = 0;
      cVar5 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_000aeb58:
      uVar9 = 0;
      if (cVar5 == '\0') {
        uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar9 & 0x20000) != 0) {
LAB_000aebe4:
        iVar15 = iVar15 + 1;
        if (iVar15 == 100) goto LAB_000aebec;
        cVar5 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        goto LAB_000aeb58;
      }
      if (cVar5 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
      }
      iVar7 = 1;
      while( true ) {
        uVar9 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if (((uVar9 & 0x20000) == 0) || (iVar7 == 100)) break;
        iVar7 = iVar7 + 1;
      }
      if ((uVar9 & 0x2ff00) != 0x3100) goto LAB_000aebe4;
      local_40 = (byte)uVar9;
LAB_000aebec:
      if ((int)(uVar9 << 0xe) < 0) {
        if (RTDebugLevel == 0) {
          local_40 = *(byte *)(param_1 + 0x4afa);
        }
        else {
          local_30 = uVar6;
          printk("BBP read R%d fail\n",0x31);
          local_40 = *(byte *)(param_1 + 0x4afa);
          uVar6 = local_30;
        }
      }
      if (*(byte *)(iVar8 + 1) < local_40) {
        iVar7 = 2;
        if (((*(byte *)(iVar8 + 2) < local_40) && (iVar7 = 3, *(byte *)(iVar8 + 3) < local_40)) &&
           (iVar7 = 5, local_40 <= *(byte *)(iVar8 + 4))) {
          iVar7 = 4;
        }
        cVar5 = ('\x01' - (char)iVar7) * cVar2   //possible issue identified - semgrep
        *pcVar12 = cVar5;
        iVar15 = (int)cVar5;
        if (2 < RTDebugLevel) {
          iVar7 = iVar7 + -1;
          pcVar12 = "-- Tx Power, BBP R1=%x, TssiRef=%x, TxAgcStep=%x, step = -%d\n";
LAB_000aed3c:
          printk(pcVar12,local_40,uVar6,cVar2,iVar7);
          local_38 = 0;
          goto LAB_000aedc8;
        }
      }
      else if (local_40 < *(byte *)(iVar10 + 1)) {
        iVar7 = 2;
        if (((local_40 < *(byte *)(iVar10 + 2)) && (iVar7 = 3, local_40 < *(byte *)(iVar10 + 3))) &&
           (iVar7 = 5, *(byte *)(iVar10 + 4) <= local_40)) {
          iVar7 = 4;
        }
        iVar7 = iVar7 + -1;
        cVar5 = (char)iVar7 * cVar2   //possible issue identified - semgrep
        *pcVar12 = cVar5;
        iVar15 = (int)cVar5;
        if (2 < RTDebugLevel) {
          pcVar12 = "++ Tx Power, BBP R1=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n";
          goto LAB_000aed3c;
        }
      }
      else {
        *pcVar12 = '\0';
        if (RTDebugLevel < 3) {
          iVar15 = 0;
        }
        else {
          printk("   Tx Power, BBP R1=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n",local_40,uVar6,
                 cVar2,0);
          iVar15 = 0;
        }
      }
    }
  }
  else {
    if (*(byte *)(param_1 + 0x76a38) < 0xf) {
      cVar2 = *(char *)(param_1 + 0x50bc)   //possible issue identified - semgrep
      cVar5 = *(char *)(param_1 + 0x50c9)   //possible issue identified - semgrep
    }
    else {
      cVar2 = *(char *)(param_1 + 0x50ae)   //possible issue identified - semgrep
      cVar5 = *(char *)(param_1 + 0x50bb)   //possible issue identified - semgrep
    }
    iVar15 = (int)cVar5;
    if (cVar2 == '\0') {
      iVar15 = 0;
    }
  }
  local_38 = 0;
LAB_000aedc8:
  local_38 = 0;
  iVar8 = 0x1314;
  do {
    if (*puVar11 != 0xffffffff) {
      uVar6 = 0;
      local_34 = (uint)(iVar8 < 0x131d);
      do {
        uVar13 = uVar6 << 2;
        uVar9 = *puVar11 >> (uVar13 & 0x1f) & 0xf;
        if (*(char *)(param_1 + 0x50ca) == '\x01') {
          if (iVar8 == 0x131c) {
            if (((uVar6 != 0) && (uVar6 != 2)) && (uVar6 != 3)) goto LAB_000aee78;
          }
          else {
            if (local_34 != 0) {
              if (iVar8 != 0x1314) {
                if (iVar8 != 0x1318) goto LAB_000aeef4;
                if (uVar6 < 4) goto LAB_000aeedc;
              }
LAB_000aee78:
              iVar10 = uVar9 + iVar14;
              if (iVar10 < 0) goto LAB_000aef48;
              uVar9 = (int)(char)iVar10;
              if (0xe < iVar10) {
                uVar9 = 0xe;
              }
              goto LAB_000aef50;
            }
            if (iVar8 == 0x1320) {
              if ((((uVar6 != 0) && (uVar6 != 2)) && (uVar6 != 3)) && (3 < uVar6 - 4)) {
                if ((int)(uVar9 + iVar14) < 0) goto LAB_000aef48;
                if ((int)(uVar9 + iVar14) < 0xf) {
                  uVar9 = (int)(char)((char)uVar9 + (char)iVar14);
                }
                else {
                  uVar9 = 0xe;
                }
                goto LAB_000aef50;
              }
            }
            else if (iVar8 != 0x1324) {
LAB_000aeef4:
              printk("ERROR!!! ");
              printk("%s: unknown register = 0x%X\n","RT5350ATEAsicAdjustTxPower",iVar8);
              goto LAB_000aef50;
            }
          }
LAB_000aeedc:
          iVar10 = uVar9 + iVar14;
          if (iVar10 < 0) {
LAB_000aef48:
            uVar9 = 0;
          }
          else {
            uVar9 = (int)(char)iVar10;
            if (0xc < iVar10) {
              uVar9 = 0xc;
            }
          }
        }
        else {
          iVar10 = uVar9 + iVar15;
          if (iVar10 < 0) goto LAB_000aef48;
          uVar9 = 0xf;
          if (iVar10 < 0x10) {
            uVar9 = (int)(char)iVar10;
          }
        }
LAB_000aef50:
        uVar9 = uVar9 << (uVar13 & 0x1f) | ~(0xf << (uVar13 & 0x1f)) & *puVar11;
        uVar6 = uVar6 + 1;
        *puVar11 = uVar9;
      } while (uVar6 != 8);
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + local_38 * 4 + 0x1314) = uVar9;
      }
    }
    puVar11 = puVar11 + 1;
    local_38 = local_38 + 1;
    iVar8 = iVar8 + 4;
    if (local_38 == 5) {
      return;
    }
  } while( true );
}