void MlmeSelectTxRateTable
(int param_1,int param_2,undefined4 *param_3,undefined1 *param_4,undefined1 *param_5)
{
byte bVar1;
undefined1 uVar2;
char cVar3;
undefined1 *puVar4;
uint uVar5;
if (*(char *)(param_1 + 0x16a4b) != '\0') {
puVar4 = &RateSwitchTable;
*param_3 = &RateSwitchTable;
uVar2 = RateSwitchTable;
goto LAB_00014cd0;
}
bVar1 = *(byte *)(param_2 + 0x477);
if (bVar1 == 0xc) {
cVar3 = *(char *)(param_2 + 0x45d) //possible issue identified - semgrep
LAB_00014abc:
if ((cVar3 == -1) &&
((*(char *)(param_2 + 0x45e) == '\0' || (*(char *)(param_1 + 0x16e13) == '\x01')))) {
puVar4 = &RateSwitchTable11BGN1S;
*param_3 = &RateSwitchTable11BGN1S;
uVar2 = RateSwitchTable11BGN1S;
goto LAB_00014cd0;
}
if (bVar1 != 0xc) goto LAB_00014b0c;
uVar5 = *(uint *)(param_2 + 0x45c);
LAB_00014b20:
if ((uVar5 & 0xffff00) == 0xffff00) {
if (((*(uint *)(param_1 + 0x4bf4) & 0xf0) == 0x30) && (*(char *)(param_2 + 0x45f) == '\0')) {
bVar1 = *(byte *)(param_1 + 0x4be0);
}
else {
if (*(char *)(param_1 + 0x16e13) != '\x02') {
cVar3 = *(char *)(param_2 + 0x45d) //possible issue identified - semgrep
goto LAB_00014ba0;
}
bVar1 = *(byte *)(param_1 + 0x4be0);
}
if (bVar1 < 0xf) {
puVar4 = &RateSwitchTable11BGN2S;
*param_3 = &RateSwitchTable11BGN2S;
uVar2 = RateSwitchTable11BGN2S;
}
else {
puVar4 = &RateSwitchTable11BGN2SForABand;
*param_3 = &RateSwitchTable11BGN2SForABand;
uVar2 = RateSwitchTable11BGN2SForABand;
}
goto LAB_00014cd0;
}
cVar3 = *(char *)(param_2 + 0x45d) //possible issue identified - semgrep
}
else {
if (*(char *)(param_1 + 0x16964) == '\0') {
cVar3 = *(char *)(param_2 + 0x45d) //possible issue identified - semgrep
goto LAB_00014abc;
}
LAB_00014b0c:
if (*(char *)(param_1 + 0x16964) == '\0') {
uVar5 = *(uint *)(param_2 + 0x45c);
goto LAB_00014b20;
}
cVar3 = *(char *)(param_2 + 0x45d) //possible issue identified - semgrep
}
LAB_00014ba0:
if (cVar3 == -1) {
if ((*(char *)(param_2 + 0x45e) == '\0') || (*(char *)(param_1 + 0x16e13) == '\x01')) {
puVar4 = &RateSwitchTable11N1S;
*param_3 = &RateSwitchTable11N1S;
uVar2 = RateSwitchTable11N1S;
goto LAB_00014cd0;
}
uVar5 = *(uint *)(param_2 + 0x45c);
}
else {
uVar5 = *(uint *)(param_2 + 0x45c);
}
uVar5 = uVar5 & 0xffff00;
if ((uVar5 == 0xffff00) && (1 < *(byte *)(param_1 + 0x16e13))) {
if (*(byte *)(param_1 + 0x4be0) < 0xf) {
puVar4 = &RateSwitchTable11N2S;
*param_3 = &RateSwitchTable11N2S;
uVar2 = RateSwitchTable11N2S;
}
else {
puVar4 = &RateSwitchTable11N2SForABand;
*param_3 = &RateSwitchTable11N2SForABand;
uVar2 = RateSwitchTable11N2SForABand;
}
goto LAB_00014cd0;
}
if ((bVar1 == 4) || (*(char *)(param_1 + 0x16982) == '\x01')) {
puVar4 = &RateSwitchTable11B;
*param_3 = &RateSwitchTable11B;
uVar2 = RateSwitchTable11B;
goto LAB_00014cd0;
}
if (bVar1 < 9) {
if (bVar1 == 8) {
if (uVar5 != 0) {
bVar1 = *(byte *)(param_1 + 0x4be0);
goto LAB_00014ca4;
}
}
else {
bVar1 = *(byte *)(param_1 + 0x4be0);
LAB_00014ca4:
if (bVar1 < 0xf) goto LAB_00014cb4;
}
puVar4 = &RateSwitchTable11G;
*param_3 = &RateSwitchTable11G;
uVar2 = RateSwitchTable11G;
}
else {
if (uVar5 != 0) {
bVar1 = *(byte *)(param_1 + 0x4be0);
goto LAB_00014ca4;
}
LAB_00014cb4:
puVar4 = &RateSwitchTable11BG;
*param_3 = &RateSwitchTable11BG;
uVar2 = RateSwitchTable11BG;
}
LAB_00014cd0:
*param_4 = uVar2;
*param_5 = puVar4[1];
return;
}