void RT5350_InitDesiredTSSITable(int param_1)

{
  char cVar1;
  bool bVar2;
  byte bVar3;
  code *pcVar4;
  byte *pbVar5;
  int iVar6;
  char *pcVar7;
  uint uVar8;
  int iVar9;
  uint *puVar10;
  uint uVar11;
  uint *puVar12;
  byte local_40 [2];
  ushort local_3e;
  ushort local_3c;
  ushort local_3a;
  ushort local_38;
  short local_36;
  ushort local_34;
  ushort local_32;
  uint local_30;
  
  local_3e = 0;
  local_3c = 0;
  local_40[0] = 0;
  local_3a = 0;
  local_38 = 0;
  local_36 = 0;
  local_34 = 0;
  local_32 = 0;
  if (*(char *)(param_1 + 0x50ca) == '\0') {
    printk("pAd->TxPowerCtrl.bInternalTxALC == FALSE !\n");
    return;
  }
  if (RTDebugLevel < 3) {
    pcVar4 = *(code **)(param_1 + 0x10);
  }
  else {
    printk("---> %s\n","RT5350_InitDesiredTSSITable");
    pcVar4 = *(code **)(param_1 + 0x10);
  }
  (*pcVar4)(param_1,0x50,&local_32);
  uVar8 = (uint)local_32;
  local_30 = uVar8 & 0x3f;
  if ((uVar8 & 0xff) == 0xff) {
    if (RTDebugLevel < 3) {
      local_30 = 0;
    }
    else {
      printk("%s: 20/40M BW Delta Power is disabled since EEPROM is not calibrated.\n",
             "RT5350_InitDesiredTSSITable");
      local_30 = 0;
    }
  }
  else if ((uVar8 & 0xc0) != 0xc0) {
    if ((uVar8 & 0xc0) == 0x80) {
      local_30 = (uint)(char)-((byte)local_32 & 0x3f);
    }
    else if (RTDebugLevel < 3) {
      local_30 = 0;
    }
    else {
      printk("%s: 20/40M BW Delta Power is not enabled, Value = 0x%X\n",
             "RT5350_InitDesiredTSSITable");
      local_30 = 0;
    }
  }
  (**(code **)(param_1 + 0x10))(param_1,0x76,&local_34);
  if ((int)((uint)local_34 << 0x15) < 0) {
    *(code **)(param_1 + 100) = TSSIRatioDot7;
    if (RTDebugLevel < 3) {
      pcVar4 = *(code **)(param_1 + 0x10);
      goto LAB_000c43dc;
    }
    pcVar7 = "%s : slope of TSSI is 0.7\n";
  }
  else {
    *(code **)(param_1 + 100) = TSSIRatioDot85;
    if (RTDebugLevel < 3) {
      pcVar4 = *(code **)(param_1 + 0x10);
      goto LAB_000c43dc;
    }
    pcVar7 = "%s : slope of TSSI is 0.85\n";
  }
  printk(pcVar7,"RT5350_InitDesiredTSSITable");
  pcVar4 = *(code **)(param_1 + 0x10);
LAB_000c43dc:
  (*pcVar4)(param_1,0x6e,&local_3e);
  local_3e = local_3e & 0x3f;
  TSSI_x._0_2_ = CONCAT11((char)local_3e,(byte)TSSI_x);
  (**(code **)(param_1 + 0x10))(param_1,0x6e,&local_3c);
  TSSI_Set = TSSI_Set & 0xfff0f0ff | (local_3c >> 8 & 0xf) << 8 | (uint)(local_3c >> 0xc) << 0x10;
  (**(code **)(param_1 + 0x10))(param_1,0x70,&local_3c);
  TSSI_Set = TSSI_Set & 0xf0ffffff | (local_3c & 0xf) << 0x18;
  DAT_000e4ec4 = DAT_000e4ec4 & 0xfff0f0f0 | local_3c >> 4 & 0xf | (local_3c >> 8 & 0xf) << 8 |
                 (uint)(local_3c >> 0xc) << 0x10;
  (**(code **)(param_1 + 0x10))(param_1,0x72,&local_3c);
  DAT_000e4ec4 = DAT_000e4ec4 & 0xf0ffffff | (local_3c & 0xf) << 0x18;
  DAT_000e4ec8 = DAT_000e4ec8 & 0xfff0f0f0 | local_3c >> 4 & 0xf | (local_3c >> 8 & 0xf) << 8 |
                 (uint)(local_3c >> 0xc) << 0x10;
  (**(code **)(param_1 + 0x10))(param_1,0x74,&local_3c);
  DAT_000e4ecc = DAT_000e4ecc & 0xfff0f0f0 | local_3c >> 4 & 0xf | (local_3c >> 8 & 0xf) << 8 |
                 (uint)(local_3c >> 0xc) << 0x10;
  DAT_000e4ec8 = DAT_000e4ec8 & 0xf0ffffff | (local_3c & 0xf) << 0x18;
  pbVar5 = (byte *)((int)&TSSI_Set + 1);
  iVar6 = 1;
  do {
    iVar9 = iVar6 + 1;
    printk("Channel %d TSSI delta=%d\n",iVar6,(int)((uint)*pbVar5 << 0x1c) >> 0x1c);
    pbVar5 = (byte *)((int)&TSSI_Set + iVar6 + 1);
    iVar6 = iVar9;
  } while (iVar9 != 0xf);
  TSSI_x = CONCAT31(TSSI_x._1_3_,
                    (byte)TSSI_x & 0xf0 |
                    (byte)((int)((uint)*(byte *)((int)&TSSI_Set + (uint)*(byte *)(param_1 + 0x169ec)
                                                ) << 0x1c) >> 0x1c) & 0xf);
  (**(code **)(param_1 + 0x10))(param_1,0xe2,&local_38);
  uVar8 = (uint)local_38;
  local_38 = (ushort)((uVar8 << 0x14) >> 0x1c);
  printk("TSSIBase(0x6E) = %X, TxPowerOFDM54 = %X\n",local_3e,(uVar8 << 0x14) >> 0x1c);
  (**(code **)(param_1 + 0x10))(param_1,0xde,&local_3a);
  local_3a = local_3a & 0xf;
  printk("EEPROM_CCK_MCS0_MCS1(0xDE) = 0x%X\n",local_3a);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    (((uint)local_3a + ((TSSI_x << 0x1c) >> 0x1c) + 3) - (uint)local_38);
  RT5350_desiredTSSIOverCCK = iVar6 * uVar8;
  puVar10 = &RT5350_desiredTSSIOverCCK;
  DAT_000e4e14 = RT5350_desiredTSSIOverCCK;
  (**(code **)(param_1 + 0x10))(param_1,0xde,&local_3a);
  uVar8 = (uint)local_3a;
  local_3a = (ushort)((uVar8 << 0x14) >> 0x1c);
  printk("EEPROM_CCK_MCS2_MCS3(0xDF) = 0x%X\n",(uVar8 << 0x14) >> 0x1c);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    (((uint)local_3a + ((TSSI_x << 0x1c) >> 0x1c) + 3) - (uint)local_38);
  DAT_000e4e18 = iVar6 * uVar8;
  uVar8 = RT5350_desiredTSSIOverCCK;
  iVar6 = 0;
  DAT_000e4e1c = DAT_000e4e18;
  while( true ) {
    if (0x12ebc0 < uVar8) {
      *puVar10 = 0x12ebc0;
    }
    uVar8 = *puVar10;
    puVar10 = puVar10 + 1;
    printk("RT5350_desiredTSSIOverCCK[%d] = %d\n",iVar6,uVar8);
    if (iVar6 + 1 == 4) break;
    uVar8 = *puVar10;
    iVar6 = iVar6 + 1;
  }
  (**(code **)(param_1 + 0x10))(param_1,0xe0,&local_3a);
  local_3a = local_3a & 0xf;
  printk("EEPROM_OFDM_MCS0_MCS1(0xE0) = 0x%X\n",local_3a);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  RT5350_desiredTSSIOverOFDM = iVar6 * uVar8;
  puVar10 = &RT5350_desiredTSSIOverOFDM;
  DAT_000e4e24 = RT5350_desiredTSSIOverOFDM;
  (**(code **)(param_1 + 0x10))(param_1,0xe0,&local_3a);
  uVar8 = (uint)local_3a;
  local_3a = (ushort)((uVar8 << 0x14) >> 0x1c);
  printk("EEPROM_OFDM_MCS2_MCS3(0xE1) = 0x%X\n",(uVar8 << 0x14) >> 0x1c);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  DAT_000e4e28 = iVar6 * uVar8;
  DAT_000e4e2c = DAT_000e4e28;
  (**(code **)(param_1 + 0x10))(param_1,0xe2,&local_3a);
  local_3a = local_3a & 0xf;
  printk("EEPROM_OFDM_MCS4_MCS5(0xE2) = 0x%X\n",local_3a);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  DAT_000e4e30 = iVar6 * uVar8;
  DAT_000e4e34 = DAT_000e4e30;
  (**(code **)(param_1 + 0x10))(param_1,0xe2,&local_3a);
  uVar8 = (uint)local_3a;
  local_3a = (ushort)((uVar8 << 0x14) >> 0x1c);
  printk("EEPROM_OFDM_MCS6_MCS7(0xE3) = 0x%X\n",(uVar8 << 0x14) >> 0x1c);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))(0);
  DAT_000e4e38 = iVar6 * uVar8;
  uVar8 = RT5350_desiredTSSIOverOFDM;
  iVar6 = 0;
  DAT_000e4e3c = DAT_000e4e38;
  while( true ) {
    if (0x12ebc0 < uVar8) {
      *puVar10 = 0x12ebc0;
    }
    uVar8 = *puVar10;
    puVar10 = puVar10 + 1;
    printk("RT5350_desiredTSSIOverOFDM[%d] = %d\n",iVar6,uVar8);
    if (iVar6 + 1 == 8) break;
    uVar8 = *puVar10;
    iVar6 = iVar6 + 1;
  }
  (**(code **)(param_1 + 0x10))(param_1,0xe4,&local_3a);
  local_3a = local_3a & 0xf;
  printk("EEPROM_HT_MCS0_MCS1(0xE4) = 0x%X\n",local_3a);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  RT5350_desiredTSSIOverHT = iVar6 * uVar8;
  puVar12 = (uint *)&RT5350_desiredTSSIOverHT;
  uVar8 = (uint)local_3e;
  DAT_000e4e44 = RT5350_desiredTSSIOverHT;
  iVar6 = (**(code **)(param_1 + 100))
                    (((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38) + local_30);
  RT5350_desiredTSSIOverHT40 = iVar6 * uVar8;
  puVar10 = (uint *)&RT5350_desiredTSSIOverHT40;
  DAT_000e4e84 = RT5350_desiredTSSIOverHT40;
  (**(code **)(param_1 + 0x10))(param_1,0xe4,&local_3a);
  uVar8 = (uint)local_3a;
  local_3a = (ushort)((uVar8 << 0x14) >> 0x1c);
  printk("EEPROM_HT_MCS2_MCS3(0xE5) = 0x%X\n",(uVar8 << 0x14) >> 0x1c);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  DAT_000e4e48 = iVar6 * uVar8;
  uVar8 = (uint)local_3e;
  DAT_000e4e4c = DAT_000e4e48;
  iVar6 = (**(code **)(param_1 + 100))
                    (((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38) + local_30);
  DAT_000e4e88 = iVar6 * uVar8;
  DAT_000e4e8c = DAT_000e4e88;
  (**(code **)(param_1 + 0x10))(param_1,0xe6,&local_3a);
  local_3a = local_3a & 0xf;
  printk("EEPROM_HT_MCS4_MCS5(0xE6) = 0x%X\n",local_3a);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  DAT_000e4e50 = iVar6 * uVar8;
  uVar8 = (uint)local_3e;
  DAT_000e4e54 = DAT_000e4e50;
  iVar6 = (**(code **)(param_1 + 100))
                    (((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38) + local_30);
  DAT_000e4e90 = iVar6 * uVar8;
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((uint)local_3a + ((TSSI_x << 0x1c) >> 0x1c) + -1) - (uint)local_38) +
                     local_30);
  DAT_000e4e94 = iVar6 * uVar8;
  (**(code **)(param_1 + 0x10))(param_1,0xe6,&local_3a);
  uVar8 = (uint)local_3a;
  local_3a = (ushort)((uVar8 << 0x14) >> 0x1c);
  printk("EEPROM_HT_MCS6_MCS7(0xE7) = 0x%X\n",(uVar8 << 0x14) >> 0x1c);
  uVar8 = (uint)local_3e;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((TSSI_x << 0x1c) >> 0x1c) + (uint)local_3a) - (uint)local_38);
  DAT_000e4e58 = iVar6 * uVar8;
  uVar8 = (uint)local_3e;
  DAT_000e4e5c = DAT_000e4e58;
  iVar6 = (**(code **)(param_1 + 100))
                    ((((uint)local_3a + ((TSSI_x << 0x1c) >> 0x1c) + -1) - (uint)local_38) +
                     local_30);
  DAT_000e4e98 = iVar6 * uVar8;
  iVar6 = 0;
  DAT_000e4e9c = DAT_000e4e98;
  do {
    bVar2 = 2 < RTDebugLevel;
    if (0x12ebc0 < *puVar12) {
      *puVar12 = 0x12ebc0;
    }
    if (0x12ebc0 < *puVar10) {
      *puVar10 = 0x12ebc0;
    }
    if (bVar2) {
      printk("desiredTSSIOverHT[%d] = %d\n",iVar6,*puVar12);
    }
    puVar12 = puVar12 + 1;
    if (2 < RTDebugLevel) {
      printk("desiredTSSIOverHT40[%d] = %d\n",iVar6,*puVar10);
    }
    iVar6 = iVar6 + 1;
    puVar10 = puVar10 + 1;
  } while (iVar6 != 8);
  (**(code **)(param_1 + 0x10))(param_1,0x76,&local_36);
  bVar3 = 3;
  if (local_36 != 0) {
    if (local_36 == 0xff) {
      bVar3 = 3;
    }
    else {
      bVar3 = (byte)local_36 & 0xc | (byte)local_36 & 3 | local_40[0];
    }
  }
  local_40[0] = bVar3;
  RT30xxWriteRFRegister(param_1,0x1b,bVar3);
  local_40[0] = 0;
  RT30xxWriteRFRegister(param_1,0x1c,0);
  RT30xxReadRFRegister(param_1,0x1d,local_40);
  local_40[0] = 0;
  RT30xxWriteRFRegister(param_1,0x1d,0);
  uVar8 = Status;
  if (*(char *)(param_1 + 0xec) == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar11 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar11 = uVar8 & 1;
      }
      iVar6 = 1;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar8 = 0;
        if (cVar1 == '\0') {
          uVar8 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar8 & 0x20000) == 0) break;
        iVar6 = iVar6 + 1;
        printk(&_LC5)   //possible issue identified - semgrep
        if (iVar6 == 100) goto LAB_000c4d98;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar1 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa2f90;
      }
      *(undefined1 *)(param_1 + 0x4af8) = 0x90;
      if (iVar6 != 100) {
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        goto joined_r0x000c4f74;
      }
