void HTParametersHook(int param_1,undefined4 param_2,undefined4 param_3)

{
  bool bVar1;
  undefined1 uVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined2 uVar6;
  char *pcVar7;
  undefined *puVar8;
  int iVar9;
  
  iVar3 = RTMPGetKeyParameter("HT_PROTECT",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(undefined1 *)(param_1 + 0x16e03) = 0;
    }
    else {
      *(undefined1 *)(param_1 + 0x16e03) = 1;
    }
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "Disable";
      }
      else {
        pcVar7 = "Enable";
      }
      printk("HT: Protection  = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_MIMOPSMode",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    uVar4 = simple_strtol(param_2,0,10);
    *(uint *)(param_1 + 0x16a64) = *(uint *)(param_1 + 0x16a64) & 0xfcffffff | 0x3000000;
    if (2 < RTDebugLevel) {
      printk("HT: MIMOPS Mode  = %d\n",uVar4);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_BADecline",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(undefined1 *)(param_1 + 0x16e05) = 0;
    }
    else {
      *(undefined1 *)(param_1 + 0x16e05) = 1;
    }
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "Disable";
      }
      else {
        pcVar7 = "Enable";
      }
      printk("HT: BA Decline  = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_AutoBA",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(uint *)(param_1 + 0x16a64) = *(uint *)(param_1 + 0x16a64) & 0xfff8ffff | 0x40000;
    }
    else {
      *(uint *)(param_1 + 0x16a64) = *(uint *)(param_1 + 0x16a64) & 0xfff8ffff | 0x30000;
    }
    *(uint *)(param_1 + 0x16a68) =
         *(uint *)(param_1 + 0x16a68) & 0xfff8ffff |
         ((uint)(*(int *)(param_1 + 0x16a64) << 0xf) >> 0x1f) << 0x10 |
         ((uint)(*(int *)(param_1 + 0x16a64) << 0xd) >> 0x1e) << 0x11;
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "Disable";
      }
      else {
        pcVar7 = "Enable";
      }
      printk("HT: Auto BA  = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_HTC",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(undefined1 *)(param_1 + 0x769d8) = 0;
    }
    else {
      *(undefined1 *)(param_1 + 0x769d8) = 1;
    }
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "Disable";
      }
      else {
        pcVar7 = "Enable";
      }
      printk("HT: Tx +HTC frame = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_RDG",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(undefined1 *)(param_1 + 0x16a88) = 0;
    }
    else {
      *(undefined1 *)(param_1 + 0x16a88) = 1;
      *(undefined1 *)(param_1 + 0x769d8) = 1;
    }
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "Disable";
      }
      else {
        pcVar7 = "Enable(+HTC)";
      }
      printk("HT: RDG = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_AMSDU",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      uVar5 = *(uint *)(param_1 + 0x16a64) & 0xffbfffff;
    }
    else {
      uVar5 = *(uint *)(param_1 + 0x16a64) & 0xffbfffff | 0x400000;
    }
    *(uint *)(param_1 + 0x16a64) = uVar5;
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "Disable";
      }
      else {
        pcVar7 = "Enable";
      }
      printk("HT: Tx A-MSDU = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_MpduDensity",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    uVar5 = simple_strtol(param_2,0,10);
    if (uVar5 < 8) {
      *(uint *)(param_1 + 0x16a64) = *(uint *)(param_1 + 0x16a64) & 0xffc7ffff | (uVar5 & 7) << 0x13
      ;
      if (RTDebugLevel < 3) goto LAB_000490e4;
      pcVar7 = "HT: MPDU Density = %d\n";
    }
    else {
      *(uint *)(param_1 + 0x16a64) = *(uint *)(param_1 + 0x16a64) & 0xffc7ffff | 0x200000;
      if (RTDebugLevel < 3) goto LAB_000490e4;
      pcVar7 = "HT: MPDU Density = %d (Default)\n";
      uVar5 = 4;
    }
    printk(pcVar7,uVar5);
  }
