bool Set_ATE_TSSI_CALIBRATION_EX_Proc(int param_1)

{
  byte bVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  byte *pbVar8;
  uint uVar9;
  uint uVar10;
  char cVar11;
  char cVar12;
  void *__dest;
  void *__src;
  void *__dest_00;
  byte local_60 [2];
  ushort local_5e;
  undefined1 local_5c [4];
  undefined4 local_58;
  undefined2 local_54;
  char acStack_51 [7];
  char local_4a [6];
  char local_44;
  char local_43;
  byte local_40 [14];
  byte abStack_32 [2];
  void *local_30;
  void *local_2c;
  
  uVar7 = *(uint *)(param_1 + 0x4a94) & 0xffff0000;
  local_58 = 0x44332211;
  local_54 = 0x6655;
  if (uVar7 == 0x53500000) {
    iVar3 = RT5350_Set_ATE_TSSI_CALIBRATION_Proc();
    return iVar3 == 1;
  }
  if ((((*(uint *)(param_1 + 0x4a94) != 0x28720200) || (*(char *)(param_1 + 0x4bd4) != '\v')) &&
      (uVar7 != 0x33520000)) && (uVar7 != 0x33900000)) {
    if (RTDebugLevel == 0) {
      return false;
    }
    printk("Not support TSSI calibration since not 3370/3390/3350/3352 chip or EEPROM not set!!!\n")
    ;
    return false;
  }
  RT30xxReadRFRegister(param_1,0x1b,local_60);
  local_60[0] = local_60[0] & 0x77 | 0x88;
  RT30xxWriteRFRegister(param_1,0x1b,local_60[0]);
  RT30xxReadRFRegister(param_1,0x1c,local_60);
  local_60[0] = local_60[0] & 0x9f;
  RT30xxWriteRFRegister(param_1,0x1c,local_60[0]);
  uVar7 = Status;
  cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  uVar5 = 0;
  if (cVar11 != '\0') goto LAB_000abce8;
  if (*(int *)(param_1 + 0x29f8) == 4) {
    uVar9 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar9 = uVar7 & 1;
    }
    iVar3 = 0;
    cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar7 = 0;
      if (cVar11 == '\0') {
        uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar7 & 0x20000) == 0) {
        if (cVar11 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
        }
        iVar6 = 1;
        while( true ) {
          uVar7 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if (((uVar7 & 0x20000) == 0) || (iVar6 == 100)) break;
          iVar6 = iVar6 + 1;
        }
        if ((uVar7 & 0x2ff00) == 0x3100) {
          uVar5 = uVar7 & 0xff;
          goto LAB_000abb28;
        }
      }
      iVar3 = iVar3 + 1;
      if (iVar3 == 100) break;
      cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar5 = 0;
LAB_000abb28:
    if ((int)(uVar7 << 0xe) < 0) {
      printk("ERROR!!! ");
      printk("BBP(viaMCU=%d) read R%d fail\n",0,0x31);
      uVar5 = (uint)*(byte *)(param_1 + 0x4afa);
LAB_000abcc0:
      cVar11 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      cVar11 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
  }
  else {
    uVar9 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar9 = uVar7 & 1;
    }
    iVar3 = 0;
    cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar7 = 0;
      if (cVar11 == '\0') {
        uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
      }
      if ((uVar7 & 0x20000) == 0) {
        if (cVar11 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb3100;
        }
        AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
        RTMPusecDelay(1000);
        iVar6 = 1;
        while( true ) {
          uVar7 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if (((uVar7 & 0x20000) == 0) || (iVar6 == 100)) break;
          iVar6 = iVar6 + 1;
        }
        if ((uVar7 & 0x2ff00) == 0x3100) {
          uVar5 = uVar7 & 0xff;
          goto LAB_000abc68;
        }
      }
      iVar3 = iVar3 + 1;
      if (iVar3 == 100) break;
      cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar5 = 0;
LAB_000abc68:
    if ((int)(uVar7 << 0xe) < 0) {
      printk("ERROR!!! ");
      printk("BBP(viaMCU=%d) read R%d fail\n",1,0x31);
      uVar5 = (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_000abcc0;
    }
    cVar11 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  if (cVar11 == '\x01') {
    Status = Status & 0xfffffffe;
    if (uVar9 != 0) {
      Status = Status | 1;
    }
    cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
LAB_000abce8:
  uVar7 = Status;
  uVar9 = uVar5 | 0x80;
  if (cVar11 == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar10 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar10 = uVar7 & 1;
      }
      iVar3 = 1;
      cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar7 = 0;
        if (cVar11 == '\0') {
          uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar7 & 0x20000) == 0) break;
        iVar3 = iVar3 + 1;
        printk(&_LC94)   //possible issue identified - semgrep
        if (iVar3 == 100) goto LAB_000abdb8;
        cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar11 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar5 | 0xa3180;
      }
      *(char *)(param_1 + 0x4afa) = (char)uVar9;
      if (iVar3 != 100) goto LAB_000abdd8;