LAB_000c4d98:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x2f);
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      uVar11 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar11 = uVar8 & 1;
      }
      iVar6 = 1;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar8 = 0;
        if (cVar1 == '\0') {
          uVar8 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar8 & 0x20000) == 0) break;
        iVar9 = iVar6 % 0x14;
        iVar6 = iVar6 + 1;
        if ((iVar9 == 0) && (cVar1 == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar8 & 0xfffdffff;
        }
        printk(&_LC5)   //possible issue identified - semgrep
        if (iVar6 == 100) goto LAB_000c4f24;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar1 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa2f90;
      }
      iVar9 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
      if (*(char *)(param_1 + 0x16964) == '\x01') {
        RTMPusecDelay(1000);
      }
      if ((iVar9 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x82f90;
      }
      *(undefined1 *)(param_1 + 0x4af8) = 0x90;
      if (iVar6 != 100) {
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        goto joined_r0x000c4f74;
      }
LAB_000c4f24:
      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;
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
joined_r0x000c4f74:
    if ((cVar1 == '\x01') && (Status = Status & 0xfffffffe, uVar11 != 0)) {
      Status = Status | 1;
    }
  }
  *(undefined1 *)(param_1 + 0x50db) =
       *(undefined1 *)((uint)*(byte *)(param_1 + 0x169ec) * 10 + param_1 + 0x4c24);
  return;
}