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