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;
}