undefined4 ATE_GET_TSSI(int param_1,uint param_2,uint param_3,undefined1 *param_4)
{
char cVar1;
byte bVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
char *pcVar8;
int iVar9;
int iVar10;
int local_30;
uint local_2c;
if ((*(uint *)(param_1 + 0x4a94) & 0xffff0000) != 0x53500000) {
return 1;
}
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar9 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar3 & 0x2ff00) == 0x2f00) {
uVar6 = uVar3 & 0xff;
goto LAB_000a40b4;
}
}
iVar10 = iVar10 + 1;
if (iVar10 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_000a40b4:
if ((int)(uVar3 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4af8);
}
else {
printk("BBP read R%d fail\n",0x2f);
bVar2 = *(byte *)(param_1 + 0x4af8);
}
uVar6 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = uVar6 & 0xf8;
iVar10 = 0;
do {
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa2f00;
}
*(char *)(param_1 + 0x4af8) = (char)uVar6;
if (iVar10 != 100) goto LAB_000a4198;
break;
}
iVar10 = iVar10 + 1;
} while (iVar10 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x2f);
}
LAB_000a4198:
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a41b4:
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar9 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar3 & 0x2ff00) == 0x2f00) {
uVar6 = uVar3 & 0xff;
LAB_000a4248:
if ((int)(uVar3 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4af8);
}
else {
printk("BBP read R%d fail\n",0x2f);
bVar2 = *(byte *)(param_1 + 0x4af8);
}
uVar6 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = uVar6 | 4;
iVar10 = 0;
do {
uVar7 = 0;
if (cVar1 == '\0') {
uVar7 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar7 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa2f04;
}
*(char *)(param_1 + 0x4af8) = (char)uVar3;
if (iVar10 != 100) goto LAB_000a432c;
break;
}
iVar10 = iVar10 + 1;
} while (iVar10 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x2f);
}
LAB_000a432c:
RtmpOsMsDelay(100);
local_30 = 0;
uVar6 = 0;
local_2c = 0;
uVar7 = 0;
do {
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a4368:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a43f4:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a43fc;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a4368;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x2f00) goto LAB_000a43f4;
uVar3 = uVar4 & 0xff;
LAB_000a43fc:
if ((uVar4 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4af8);
}
else {
printk("BBP read R%d fail\n",0x2f);
bVar2 = *(byte *)(param_1 + 0x4af8);
}
uVar3 = (uint)bVar2;
}
if ((uVar3 & 4) != 0) goto LAB_000a4c40;
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a444c:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a44d8:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a44e0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a444c;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x2f00) goto LAB_000a44d8;
uVar3 = uVar4 & 0xff;
LAB_000a44e0:
if ((uVar4 & 0x20000) == 0) {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4af8);
}
else {
printk("BBP read R%d fail\n",0x2f);
bVar2 = *(byte *)(param_1 + 0x4af8);
}
uVar3 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = uVar3 & 0xfc;
iVar10 = 0;
do {
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar3 | 0xa2f00;
}
*(char *)(param_1 + 0x4af8) = (char)uVar3;
if (iVar10 != 100) goto LAB_000a45a8;
break;
}
iVar10 = iVar10 + 1;
} while (iVar10 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x2f);
}
LAB_000a45a8:
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a45bc:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a4648:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a4650;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a45bc;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x3100) goto LAB_000a4648;
uVar6 = uVar4 & 0xff;
LAB_000a4650:
if ((uVar4 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4afa);
}
else {
printk("BBP read R%d fail\n",0x31);
bVar2 = *(byte *)(param_1 + 0x4afa);
}
uVar6 = (uint)bVar2;
}
if (0x7c < uVar6) {
if (2 < RTDebugLevel) {
printk("TSSI: BBP_R49=%X is native value\n",uVar6);
}
*param_4 = 0x7c;
uVar6 = 0x7c;
goto LAB_000a4c40;
}
iVar10 = 0;
*param_4 = (char)uVar6;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a46dc:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a4768:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a4770;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a46dc;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x2f00) goto LAB_000a4768;
uVar3 = uVar4 & 0xff;
LAB_000a4770:
if ((uVar4 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4af8);
}
else {
printk("BBP read R%d fail\n",0x2f);
bVar2 = *(byte *)(param_1 + 0x4af8);
}
uVar3 = (uint)bVar2;
}
uVar4 = uVar3 & 0xfc;
uVar3 = uVar4 | 1;
iVar10 = 0;
do {
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar4 | 0xa2f01;
}
*(char *)(param_1 + 0x4af8) = (char)uVar3;
if (iVar10 != 100) goto LAB_000a483c;
break;
}
iVar10 = iVar10 + 1;
} while (iVar10 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x2f);
}
LAB_000a483c:
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a4850:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a48e0:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a48e8;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a4850;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x3100) goto LAB_000a48e0;
local_2c = uVar4 & 0xff;
LAB_000a48e8:
if ((uVar4 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4afa);
}
else {
printk("BBP read R%d fail\n",0x31);
bVar2 = *(byte *)(param_1 + 0x4afa);
}
local_2c = (uint)bVar2;
}
if ((local_2c & 3) == param_2) {
if (param_2 == 1) {
uVar4 = OFDM_Rate2MCS(param_1);
if (2 < RTDebugLevel) {
pcVar8 = "OFDM: MCS = %d\n";
LAB_000a49ac:
printk(pcVar8,uVar4);
}
}
else {
if (param_2 == 2) {
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a49dc:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a4a68:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a4a70;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a49dc;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x2f00) goto LAB_000a4a68;
uVar3 = uVar4 & 0xff;
LAB_000a4a70:
if ((uVar4 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4af8);
}
else {
printk("BBP read R%d fail\n",0x2f);
bVar2 = *(byte *)(param_1 + 0x4af8);
}
uVar3 = (uint)bVar2;
}
uVar4 = uVar3 & 0xfc;
uVar3 = uVar4 | 2;
iVar10 = 0;
do {
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar4 | 0xa2f02;
}
*(char *)(param_1 + 0x4af8) = (char)uVar3;
if (iVar10 != 100) goto LAB_000a4b3c;
break;
}
iVar10 = iVar10 + 1;
} while (iVar10 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x2f);
}
LAB_000a4b3c:
iVar10 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_000a4b50:
uVar4 = 0;
if (cVar1 == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar4 & 0x20000) != 0) {
LAB_000a4bdc:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a4be4;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a4b50;
}
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
}
iVar9 = 1;
while( true ) {
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar4 & 0x20000) == 0) || (iVar9 == 100)) break;
iVar9 = iVar9 + 1;
}
if ((uVar4 & 0x2ff00) != 0x3100) goto LAB_000a4bdc;
uVar7 = uVar4 & 0xff;
LAB_000a4be4:
if ((uVar4 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4afa);
}
else {
printk("BBP read R%d fail\n",0x31);
bVar2 = *(byte *)(param_1 + 0x4afa);
}
uVar7 = (uint)bVar2;
}
if (2 < RTDebugLevel) {
printk("HT: MCS = %d\n",uVar7 & 0x7f);
}
if (param_3 == (uVar7 & 0x7f)) {
return 1;
}
goto LAB_000a4c40;
}
if (param_2 != 0) {
return 1;
}
uVar4 = CCK_Rate2MCS(param_1);
if (2 < RTDebugLevel) {
pcVar8 = "CCK: MCS = %d\n";
goto LAB_000a49ac;
}
}
if (param_3 == uVar4) {
return 1;
}
}
LAB_000a4c40:
local_30 = local_30 + 1;
if (local_30 == 500) {
return 1;
}
} while( true );
}
}
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000a4248;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_000a41b4;
}