LAB_000490e4:
  iVar3 = RTMPGetKeyParameter("HT_BAWinSize",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    simple_strtol(param_2,0,10);
    *(undefined1 *)(param_1 + 0x16a64) = 0x40;
    *(undefined1 *)(param_1 + 0x16a68) = 0x40;
    if (2 < RTDebugLevel) {
      printk("HT: BA Windw Size = %d\n",0x40);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_GI",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 1) {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xffffefff | 0x1000;
    }
    else {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xffffefff;
    }
    *(uint *)(param_1 + 0x16a44) = uVar5;
    if (2 < RTDebugLevel) {
      if (iVar3 == 1) {
        puVar8 = &_LC30;
      }
      else {
        puVar8 = &_LC29;
      }
      printk("HT: Guard Interval = %s\n",puVar8);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_OpMode",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 1) {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xfffeffff | 0x10000;
    }
    else {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xfffeffff;
    }
    *(uint *)(param_1 + 0x16a44) = uVar5;
    if (2 < RTDebugLevel) {
      if (iVar3 == 1) {
        pcVar7 = "Green Field";
      }
      else {
        pcVar7 = "Mixed Mode";
      }
      printk("HT: Operate Mode = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("FixedTxMode",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = rstrtok(param_2,&_LC37)   //possible issue identified - semgrep
    bVar1 = false;
    while ((iVar3 != 0 && (!bVar1))) {
      uVar5 = RT_CfgSetFixedTxPhyMode();
      *(uint *)(param_1 + 0x521c) = *(uint *)(param_1 + 0x521c) & 0xffffe7ff | (uVar5 & 3) << 0xb;
      if (2 < RTDebugLevel) {
        printk("(IF-ra%d) Fixed Tx Mode = %d\n",0);
      }
      iVar3 = rstrtok(0,&_LC37)   //possible issue identified - semgrep
      bVar1 = true;
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_BW",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 1) {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xfffff7ff | 0x800;
    }
    else {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xfffff7ff;
    }
    *(uint *)(param_1 + 0x16a44) = uVar5;
    if (2 < RTDebugLevel) {
      if (iVar3 == 1) {
        pcVar7 = "40 MHz";
      }
      else {
        pcVar7 = "20 MHz";
      }
      printk("HT: Channel Width = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_EXTCHA",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(uint *)(param_1 + 0x16a44) = *(uint *)(param_1 + 0x16a44) & 0xfff9ffff | 0x60000;
    }
    else {
      *(uint *)(param_1 + 0x16a44) = *(uint *)(param_1 + 0x16a44) & 0xfff9ffff | 0x20000;
    }
    if (2 < RTDebugLevel) {
      if (iVar3 == 0) {
        pcVar7 = "BELOW";
      }
      else {
        pcVar7 = "ABOVE";
      }
      printk("HT: Ext Channel = %s\n",pcVar7);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_MCS",param_2,0x32,param_3,1);
  if (iVar3 != 0) {
    iVar3 = rstrtok(param_2,&_LC37)   //possible issue identified - semgrep
    bVar1 = false;
    while ((iVar3 != 0 && (!bVar1))) {
      uVar5 = simple_strtol(iVar3,0,10);
      if ((uVar5 < 0x18) || (uVar5 == 0x20)) {
        *(uint *)(param_1 + 0x521c) = *(uint *)(param_1 + 0x521c) & 0xffffff80 | uVar5 & 0x7f;
        if (2 < RTDebugLevel) {
          printk("(IF-ra%d) HT: MCS = %d\n",0);
        }
      }
      else {
        *(uint *)(param_1 + 0x521c) = *(uint *)(param_1 + 0x521c) & 0xffffff80 | 0x21;
        if (2 < RTDebugLevel) {
          printk("(IF-ra%d) HT: MCS is AUTO\n",0);
        }
      }
      iVar3 = rstrtok(0,&_LC37)   //possible issue identified - semgrep
      bVar1 = true;
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_STBC",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 1) {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xffffdfff | 0x2000;
    }
    else {
      uVar5 = *(uint *)(param_1 + 0x16a44) & 0xffffdfff;
    }
    *(uint *)(param_1 + 0x16a44) = uVar5;
    if (2 < RTDebugLevel) {
      printk("HT: STBC = %d\n",(uint)(*(int *)(param_1 + 0x16a44) << 0x12) >> 0x1f);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_40MHZ_INTOLERANT",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 0) {
      *(undefined1 *)(param_1 + 0x16e07) = 0;
    }
    else {
      *(undefined1 *)(param_1 + 0x16e07) = 1;
    }
    if (2 < RTDebugLevel) {
      printk("HT: 40MHZ INTOLERANT = %d\n",*(undefined1 *)(param_1 + 0x16e07));
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_TxStream",param_2,10,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if ((iVar3 == 1) || (iVar3 == 2)) {
      *(char *)(param_1 + 0x16e13) = (char)iVar3;
    }
    else {
      *(undefined1 *)(param_1 + 0x16e13) = 3;
      if (*(uint *)(param_1 + 0x4a94) < 0x28830300) {
        *(undefined1 *)(param_1 + 0x16e13) = 2;
      }
    }
    if (2 < RTDebugLevel) {
      printk("HT: Tx Stream = %d\n",*(undefined1 *)(param_1 + 0x16e13));
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_RxStream",param_2,10,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if ((iVar3 == 1) || (iVar3 == 2)) {
      *(char *)(param_1 + 0x16e14) = (char)iVar3;
    }
    else {
      *(undefined1 *)(param_1 + 0x16e14) = 3;
      if (*(uint *)(param_1 + 0x4a94) < 0x28830300) {
        *(undefined1 *)(param_1 + 0x16e14) = 2;
      }
    }
    if (2 < RTDebugLevel) {
      printk("HT: Rx Stream = %d\n",*(undefined1 *)(param_1 + 0x16e14));
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_DisallowTKIP",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    if (iVar3 == 1) {
      *(undefined1 *)(param_1 + 0x16e7a) = 1;
    }
    else {
      *(undefined1 *)(param_1 + 0x16e7a) = 0;
    }
    if (2 < RTDebugLevel) {
      if (*(char *)(param_1 + 0x16e7a) == '\x01') {
        puVar8 = &_LC60;
      }
      else {
        puVar8 = &_LC59;
      }
      printk("HT: Disallow TKIP mode = %s\n",puVar8);
    }
  }
  iVar3 = RTMPGetKeyParameter("OBSSScanParam",param_2,0x20,param_3,1);
  if (iVar3 != 0) {
    iVar3 = rstrtok(param_2,&_LC37)   //possible issue identified - semgrep
    iVar9 = 0;
    while (iVar3 != 0) {
      iVar3 = simple_strtol(iVar3,0,10);
      uVar6 = (undefined2)iVar3;
      switch(iVar9) {
      case 0:
        if (iVar3 - 5U < 0x3e4) {
          *(undefined2 *)(param_1 + 0x16b5e) = uVar6;
          if (2 < RTDebugLevel) {
            pcVar7 = "OBSSScanParam for Dot11OBssScanPassiveDwell=%d\n";
            goto LAB_00049bf8;
          }
          break;
        }
        if (RTDebugLevel == 0) break;
        pcVar7 = "Invalid OBSSScanParam for Dot11OBssScanPassiveDwell(%d), should in range 5~1000\n"
        ;
        goto LAB_00049bf8;
      case 1:
        if (iVar3 - 10U < 0x3df) {
          *(undefined2 *)(param_1 + 0x16b60) = uVar6;
          if (2 < RTDebugLevel) {
            pcVar7 = "OBSSScanParam for Dot11OBssScanActiveDwell=%d\n";
            goto LAB_00049bf8;
          }
        }
        else if (RTDebugLevel != 0) {
          pcVar7 = 
          "Invalid OBSSScanParam for Dot11OBssScanActiveDwell(%d), should in range 10~1000\n";
          goto LAB_00049bf8;
        }
        break;
      case 2:
        *(undefined2 *)(param_1 + 0x16b62) = uVar6;
        if (2 < RTDebugLevel) {
          pcVar7 = "OBSSScanParam for Dot11BssWidthTriggerScanInt=%d\n";
          goto LAB_00049bf8;
        }
        break;
      case 3:
        if (iVar3 - 200U < 0x2649) {
          *(undefined2 *)(param_1 + 0x16b64) = uVar6;
          if (2 < RTDebugLevel) {
            pcVar7 = "OBSSScanParam for Dot11OBssScanPassiveTotalPerChannel=%d\n";
            goto LAB_00049bf8;
          }
        }
        else {
          pcVar7 = 
          "Invalid OBSSScanParam for Dot11OBssScanPassiveTotalPerChannel(%d), should in range 200~10000\n"
          ;
          if (RTDebugLevel != 0) goto LAB_00049bf8;
        }
        break;
      case 4:
        if (iVar3 - 0x14U < 0x26fd) {
          *(undefined2 *)(param_1 + 0x16b66) = uVar6;
          if (2 < RTDebugLevel) {
            pcVar7 = "OBSSScanParam for Dot11OBssScanActiveTotalPerChannel=%d\n";
            goto LAB_00049bf8;
          }
        }
        else if (RTDebugLevel != 0) {
          pcVar7 = 
          "Invalid OBSSScanParam for Dot11OBssScanActiveTotalPerChannel(%d), should in range 20~10000\n"
          ;
          goto LAB_00049bf8;
        }
        break;
      case 5:
        *(undefined2 *)(param_1 + 0x16b68) = uVar6;
        goto LAB_00049be4;
      case 6:
        *(undefined2 *)(param_1 + 0x16b6a) = uVar6;
LAB_00049be4:
        pcVar7 = "OBSSScanParam for Dot11BssWidthChanTranDelayFactor=%d\n";
        if (2 < RTDebugLevel) {
LAB_00049bf8:
          printk(pcVar7);
        }
      }
      iVar3 = rstrtok(0,&_LC37)   //possible issue identified - semgrep
      iVar9 = iVar9 + 1;
    }
    if (iVar9 != 7) {
      if (RTDebugLevel != 0) {
        printk("Wrong OBSSScanParamtetrs format in dat file!!!!! Use default value.\n");
      }
      *(undefined2 *)(param_1 + 0x16b6a) = 0x19;
      *(undefined2 *)(param_1 + 0x16b60) = 10;
      *(undefined2 *)(param_1 + 0x16b62) = 300;
      *(undefined2 *)(param_1 + 0x16b64) = 200;
      *(undefined2 *)(param_1 + 0x16b66) = 0x14;
      *(undefined2 *)(param_1 + 0x16b68) = 5;
      *(undefined2 *)(param_1 + 0x16b5e) = 0x14;
    }
    *(uint *)(param_1 + 0x16b6c) =
         (uint)*(ushort *)(param_1 + 0x16b68) * (uint)*(ushort *)(param_1 + 0x16b62);
    if (2 < RTDebugLevel) {
      printk("OBSSScanParam for Dot11BssWidthChanTranDelay=%ld\n");
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_BSSCoexistence",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    iVar3 = simple_strtol(param_2,0,10);
    *(bool *)(param_1 + 0x16b30) = iVar3 == 1;
    if (2 < RTDebugLevel) {
      if (iVar3 == 1) {
        puVar8 = &_LC60;
      }
      else {
        puVar8 = &_LC59;
      }
      printk("HT: 20/40 BssCoexSupport = %s\n",puVar8);
    }
  }
  iVar3 = RTMPGetKeyParameter("HT_BSSCoexApCntThr",param_2,0x19,param_3,1);
  if (iVar3 != 0) {
    uVar2 = simple_strtol(param_2,0,10);
    *(undefined1 *)(param_1 + 0x16b31) = uVar2;
    if (2 < RTDebugLevel) {
      printk("HT: 20/40 BssCoexApCntThr = %d\n");
      return;
    }
  }
  return;
}