LAB_000abdb8:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x31);
LAB_000abdd8:
      cVar11 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      uVar10 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar10 = uVar7 & 1;
      }
      iVar3 = 1;
      cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar7 = 0;
        if (cVar11 == '\0') {
          uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar7 & 0x20000) == 0) break;
        iVar6 = iVar3 % 0x14;
        iVar3 = iVar3 + 1;
        if ((iVar6 == 0) && (cVar11 == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar7 & 0xfffdffff;
        }
        printk(&_LC94)   //possible issue identified - semgrep
        if (iVar3 == 100) goto LAB_000abf34;
        cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar11 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 | 0xa3180;
      }
      iVar6 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
      if (*(char *)(param_1 + 0x16964) == '\x01') {
        RTMPusecDelay(1000);
      }
      if ((iVar6 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 | 0x83180;
      }
      *(char *)(param_1 + 0x4afa) = (char)uVar9;
      if (iVar3 != 100) goto LAB_000abf7c;
LAB_000abf34:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x31);
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
             *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_000abf7c:
        cVar11 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar11 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
    if ((cVar11 == '\x01') && (Status = Status & 0xfffffffe, uVar10 != 0)) {
      Status = Status | 1;
    }
  }
  local_2c = (void *)(param_1 + 0x76a0c);
  memset(local_2c,0,0xf8)   //possible issue identified - semgrep
  local_30 = (void *)(param_1 + 0x76a26);
  *(undefined4 *)(param_1 + 0x76a40) = 100000;
  *(undefined4 *)(param_1 + 0x76a3c) = 0x400;
  *(undefined1 *)(param_1 + 0x76a38) = 7;
  memcpy(local_30,&BROADCAST_ADDR,6)   //possible issue identified - semgrep
  __dest_00 = (void *)(param_1 + 0x76a2c);
  __src = (void *)(param_1 + 0x1696d);
  __dest = (void *)(param_1 + 0x76a32);
  memcpy(__dest_00,__src,6)   //possible issue identified - semgrep
  memcpy(__dest,&local_58,6)   //possible issue identified - semgrep
  Set_ATE_TX_MODE_Proc(param_1,&_LC218);
  Set_ATE_TX_MCS_Proc(param_1,&_LC219);
  Set_ATE_TX_BW_Proc(param_1,&_LC220);
  (**(code **)(param_1 + 0x10))(param_1,0x3a,&local_5e);
  *(uint *)(param_1 + 0x76a48) = (uint)(byte)local_5e;
  (**(code **)(param_1 + 0x10))(param_1,0x58,local_5c);
  *(undefined1 *)(param_1 + 0x76a0f) = local_5c[0];
  Set_ATE_TX_Antenna_Proc(param_1,&_LC218);
  if (2 < RTDebugLevel) {
    printk("Channel %d, Calibrated Tx.Power0= 0x%x\n",7,(int)*(char *)(param_1 + 0x76a0f));
  }
  Set_ATE_Proc(param_1,"TXFRAME");
  RTMPusecDelay(500000);
  iVar3 = 0;
  cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_000ac158:
  uVar7 = 0;
  if (cVar11 == '\0') {
    uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
  }
  if ((uVar7 & 0x20000) == 0) {
    if (cVar11 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
    }
    iVar6 = 1;
    while( true ) {
      uVar7 = 0;
      if (*(char *)(param_1 + 0xec) == '\0') {
        uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if (((uVar7 & 0x20000) == 0) || (iVar6 == 100)) break;
      iVar6 = iVar6 + 1;
    }
    if ((uVar7 & 0x2ff00) == 0x3100) {
      uVar9 = uVar7 & 0xff;
LAB_000ac1ec:
      if ((int)(uVar7 << 0xe) < 0) {
        if (RTDebugLevel == 0) {
          bVar1 = *(byte *)(param_1 + 0x4afa);
        }
        else {
          printk("BBP read R%d fail\n",0x31);
          bVar1 = *(byte *)(param_1 + 0x4afa);
        }
        uVar9 = (uint)bVar1;
      }
      if (2 < RTDebugLevel) {
        printk("BBP R49 = 0x%x\n",uVar9);
      }
      uVar9 = uVar9 & 0x1f;
      cVar11 = (char)uVar9;
      if (2 < RTDebugLevel) {
        printk("TSSI = 0x%x\n",cVar11);
      }
      (**(code **)(param_1 + 0x10))(param_1,0x6e,&local_5e);
      local_5e = (ushort)uVar9 | local_5e & 0xff00;
      if (2 < RTDebugLevel) {
        printk("Write  E2P 0x6e: 0x%x\n");
      }
      Set_ATE_Proc(param_1,"ATESTART");
      memset(local_2c,0,0xf8)   //possible issue identified - semgrep
      *(undefined4 *)(param_1 + 0x76a40) = 100000;
      *(undefined4 *)(param_1 + 0x76a3c) = 0x400;
      *(undefined1 *)(param_1 + 0x76a38) = 1;
      memcpy(local_30,&BROADCAST_ADDR,6)   //possible issue identified - semgrep
      memcpy(__dest_00,__src,6)   //possible issue identified - semgrep
      memcpy(__dest,&local_58,6)   //possible issue identified - semgrep
      Set_ATE_TX_MODE_Proc(param_1,&_LC218);
      Set_ATE_TX_MCS_Proc(param_1,&_LC219);
      Set_ATE_TX_BW_Proc(param_1,&_LC220);
      (**(code **)(param_1 + 0x10))(param_1,0x52,local_5c);
      *(undefined1 *)(param_1 + 0x76a0f) = local_5c[0];
      Set_ATE_TX_Antenna_Proc(param_1,&_LC218);
      if (2 < RTDebugLevel) {
        printk("Channel %d, Calibrated Tx.Power0= 0x%x\n",1,(int)*(char *)(param_1 + 0x76a0f));
      }
      Set_ATE_Proc(param_1,"TXFRAME");
      RTMPusecDelay(500000);
      iVar3 = 0;
      cVar12 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_000ac448:
      uVar7 = 0;
      if (cVar12 == '\0') {
        uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar7 & 0x20000) == 0) {
        if (cVar12 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
        }
        iVar6 = 1;
        while( true ) {
          uVar7 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if (((uVar7 & 0x20000) == 0) || (iVar6 == 100)) break;
          iVar6 = iVar6 + 1;
        }
        if ((uVar7 & 0x2ff00) == 0x3100) {
          uVar9 = uVar7 & 0xff;
LAB_000ac4dc:
          if ((int)(uVar7 << 0xe) < 0) {
            if (RTDebugLevel == 0) {
              bVar1 = *(byte *)(param_1 + 0x4afa);
            }
            else {
              printk("BBP read R%d fail\n",0x31);
              bVar1 = *(byte *)(param_1 + 0x4afa);
            }
            uVar9 = (uint)bVar1;
          }
          uVar9 = uVar9 & 0x1f;
          cVar12 = (char)uVar9;
          if (2 < RTDebugLevel) {
            printk("TSSI = 0x%x\n",cVar12);
          }
          Set_ATE_Proc(param_1,"ATESTART");
          memset(local_2c,0,0xf8)   //possible issue identified - semgrep
          *(undefined4 *)(param_1 + 0x76a40) = 100000;
          *(undefined4 *)(param_1 + 0x76a3c) = 0x400;
          *(undefined1 *)(param_1 + 0x76a38) = 0xd;
          memcpy(local_30,&BROADCAST_ADDR,6)   //possible issue identified - semgrep
          memcpy(__dest_00,__src,6)   //possible issue identified - semgrep
          memcpy(__dest,&local_58,6)   //possible issue identified - semgrep
          Set_ATE_TX_MODE_Proc(param_1,&_LC218);
          Set_ATE_TX_MCS_Proc(param_1,&_LC219);
          Set_ATE_TX_BW_Proc(param_1,&_LC220);
          (**(code **)(param_1 + 0x10))(param_1,0x5e,local_5c);
          *(undefined1 *)(param_1 + 0x76a0f) = local_5c[0];
          Set_ATE_TX_Antenna_Proc(param_1,&_LC218);
          if (2 < RTDebugLevel) {
            printk("Channel %d, Calibrated Tx.Power0= 0x%x\n",0xd,(int)*(char *)(param_1 + 0x76a0f))
            ;
          }
          Set_ATE_Proc(param_1,"TXFRAME");
          RTMPusecDelay(500000);
          iVar3 = 0;
          cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          do {
            uVar7 = 0;
            if (cVar2 == '\0') {
              uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
            }
            if ((uVar7 & 0x20000) == 0) {
              if (cVar2 == '\0') {
                *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
              }
              iVar6 = 1;
              while( true ) {
                uVar7 = 0;
                if (*(char *)(param_1 + 0xec) == '\0') {
                  uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
                }
                if (((uVar7 & 0x20000) == 0) || (iVar6 == 100)) break;
                iVar6 = iVar6 + 1;
              }
              if ((uVar7 & 0x2ff00) == 0x3100) {
                uVar9 = uVar7 & 0xff;
LAB_000ac758:
                if ((int)(uVar7 << 0xe) < 0) {
                  if (RTDebugLevel == 0) {
                    bVar1 = *(byte *)(param_1 + 0x4afa);
                  }
                  else {
                    printk("BBP read R%d fail\n",0x31);
                    bVar1 = *(byte *)(param_1 + 0x4afa);
                  }
                  uVar9 = (uint)bVar1;
                }
                if (2 < RTDebugLevel) {
                  printk("TSSI = 0x%x\n",uVar9 & 0x1f);
                }
                local_44 = (char)(uVar9 & 0x1f)   //possible issue identified - semgrep
                acStack_51[1] = cVar12;
                local_4a[0] = cVar11;
                Set_ATE_Proc(param_1,"ATESTART");
                cVar11 = local_4a[0]   //possible issue identified - semgrep
                iVar3 = 1;
                do {
                  iVar6 = iVar3 + 1;
                  iVar4 = iVar3 * (char)(local_4a[0] - acStack_51[1]);
                  iVar3 = iVar3 + 1;
                  acStack_51[iVar6] = acStack_51[1] + (char)(iVar4 / 6);
                } while (iVar3 != 6);
                iVar3 = 1;
                do {
                  iVar6 = iVar3 + 1;
                  local_4a[iVar3] =
                       local_4a[0] + (char)((iVar3 * (char)(local_44 - local_4a[0])) / 6);
                  iVar3 = iVar6;
                } while (iVar6 != 6);
                local_43 = local_44;
                pbVar8 = local_40;
                iVar3 = 1;
                do {
                  cVar12 = acStack_51[iVar3]   //possible issue identified - semgrep
                  *pbVar8 = cVar12 - cVar11;
                  if ('\a' < (char)(cVar12 - cVar11)) {
                    *pbVar8 = 7;
                  }
                  if ((char)*pbVar8 < -8) {
                    *pbVar8 = 0xf8;
                  }
                  *pbVar8 = *pbVar8 & 0xf;
                  pbVar8 = pbVar8 + 1;
                  if (2 < RTDebugLevel) {
                    printk("Channel %d, TSSI= 0x%x, TssiDelta=0x%x\n",iVar3);
                  }
                  iVar3 = iVar3 + 1;
                } while (pbVar8 != abStack_32);
                (**(code **)(param_1 + 0x10))(param_1,0x6e,&local_5e);
                uVar7 = ((int)(char)local_40[0] << 8 | (int)(char)local_40[1] << 0xc) & 0xffffU |
                        (uint)(byte)local_5e;
                local_5e = (ushort)uVar7;
                (**(code **)(param_1 + 0x14))(param_1,0x6e,uVar7);
                RTMPusecDelay(10);
                pbVar8 = local_40 + 5;
                iVar3 = 0;
                do {
                  uVar7 = (int)(char)*pbVar8 << 0xc | (int)(char)pbVar8[-1] << 8 |
                          (int)(char)pbVar8[-3] | (int)(char)pbVar8[-2] << 4;
                  local_5e = (ushort)uVar7;
                  (**(code **)(param_1 + 0x14))
                            (param_1,(iVar3 >> 1) + 0x70U & 0xffff,uVar7 & 0xffff);
                  iVar3 = iVar3 + 4;
                  RTMPusecDelay(10);
                  pbVar8 = pbVar8 + 4;
                } while (iVar3 != 0xc);
                return true;
              }
            }
            iVar3 = iVar3 + 1;
            if (iVar3 == 100) goto LAB_000ac758;
            cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          } while( true );
        }
      }
      iVar3 = iVar3 + 1;
      if (iVar3 == 100) goto LAB_000ac4dc;
      cVar12 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      goto LAB_000ac448;
    }
  }
  iVar3 = iVar3 + 1;
  if (iVar3 == 100) goto LAB_000ac1ec;
  cVar11 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  goto LAB_000ac158;
}