void APMlmeDynamicTxRateSwitching(int param_1)
{
byte bVar1;
short sVar2;
bool bVar3;
char cVar4;
int iVar5;
uint uVar6;
uint uVar7;
int iVar8;
uint uVar9;
uint uVar10;
uint uVar11;
uint uVar12;
uint uVar13;
uint uVar14;
uint uVar15;
uint uVar16;
uint uVar17;
uint uVar18;
int *piVar19;
int iVar20;
int iVar21;
uint uVar22;
uint uVar23;
byte local_40;
undefined1 auStack_3f [3];
byte *local_3c;
int local_38;
uint local_30;
local_40 = 0;
if (*(char *)(param_1 + 0x76a0c) == -0x80) {
local_38 = param_1 + 0x16894;
piVar19 = (int *)(param_1 + 0x5dd2c);
iVar20 = 1;
uVar23 = 0;
uVar22 = 0;
do {
if ((piVar19[-0xf5] != 0) && ((piVar19[-0xf5] != 1 || (piVar19[-0x58] == 2)))) {
iVar21 = param_1 + iVar20 * 0xa20 + 0x5cf38;
iVar5 = RTMPCheckEntryEnableAutoRateSwitch(param_1,iVar21);
if (iVar5 != 0) {
MlmeSelectTxRateTable(param_1,iVar21,&local_3c,&local_40,auStack_3f);
if (*(short *)(param_1 + 0x71338) == 1) {
if (*(char *)(param_1 + 0xec) == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x170c);
uVar22 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1710);
}
else {
uVar6 = 0;
uVar22 = 0;
}
uVar11 = uVar22 >> 0x10;
uVar10 = uVar6 & 0xffff;
uVar22 = uVar22 & 0xffff;
*(uint *)(param_1 + 0x766a0) = uVar10 + *(int *)(param_1 + 0x766a0);
uVar12 = uVar22 + uVar11 + uVar10;
*(undefined1 *)(param_1 + 0x769d9) = 1;
*(uint *)(param_1 + 0x766f4) = (uVar6 >> 0x10) + *(int *)(param_1 + 0x766f4);
*(uint *)(param_1 + 0x7670c) = uVar11 + *(int *)(param_1 + 0x7670c);
*(uint *)(param_1 + 0x76708) = uVar22 + *(int *)(param_1 + 0x76708);
*(uint *)(param_1 + 0x76704) = uVar10 + *(int *)(param_1 + 0x76704);
*(uint *)(param_1 + 0x76690) = uVar22 + *(int *)(param_1 + 0x76690);
*(uint *)(param_1 + 0x766a8) = uVar11 + *(int *)(param_1 + 0x766a8);
iVar5 = uVar10 + uVar11;
if (uVar12 != 0) goto LAB_00072d50;
uVar6 = *(uint *)(param_1 + 0x4bf4);
}
else {
uVar12 = *piVar19 + piVar19[-1] + piVar19[1];
if (uVar12 == 0) {
uVar6 = *(uint *)(param_1 + 0x4bf4);
}
else {
iVar5 = piVar19[1] + *piVar19;
LAB_00072d50:
uVar23 = (uint)(iVar5 * 100) / uVar12;
uVar6 = *(uint *)(param_1 + 0x4bf4);
}
}
uVar10 = (uint)*(byte *)((int)piVar19 + -0x86);
if ((uVar6 & 0xf) == 3) {
iVar5 = (int)(char)(((int)*(char *)((int)piVar19 + 0xbe) +
(int)*(char *)((int)piVar19 + 0xbd) +
(int)*(char *)((int)piVar19 + 0xbf)) / 3);
}
else {
iVar5 = (int)*(char *)((int)piVar19 + 0xbd);
if ((uVar6 & 0xf) == 2) {
iVar5 = *(char *)((int)piVar19 + 0xbe) + iVar5 >> 1;
}
}
if (uVar10 == 0) {
uVar6 = 1;
uVar11 = 0;
}
else {
uVar7 = local_40 - 1;
if ((int)uVar10 < (int)uVar7) {
uVar6 = uVar10 + 1 & 0xff;
uVar11 = uVar10 - 1 & 0xff;
}
else {
uVar6 = uVar10;
uVar11 = uVar10;
if (uVar10 == uVar7) {
uVar11 = local_40 - 2 & 0xff;
}
}
}
uVar9 = (uint)local_3c[(uVar10 + 1) * 5 + 4];
uVar7 = (uint)local_3c[(uVar10 + 1) * 5 + 3];
if (-0x41 < iVar5) {
uVar7 = uVar7 + (local_3c[(uVar10 + 1) * 5 + 3] >> 1) & 0xff;
uVar9 = uVar9 + (local_3c[(uVar10 + 1) * 5 + 4] >> 1) & 0xff;
}
*(undefined1 *)((int)piVar19 + 0x1a) = *(undefined1 *)((int)piVar19 + 0x19);
if (uVar12 < 0x10) {
local_30 = (uint)*local_3c;
uVar18 = 0;
uVar17 = 0;
uVar16 = 0;
uVar14 = 0;
uVar9 = 0;
uVar11 = 0;
uVar10 = 0;
uVar15 = 0;
uVar13 = 0;
uVar7 = 0;
uVar6 = 0;
uVar12 = 0;
while ((int)uVar12 < (int)local_30) {
bVar1 = local_3c[(uVar12 + 1) * 5 + 2];
if (bVar1 == 0) {
if (uVar12 != 0) {
LAB_00072ef4:
if (bVar1 == 4) {
uVar14 = uVar12 & 0xff;
}
else if (bVar1 == 5) {
uVar9 = uVar12 & 0xff;
}
else if (bVar1 == 6) {
uVar11 = uVar12 & 0xff;
}
else if (bVar1 == 7) {
uVar10 = uVar12 & 0xff;
}
else if (bVar1 == 0xc) {
uVar15 = uVar12 & 0xff;
}
else if (bVar1 == 0xd) {
uVar13 = uVar12 & 0xff;
}
else if (bVar1 == 0xe) {
uVar7 = uVar12 & 0xff;
}
else {
cVar4 = (char)uVar12 + '\x01';
if (bVar1 != 0xf) goto LAB_00072f80;
if ((local_3c[(uVar12 + 1) * 5 + 1] & 2) == 0) {
uVar6 = uVar12 & 0xff;
}
}
goto LAB_00072f7c;
}
cVar4 = '\x01';
}
else {
if (bVar1 == 1) {
uVar18 = uVar12 & 0xff;
}
else if (bVar1 == 2) {
uVar17 = uVar12 & 0xff;
}
else {
if (bVar1 != 3) goto LAB_00072ef4;
uVar16 = uVar12 & 0xff;
}
LAB_00072f7c:
cVar4 = (char)uVar12 + '\x01';
}
LAB_00072f80:
uVar12 = (uint)cVar4;
}
iVar8 = 5;
if ((*(uint *)(param_1 + 0x4bf4) & 0x40000) != 0) {
iVar8 = 2;
}
if ((((local_3c == &RateSwitchTable11BGN2S) ||
(local_3c == &RateSwitchTable11BGN2SForABand)) ||
(local_3c == &RateSwitchTable11N2S)) ||
((local_3c == &RateSwitchTable11N2SForABand || (local_3c == &RateSwitchTable)))) {
if (((((uVar6 != 0) && (iVar8 + -0x46 <= iVar5)) ||
((uVar7 != 0 && (uVar6 = uVar7, iVar8 + -0x48 <= iVar5)))) ||
(((uVar13 != 0 && (uVar6 = uVar13, iVar8 + -0x4c <= iVar5)) ||
((((uVar15 != 0 && (uVar6 = uVar15, iVar8 + -0x4e <= iVar5)) ||
((uVar14 != 0 && (uVar6 = uVar14, iVar8 + -0x52 <= iVar5)))) ||
((uVar16 != 0 && (uVar6 = uVar16, iVar8 + -0x54 <= iVar5)))))))) ||
(((uVar17 != 0 && (uVar6 = uVar17, iVar8 + -0x56 <= iVar5)) ||
(uVar6 = 0, uVar18 == 0)))) goto LAB_000731bc;
bVar3 = iVar5 < iVar8 + -0x58;
LAB_000731a8:
if (bVar3) {
uVar6 = 0;
goto LAB_000731bc;
}
uVar10 = (uint)*(byte *)((int)piVar19 + -0x86);
uVar12 = uVar18;
}
else {
uVar6 = uVar10;
if ((local_3c == &RateSwitchTable11BGN1S) || (local_3c == &RateSwitchTable11N1S)) {
if ((((uVar10 == 0) || (iVar5 <= iVar8 + -0x48)) &&
(((uVar11 == 0 || (uVar6 = uVar11, iVar5 <= iVar8 + -0x4a)) &&
((uVar9 == 0 || (uVar6 = uVar9, iVar5 <= iVar8 + -0x4d)))))) &&
(((((uVar14 == 0 || (uVar6 = uVar14, iVar5 <= iVar8 + -0x4f)) &&
((uVar16 == 0 || (uVar6 = uVar16, iVar5 <= iVar8 + -0x51)))) &&
(((uVar17 == 0 || (uVar6 = uVar17, iVar5 <= iVar8 + -0x53)) &&
(uVar12 = 0, uVar6 = uVar12, uVar18 != 0)))) &&
(uVar6 = uVar18, iVar5 <= iVar8 + -0x56)))) {
uVar10 = (uint)*(byte *)((int)piVar19 + -0x86);
goto LAB_000731c0;
}
}
else if (((((uVar10 == 0) || (iVar5 < -0x45)) &&
((uVar11 == 0 || (uVar6 = uVar11, iVar5 < -0x49)))) &&
(((uVar9 == 0 || (uVar6 = uVar9, iVar5 < -0x4d)) &&
((uVar14 == 0 || (uVar6 = uVar14, iVar5 < -0x51)))))) &&
((((uVar16 == 0 || (uVar6 = uVar16, iVar5 < -0x54)) &&
((uVar17 == 0 || (uVar6 = uVar17, iVar5 < -0x56)))) &&
(uVar6 = 0, uVar18 != 0)))) {
bVar3 = iVar5 < -0x59;
goto LAB_000731a8;
}
LAB_000731bc:
uVar10 = (uint)*(byte *)((int)piVar19 + -0x86);
uVar12 = uVar6;
}
LAB_000731c0:
if (uVar10 != uVar12) {
*(char *)((int)piVar19 + -0x86) = (char)uVar12;
APMlmeSetTxRate(param_1,iVar21,local_3c + (uVar12 + 1) * 5);
}
memset((void *)(param_1 + iVar20 * 0xa20 + 0x5d2c6),0,0x40) //possible issue identified - semgrep
memset((void *)(param_1 + iVar20 * 0xa20 + 0x5d32c),0,0x20) //possible issue identified - semgrep
*(undefined1 *)(piVar19 + 6) = 1;
}
else {
if ((char)piVar19[6] != '\x01') {
piVar19[3] = piVar19[3] + 1;
if (uVar23 < uVar9) {
bVar3 = false;
if (uVar23 <= uVar7) {
iVar5 = param_1 + (iVar20 * 0x510 + uVar10 + 0x2e960) * 2;
sVar2 = *(short *)(iVar5 + 6) //possible issue identified - semgrep
if (sVar2 == 0) {
cVar4 = (char)piVar19[4] //possible issue identified - semgrep
}
else {
*(short *)(iVar5 + 6) = sVar2 + -1;
cVar4 = (char)piVar19[4] //possible issue identified - semgrep
}
if (cVar4 == '\0') {
iVar5 = param_1 + (iVar20 * 0x510 + uVar6 + 0x2e960) * 2;
sVar2 = *(short *)(iVar5 + 6) //possible issue identified - semgrep
bVar3 = true;
if (sVar2 == 0) goto LAB_0007334c;
*(short *)(iVar5 + 6) = sVar2 + -1;
}
else {
*(char *)(piVar19 + 4) = cVar4 + -1;
}
goto LAB_00073348;
}
}
else {
*(undefined2 *)(param_1 + (iVar20 * 0x510 + uVar10 + 0x2e960) * 2 + 6) = 8;
LAB_00073348:
bVar3 = true;
}
LAB_0007334c:
*(char *)(iVar20 * 0xa20 + param_1 + uVar10 + 0x5d32c) = (char)uVar23;
if (bVar3) {
if ((uVar10 == uVar11) ||
(*(ushort *)(param_1 + (iVar20 * 0x510 + uVar10 + 0x2e960) * 2 + 6) < 8)) {
if ((uVar10 != uVar6) &&
(*(short *)(param_1 + (iVar20 * 0x510 + uVar6 + 0x2e960) * 2 + 6) == 0)) {
*(char *)((int)piVar19 + -0x86) = (char)uVar6;
}
}
else {
*(char *)((int)piVar19 + -0x86) = (char)uVar11;
}
}
uVar6 = (uint)*(byte *)((int)piVar19 + -0x86);
if (uVar10 < uVar6) {
piVar19[3] = 0;
*(undefined1 *)(piVar19 + 4) = 0;
*(undefined1 *)((int)piVar19 + 0x19) = 1;
memset((void *)(param_1 + iVar20 * 0xa20 + 0x5d2c6),0,0x40) //possible issue identified - semgrep
memset((void *)(param_1 + iVar20 * 0xa20 + 0x5d32c),0,0x20) //possible issue identified - semgrep
bVar3 = true;
if (*(char *)(param_1 + 0x168bc) == '\0') {
RTMPSetTimer(local_38,100);
*(undefined1 *)(param_1 + 0x168bc) = 1;
LAB_00073510:
bVar3 = true;
}
}
else if (uVar6 < uVar10) {
piVar19[3] = 0;
*(undefined1 *)((int)piVar19 + 0x19) = 2;
*(undefined2 *)(param_1 + (iVar20 * 0x510 + uVar6 + 0x2e960) * 2 + 6) = 0;
*(undefined1 *)(iVar20 * 0xa20 + param_1 + uVar6 + 0x5d32c) = 0;
*(undefined1 *)(piVar19 + 4) = 0;
bVar3 = true;
if (*(char *)(param_1 + 0x168bc) == '\0') {
RTMPSetTimer(local_38,100);
*(undefined1 *)(param_1 + 0x168bc) = 1;
goto LAB_00073510;
}
}
else {
*(undefined1 *)((int)piVar19 + 0x19) = 0;
bVar3 = false;
}
if (*(short *)(param_1 + 0x71338) == 1) {
piVar19[7] = uVar22;
}
else {
piVar19[7] = piVar19[-1];
}
if (iVar21 != 0) {
*piVar19 = 0;
piVar19[1] = 0;
piVar19[-1] = 0;
}
if ((bVar3) && (local_3c + (*(byte *)((int)piVar19 + -0x86) + 1) * 5 != (byte *)0x0))
{
APMlmeSetTxRate(param_1,iVar21);
}
goto LAB_00073580;
}
*(undefined1 *)(piVar19 + 6) = 0;
*(undefined1 *)((int)piVar19 + 0x19) = 0;
}
if (iVar21 != 0) {
*piVar19 = 0;
piVar19[1] = 0;
piVar19[-1] = 0;
}
}
}
LAB_00073580:
iVar20 = iVar20 + 1;
piVar19 = piVar19 + 0x288;
} while (iVar20 != 0x20);
}
return;
}