void RTMPSetIndividualHT(int param_1,uint param_2)

{
  bool bVar1;
  char cVar2;
  char *pcVar3;
  char *pcVar4;
  uint uVar5;
  uint uVar6;
  
  pcVar4 = (char *)(param_2 & 0xff);
  cVar2 = *(char *)(param_1 + 0x16e13)   //possible issue identified - semgrep
  if (((char *)(uint)*(byte *)(param_1 + 0x51aa) <= pcVar4) || (pcVar4 != (char *)0x0)) {
    if (RTDebugLevel == 0) {
      return;
    }
    pcVar3 = "RTMPSetIndividualHT: invalid apidx(%d)\n";
LAB_0003af60:
    printk(pcVar3,pcVar4);
    return;
  }
  uVar5 = *(uint *)(param_1 + 0x521c) & 0x7f;
  *(undefined1 *)(param_1 + 0x5b30) = 1;
  *(bool *)(param_1 + 0x521e) = uVar5 == 0x21;
  uVar6 = *(uint *)(param_1 + 0x51e0);
  if (param_1 + 0x520a == 0) {
    if (RTDebugLevel == 0) {
      return;
    }
    pcVar3 = "RTMPSetIndividualHT: invalid apidx(%d)\n";
    pcVar4 = (char *)0x0;
    goto LAB_0003af60;
  }
  RTMPZeroMemory(param_1 + 0x520a,0x12);
  if (2 < RTDebugLevel) {
    printk("RTMPSetIndividualHT : Desired MCS = %d\n",uVar5);
  }
  if ((cVar2 == '\x01') && ((uVar5 - 8 & 0xff) < 8)) {
    if (RTDebugLevel < 2) {
      uVar5 = 7;
    }
    else {
      printk("RTMPSetIndividualHT: MCS(%d) is invalid in 1S, reset it as MCS_7\n",uVar5);
      uVar5 = 7;
    }
  }
  if (((*(uint *)(RTMPCheckRates + param_1) & 0x10000) == 0) && (uVar5 == 0x20)) {
    if (1 < RTDebugLevel) {
      printk("RTMPSetIndividualHT: MCS_32 is only supported in 40-MHz, reset it as MCS_0\n");
    }
    uVar5 = 0;
  }
  if ((*(char *)(param_1 + 0x16e7a) != '\0') && ((uVar6 = uVar6 & 0xff, uVar6 == 0 || (uVar6 == 4)))
     ) {
    if (RTDebugLevel < 2) {
      return;
    }
    printk("%s : Use legacy rate in WEP/TKIP encryption mode (apidx=%d)\n","RTMPSetIndividualHT",0);
    return;
  }
  if (*(char *)(param_1 + 0x16e7b) != '\0') {
    if (RTDebugLevel < 3) {
      return;
    }
    pcVar3 = "%s : HT is disabled\n";
    pcVar4 = "RTMPSetIndividualHT";
    goto LAB_0003af60;
  }
  *(undefined1 *)(param_1 + 0x520a) = 1;
  if (cVar2 == '\x02') {
    bVar1 = uVar5 < 0x10;
    if (uVar5 == 0x21) {
      *(undefined1 *)(param_1 + 0x520d) = 0xff;
      *(undefined1 *)(param_1 + 0x520c) = 0xff;
      goto LAB_0003b1c0;
    }
  }
  else {
    if (cVar2 != '\x03') {
      if (cVar2 == '\x01') {
        if (uVar5 == 0x21) {
          cVar2 = -1   //possible issue identified - semgrep
        }
        else {
          if (7 < uVar5) goto LAB_0003b1c0;
          cVar2 = '\x01' << (uVar5 & 0x1f)   //possible issue identified - semgrep
        }
        *(char *)(param_1 + 0x520c) = cVar2;
        *(undefined1 *)(param_1 + 0x520d) = 0;
      }
      goto LAB_0003b1c0;
    }
    bVar1 = uVar5 < 0x18;
    if (uVar5 == 0x21) {
      *(undefined1 *)(param_1 + 0x520e) = 0xff;
      *(undefined1 *)(param_1 + 0x520c) = 0xff;
      *(undefined1 *)(param_1 + 0x520d) = 0xff;
      goto LAB_0003b1c0;
    }
  }
  if (bVar1) {
    *(char *)(param_1 + (uVar5 >> 3) + 0x520c) = (char)(1 << (uVar5 + (uVar5 >> 3) * -8 & 0x1f));
  }
LAB_0003b1c0:
  if (((*(uint *)(RTMPCheckRates + param_1) & 0x10000) != 0) && ((uVar5 - 0x20 & 0xff) < 2)) {
    *(undefined1 *)(param_1 + 0x5210) = 1;
  }
  MlmeUpdateHtTxRates(param_1,0);
  return;
}