undefined4 RT5350_ATEGetDesiredTSSI(int param_1,undefined1 *param_2)

{
  char cVar1;
  byte bVar2;
  char cVar3;
  uint uVar4;
  undefined4 *puVar5;
  uint uVar6;
  char *pcVar7;
  int iVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  undefined4 uVar12;
  
  uVar4 = *(uint *)(param_1 + 0x76a14);
  cVar3 = '\0';
  uVar11 = 0;
  do {
    iVar10 = 0;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00096bdc:
    uVar6 = 0;
    if (cVar1 == '\0') {
      uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar6 & 0x20000) != 0) {
LAB_00096c68:
      iVar10 = iVar10 + 1;
      if (iVar10 == 100) goto LAB_00096c70;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      goto LAB_00096bdc;
    }
    if (cVar1 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
    }
    iVar8 = 0;
    do {
      uVar6 = 0;
      if (*(char *)(param_1 + 0xec) == '\0') {
        uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
    } while (((uVar6 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
    if ((uVar6 & 0x2ff00) != 0x2f00) goto LAB_00096c68;
    uVar11 = uVar6 & 0xff;
LAB_00096c70:
    if ((uVar6 & 0x20000) != 0) {
      if (RTDebugLevel == 0) {
        bVar2 = *(byte *)(param_1 + 0x4af8);
      }
      else {
        printk("BBP read R%d fail\n",0x2f);
        bVar2 = *(byte *)(param_1 + 0x4af8);
      }
      uVar11 = (uint)bVar2;
    }
    cVar3 = cVar3 + '\x01';
    if ((uVar11 & 4) == 0) {
      iVar10 = 0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      goto LAB_00096cd0;
    }
  } while (cVar3 != 'd');
  uVar12 = 0;
  goto LAB_00097644;
LAB_00096cd0:
  uVar6 = 0;
  if (cVar3 == '\0') {
    uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
  }
  if ((uVar6 & 0x20000) != 0) {
LAB_00096d58:
    iVar10 = iVar10 + 1;
    if (iVar10 == 100) goto LAB_00096d60;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    goto LAB_00096cd0;
  }
  if (cVar3 == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
  }
  iVar8 = 0;
  do {
    uVar6 = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
  } while (((uVar6 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
  if ((uVar6 & 0x2ff00) != 0x2f00) goto LAB_00096d58;
  uVar11 = uVar6 & 0xff;
LAB_00096d60:
  if ((int)(uVar6 << 0xe) < 0) {
    if (RTDebugLevel == 0) {
      bVar2 = *(byte *)(param_1 + 0x4af8);
    }
    else {
      printk("BBP read R%d fail\n",0x2f);
      bVar2 = *(byte *)(param_1 + 0x4af8);
    }
    uVar11 = (uint)bVar2;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar6 = uVar11 & 0xfc;
  iVar10 = 0;
  do {
    uVar11 = 0;
    if (cVar3 == '\0') {
      uVar11 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar11 & 0x20000) == 0) {
      if (cVar3 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa2f00;
      }
      *(char *)(param_1 + 0x4af8) = (char)uVar6;
      if (iVar10 != 100) goto LAB_00096e44;
      break;
    }
    iVar10 = iVar10 + 1;
  } while (iVar10 != 100);
  if (RTDebugLevel != 0) {
    printk("BBP write R%d fail\n",0x2f);
  }
LAB_00096e44:
  iVar10 = 0;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  while( true ) {
    uVar11 = 0;
    if (cVar3 == '\0') {
      uVar11 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar11 & 0x20000) == 0) {
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
      }
      iVar8 = 0;
      do {
        uVar11 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar11 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
      } while (((uVar11 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
      if ((uVar11 & 0x2ff00) == 0x3100) {
        uVar9 = uVar11 & 0xff;
        goto LAB_00096ef4;
      }
    }
    iVar10 = iVar10 + 1;
    if (iVar10 == 100) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar9 = 0;
LAB_00096ef4:
  if ((int)(uVar11 << 0xe) < 0) {
    if (RTDebugLevel == 0) {
      bVar2 = *(byte *)(param_1 + 0x4afa);
    }
    else {
      printk("BBP read R%d fail\n",0x31);
      bVar2 = *(byte *)(param_1 + 0x4afa);
    }
    uVar9 = (uint)bVar2;
  }
  if (uVar9 < 0x7d) {
    *param_2 = (char)uVar9;
  }
  else {
    if (2 < RTDebugLevel) {
      printk("TSSI: BBP_R49=%X is native value\n");
    }
    *param_2 = 0;
  }
  iVar10 = 0;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00096f90:
  uVar11 = 0;
  if (cVar3 == '\0') {
    uVar11 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
  }
  if ((uVar11 & 0x20000) != 0) {
LAB_00097018:
    iVar10 = iVar10 + 1;
    if (iVar10 == 100) goto LAB_00097020;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    goto LAB_00096f90;
  }
  if (cVar3 == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
  }
  iVar8 = 0;
  do {
    uVar11 = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      uVar11 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
  } while (((uVar11 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
  if ((uVar11 & 0x2ff00) != 0x2f00) goto LAB_00097018;
  uVar6 = uVar11 & 0xff;
LAB_00097020:
  if ((int)(uVar11 << 0xe) < 0) {
    if (RTDebugLevel == 0) {
      bVar2 = *(byte *)(param_1 + 0x4af8);
    }
    else {
      printk("BBP read R%d fail\n",0x2f);
      bVar2 = *(byte *)(param_1 + 0x4af8);
    }
    uVar6 = (uint)bVar2;
  }
  uVar11 = uVar6 & 0xfc | 1;
  iVar10 = 0;
  do {
    uVar9 = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar9 & 0x20000) == 0) {
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 & 0xfc | 0xa2f01;
      }
      *(char *)(param_1 + 0x4af8) = (char)uVar11;
      if (iVar10 != 100) goto LAB_00097108;
      break;
    }
    iVar10 = iVar10 + 1;
  } while (iVar10 != 100);
  if (RTDebugLevel != 0) {
    printk("BBP write R%d fail\n",0x2f);
  }
LAB_00097108:
  iVar10 = 0;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  while( true ) {
    uVar6 = 0;
    if (cVar3 == '\0') {
      uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar6 & 0x20000) == 0) {
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
      }
      iVar8 = 0;
      do {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
      } while (((uVar6 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
      if ((uVar6 & 0x2ff00) == 0x3100) {
        uVar9 = uVar6 & 0xff;
        goto LAB_000971b8;
      }
    }
    iVar10 = iVar10 + 1;
    if (iVar10 == 100) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar9 = 0;
LAB_000971b8:
  if ((int)(uVar6 << 0xe) < 0) {
    if (RTDebugLevel == 0) {
      bVar2 = *(byte *)(param_1 + 0x4afa);
    }
    else {
      printk("BBP read R%d fail\n",0x31);
      bVar2 = *(byte *)(param_1 + 0x4afa);
    }
    uVar9 = (uint)bVar2;
  }
  uVar6 = uVar9 & 3;
  if (uVar6 == 1) {
    iVar10 = 6;
    switch((uVar9 >> 4) - 9 & 0xff) {
    case 0:
      iVar10 = 4;
      break;
    case 1:
      iVar10 = 2;
      break;
    case 2:
      iVar10 = 0;
      break;
    case 3:
      iVar10 = 7;
      break;
    case 4:
      iVar10 = 5;
      break;
    case 5:
      iVar10 = 3;
      break;
    case 6:
      iVar10 = 1;
    }
    uVar12 = (&RT5350_desiredTSSIOverOFDM)[iVar10];
    if (RTDebugLevel < 4) goto LAB_00097644;
    pcVar7 = "OFDM: desiredTSSI = %d, MCS = %d\n";
  }
  else if (uVar6 == 2) {
    if (3 < RTDebugLevel) {
      printk("mixed mode or green-field mode\n");
    }
    iVar10 = 0;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00097368:
    uVar6 = 0;
    if (cVar3 == '\0') {
      uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar6 & 0x20000) != 0) {
LAB_000973f0:
      iVar10 = iVar10 + 1;
      if (iVar10 == 100) goto LAB_000973f8;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      goto LAB_00097368;
    }
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
    }
    iVar8 = 0;
    do {
      uVar6 = 0;
      if (*(char *)(param_1 + 0xec) == '\0') {
        uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
    } while (((uVar6 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
    if ((uVar6 & 0x2ff00) != 0x2f00) goto LAB_000973f0;
    uVar11 = uVar6 & 0xff;
LAB_000973f8:
    if ((int)(uVar6 << 0xe) < 0) {
      if (RTDebugLevel == 0) {
        bVar2 = *(byte *)(param_1 + 0x4af8);
      }
      else {
        printk("BBP read R%d fail\n",0x2f);
        bVar2 = *(byte *)(param_1 + 0x4af8);
      }
      uVar11 = (uint)bVar2;
    }
    uVar6 = uVar11 & 0xfc;
    uVar11 = uVar6 | 2;
    iVar10 = 0;
    do {
      uVar9 = 0;
      if (*(char *)(param_1 + 0xec) == '\0') {
        uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar9 & 0x20000) == 0) {
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa2f02;
        }
        *(char *)(param_1 + 0x4af8) = (char)uVar11;
        if (iVar10 != 100) goto LAB_000974e0;
        break;
      }
      iVar10 = iVar10 + 1;
    } while (iVar10 != 100);
    if (RTDebugLevel != 0) {
      printk("BBP write R%d fail\n",0x2f);
    }
LAB_000974e0:
    iVar10 = 0;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar6 = 0;
      if (cVar3 == '\0') {
        uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar6 & 0x20000) == 0) {
        if (cVar3 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
        }
        iVar8 = 0;
        do {
          uVar6 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
        } while (((uVar6 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
        if ((uVar6 & 0x2ff00) == 0x3100) {
          uVar9 = uVar6 & 0xff;
          goto LAB_00097590;
        }
      }
      iVar10 = iVar10 + 1;
      if (iVar10 == 100) break;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar9 = 0;
LAB_00097590:
    if ((int)(uVar6 << 0xe) < 0) {
      if (RTDebugLevel == 0) {
        uVar9 = (uint)*(byte *)(param_1 + 0x4afa);
      }
      else {
        printk("BBP read R%d fail\n",0x31);
        uVar9 = (uint)*(byte *)(param_1 + 0x4afa);
      }
    }
    if (((uVar4 & 0x8000) == 0) || (2 < ((uVar9 & 0x7f) - 5 & 0xff))) {
      puVar5 = &RT5350_desiredTSSIOverHT;
    }
    else {
      puVar5 = &RT5350_desiredTSSIOverHT40;
    }
    uVar12 = puVar5[uVar9 & 0x7f];
    if (RTDebugLevel < 4) goto LAB_00097644;
    pcVar7 = "HT: desiredTSSI = %d, MCS = %d\n";
  }
  else {
    uVar12 = 0;
    if (uVar6 != 0) goto LAB_00097644;
    uVar9 = uVar9 >> 4;
    iVar10 = 1;
    if (uVar9 != 9) {
      if (uVar9 < 9) {
        iVar10 = 0;
      }
      else {
        iVar10 = 2;
        if ((uVar9 != 10) && (iVar10 = 3, uVar9 != 0xb)) {
          iVar10 = 0;
        }
      }
    }
    uVar12 = (&RT5350_desiredTSSIOverCCK)[iVar10];
    if (RTDebugLevel < 4) goto LAB_00097644;
    pcVar7 = "CCK: desiredTSSI = %d, MCS = %d\n";
  }
  printk(pcVar7,uVar12);
LAB_00097644:
  iVar10 = 0;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00097660:
  uVar4 = 0;
  if (cVar3 == '\0') {
    uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
  }
  if ((uVar4 & 0x20000) == 0) {
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
    }
    iVar8 = 0;
    do {
      uVar4 = 0;
      if (*(char *)(param_1 + 0xec) == '\0') {
        uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
    } while (((uVar4 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
    if ((uVar4 & 0x2ff00) == 0x2f00) {
      uVar11 = uVar4 & 0xff;
LAB_000976f0:
      if ((int)(uVar4 << 0xe) < 0) {
        if (RTDebugLevel == 0) {
          bVar2 = *(byte *)(param_1 + 0x4af8);
        }
        else {
          printk("BBP read R%d fail\n",0x2f);
          bVar2 = *(byte *)(param_1 + 0x4af8);
        }
        uVar11 = (uint)bVar2;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      else {
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      uVar11 = uVar11 & 0xf8;
      iVar10 = 0;
      do {
        uVar4 = 0;
        if (cVar3 == '\0') {
          uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar4 & 0x20000) == 0) {
          if (cVar3 == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar11 | 0xa2f00;
          }
          *(char *)(param_1 + 0x4af8) = (char)uVar11;
          if (iVar10 != 100) goto LAB_000977d4;
          break;
        }
        iVar10 = iVar10 + 1;
      } while (iVar10 != 100);
      if (RTDebugLevel != 0) {
        printk("BBP write R%d fail\n",0x2f);
      }
LAB_000977d4:
      iVar10 = 0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_000977f0:
      uVar4 = 0;
      if (cVar3 == '\0') {
        uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar4 & 0x20000) == 0) {
        if (cVar3 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
        }
        iVar8 = 0;
        do {
          uVar4 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
        } while (((uVar4 & 0x20000) != 0) && (iVar8 = iVar8 + 1, iVar8 != 100));
        if ((uVar4 & 0x2ff00) == 0x2f00) {
          uVar11 = uVar4 & 0xff;
LAB_00097880:
          if ((int)(uVar4 << 0xe) < 0) {
            if (RTDebugLevel == 0) {
              bVar2 = *(byte *)(param_1 + 0x4af8);
            }
            else {
              printk("BBP read R%d fail\n",0x2f);
              bVar2 = *(byte *)(param_1 + 0x4af8);
            }
            uVar11 = (uint)bVar2;
            cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          }
          else {
            cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          }
          iVar10 = 0;
          while( true ) {
            uVar4 = 0;
            if (cVar3 == '\0') {
              uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
            }
            if ((uVar4 & 0x20000) == 0) break;
            iVar10 = iVar10 + 1;
            if (iVar10 == 100) {
LAB_00097938:
              if (RTDebugLevel != 0) {
                printk("BBP write R%d fail\n",0x2f);
              }
              return uVar12;
            }
          }
          if (cVar3 == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar11 | 0xa2f04;
          }
          *(byte *)(param_1 + 0x4af8) = (byte)uVar11 | 4;
          if (iVar10 != 100) {
            return uVar12;
          }
          goto LAB_00097938;
        }
      }
      iVar10 = iVar10 + 1;
      if (iVar10 == 100) goto LAB_00097880;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      goto LAB_000977f0;
    }
  }
  iVar10 = iVar10 + 1;
  if (iVar10 == 100) goto LAB_000976f0;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  goto LAB_00097660;
}