void RTMPSetHT(int param_1,int param_2)
{
bool bVar1;
int iVar2;
uint uVar3;
int iVar4;
char cVar5;
uint uVar6;
uint uVar7;
code *pcVar8;
uint uVar9;
uint uVar10;
uint uVar11;
byte bVar12;
cVar5 = *(char *)(param_1 + 0x16e14) //possible issue identified - semgrep
iVar2 = CHAN_PropertyCheck(param_1,*(undefined1 *)(param_1 + 0x169ec),0x30);
if (iVar2 == 1) {
*(undefined1 *)(param_2 + 8) = 0;
}
else if (*(char *)(param_2 + 6) == '\x03') {
iVar2 = CHAN_PropertyCheck(param_1,*(undefined1 *)(param_1 + 0x169ec),0x20);
if (iVar2 == 1) {
*(undefined1 *)(param_2 + 6) = 1;
}
}
else if ((*(char *)(param_2 + 6) == '\x01') &&
(iVar2 = CHAN_PropertyCheck(param_1,*(undefined1 *)(param_1 + 0x169ec),0x10), iVar2 == 1))
{
*(undefined1 *)(param_2 + 6) = 3;
}
if (2 < RTDebugLevel) {
printk("RTMPSetHT : HT_mode(%d), ExtOffset(%d), MCS(%d), BW(%d), STBC(%d), SHORTGI(%d)\n",
*(undefined1 *)(param_2 + 5),*(undefined1 *)(param_2 + 6),*(undefined1 *)(param_2 + 7),
*(undefined1 *)(param_2 + 8),*(undefined1 *)(param_2 + 9),*(undefined1 *)(param_2 + 10));
}
RTMPZeroMemory(param_1 + 0x16afe,0x1a);
RTMPZeroMemory(param_1 + 0x16b18,0x16);
RTMPZeroMemory(param_1 + 0x16b2e,1);
RTMPZeroMemory(param_1 + 0x16af6,8);
if (*(char *)(param_1 + 0x16a88) == '\0') {
uVar3 = *(uint *)(param_1 + 0x16b10) & 0xfff3ffff;
}
else {
uVar3 = *(uint *)(param_1 + 0x16b10) & 0xfff3ffff | 0xc0000;
}
*(uint *)(param_1 + 0x16b10) = uVar3;
*(uint *)(param_1 + 0x16b00) = *(uint *)(param_1 + 0x16b00) & 0xfffffffc | 3;
*(uint *)(param_1 + 0x16af8) = *(uint *)(param_1 + 0x16af8) & 0xfffffffc | 3;
if (2 < RTDebugLevel) {
printk("RTMPSetHT : RxBAWinLimit = %d\n",*(undefined1 *)(param_1 + 0x16a64));
}
iVar2 = *(int *)(param_1 + 0x16a64);
uVar3 = (uint)(iVar2 << 8) >> 0x1f;
uVar9 = *(uint *)(param_1 + 0x16af8);
uVar6 = (uint)(iVar2 << 10) >> 0x1d;
uVar7 = (uint)(iVar2 << 6) >> 0x1e;
uVar11 = *(uint *)(RTMPCheckRates + param_1) & 0xf9f9ffff | ((uint)(iVar2 << 9) >> 0x1f) << 0x19 |
uVar3 << 0x1a | uVar7 << 0x11;
uVar10 = uVar9 & 0xffffffe3 | uVar6 << 2;
*(uint *)(param_1 + 0x16b00) = *(uint *)(param_1 + 0x16b00) & 0xffffffe3 | uVar6 << 2;
*(uint *)(param_1 + 0x16afc) =
*(uint *)(param_1 + 0x16afc) & 0xf7f3ffff | uVar3 << 0x1b | uVar7 << 0x12;
*(uint *)(RTMPCheckRates + param_1) = uVar11;
*(uint *)(param_1 + 0x16af8) = uVar10;
if (2 < RTDebugLevel) {
printk("RTMPSetHT : AMsduSize = %d, MimoPs = %d, MpduDensity = %d, MaxRAmpduFactor = %d\n",
(uVar11 << 5) >> 0x1f,(uVar11 << 0xd) >> 0x1e,(uVar10 << 0x1b) >> 0x1d,uVar9 & 3);
}
uVar3 = Status;
if (*(char *)(param_2 + 5) == '\x01') {
uVar6 = *(uint *)(param_1 + 0x16afc);
*(uint *)(RTMPCheckRates + param_1) = *(uint *)(RTMPCheckRates + param_1) & 0xfff7ffff | 0x80000
;
*(uint *)(param_1 + 0x16afc) = uVar6 & 0xffefffff | 0x100000;
}
else {
*(uint *)(RTMPCheckRates + param_1) = *(uint *)(RTMPCheckRates + param_1) & 0xfff7ffff;
}
if (cVar5 == '\x02') {
*(undefined1 *)(param_1 + 0x16b02) = 0xff;
*(undefined1 *)(param_1 + 0x16b01) = 0xff;
}
else if (cVar5 == '\x03') {
*(undefined1 *)(param_1 + 0x16b03) = 0xff;
*(undefined1 *)(param_1 + 0x16b01) = 0xff;
*(undefined1 *)(param_1 + 0x16b02) = 0xff;
}
else if (cVar5 == '\x01') {
*(undefined1 *)(param_1 + 0x16b01) = 0xff;
*(undefined1 *)(param_1 + 0x16b02) = 0;
}
if ((*(char *)(param_1 + 0x16e07) != '\0') && (*(char *)(param_2 + 8) == '\x01')) {
*(undefined1 *)(param_2 + 8) = 0;
*(uint *)(param_1 + 0x16afc) = *(uint *)(param_1 + 0x16afc) & 0xbfffffff | 0x40000000;
}
if (*(char *)(param_2 + 8) != '\x01') {
uVar6 = *(uint *)(RTMPCheckRates + param_1);
*(uint *)(param_1 + 0x16afc) = *(uint *)(param_1 + 0x16afc) & 0xfffdffff;
*(uint *)(param_1 + 0x16b18) = *(uint *)(param_1 + 0x16b18) & 0xfffff8ff;
*(uint *)(RTMPCheckRates + param_1) = uVar6 & 0xfffeffff;
*(undefined1 *)(param_1 + 0x169ed) = *(undefined1 *)(param_1 + 0x169ec);
uVar6 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 0;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar5 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0400;
}
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x400) {
uVar6 = uVar3 & 0xff;
goto LAB_0003c2d0;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_0003c2d0:
if ((int)(uVar3 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,4);
uVar6 = (uint)*(byte *)(param_1 + 0x4acd);
LAB_0003c464:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 0;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar5 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0400;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x400) {
uVar6 = uVar3 & 0xff;
goto LAB_0003c40c;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_0003c40c:
if ((int)(uVar3 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,4);
uVar6 = (uint)*(byte *)(param_1 + 0x4acd);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_0003c464;
}
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar5 == '\x01') {
Status = Status & 0xfffffffe;
if (uVar7 != 0) {
Status = Status | 1;
}
goto LAB_0003c488;
}
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
LAB_0003c488:
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = Status;
if (cVar5 == '\0') {
uVar6 = uVar6 & 0xe7;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 1;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) break;
iVar2 = iVar2 + 1;
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_0003c560;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar5 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa0400;
}
*(char *)(param_1 + 0x4acd) = (char)uVar6;
if (iVar2 != 100) goto LAB_0003c580;
LAB_0003c560:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",4);
LAB_0003c580:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 1;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar3 & 0x20000) == 0) break;
iVar4 = iVar2 % 0x14;
iVar2 = iVar2 + 1;
if ((iVar4 == 0) && (cVar5 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 & 0xfffdffff;
}
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_0003c6dc;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar5 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 | 0xa0400;
}
iVar4 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar4 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 | 0x80400;
}
*(char *)(param_1 + 0x4acd) = (char)uVar6;
if (iVar2 != 100) goto LAB_0003c724;
LAB_0003c6dc:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",4);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_0003c724:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
if ((cVar5 == '\x01') && (Status = Status & 0xfffffffe, uVar7 != 0)) {
Status = Status | 1;
}
}
pcVar8 = *(code **)(param_1 + 0x94);
AsicRxAntEvalTimeout[param_1 + 5] = (code)0x0;
if (pcVar8 != (code *)0x0) {
(*pcVar8)(param_1,3,1,0,0);
}
goto LAB_0003c778;
}
uVar6 = *(uint *)(param_1 + 0x16afc);
*(undefined1 *)(param_1 + 0x16b05) = 1;
*(uint *)(param_1 + 0x16afc) = uVar6 & 0xfffdffff | 0x20000;
if (*(byte *)(param_1 + 0x169ec) < 0xf) {
*(uint *)(param_1 + 0x16afc) = uVar6 & 0xeffdffff | 0x10020000;
}
uVar7 = *(uint *)(param_1 + 0x16b18);
uVar6 = *(uint *)(RTMPCheckRates + param_1);
*(uint *)(param_1 + 0x16b18) = uVar7 & 0xfffffbff | 0x400;
*(uint *)(RTMPCheckRates + param_1) = uVar6 & 0xfffeffff | 0x10000;
iVar2 = 3;
if (*(char *)(param_2 + 6) != '\x03') {
iVar2 = 1;
}
*(uint *)(param_1 + 0x16b18) = uVar7 & 0xfffff8ff | 0x400 | iVar2 << 8;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x132c);
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 0;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar5 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0300;
}
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x300) {
uVar9 = uVar3 & 0xff;
goto LAB_0003b720;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar9 = 0;
LAB_0003b720:
if ((int)(uVar3 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,3);
uVar9 = (uint)*(byte *)(param_1 + 0x4acc);
LAB_0003b8b4:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 0;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar5 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0300;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x300) {
uVar9 = uVar3 & 0xff;
goto LAB_0003b85c;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar9 = 0;
LAB_0003b85c:
if ((int)(uVar3 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,3);
uVar9 = (uint)*(byte *)(param_1 + 0x4acc);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_0003b8b4;
}
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if ((cVar5 == '\x01') && (Status = Status & 0xfffffffe, uVar7 != 0)) {
Status = Status | 1;
}
}
else {
uVar9 = 0;
uVar6 = 0;
}
uVar3 = Status;
if (*(char *)(param_2 + 6) == '\x03') {
uVar9 = uVar9 | 0x20;
if (*(char *)(param_1 + 0xec) == '\0') {
iVar2 = *(int *)(param_1 + 0xdc);
uVar6 = uVar6 | 1;
LAB_0003b920:
*(uint *)(iVar2 + 0x132c) = uVar6;
}
}
else if ((*(char *)(param_2 + 6) == '\x01') &&
(uVar9 = uVar9 & 0xdf, *(char *)(param_1 + 0xec) == '\0')) {
iVar2 = *(int *)(param_1 + 0xdc);
uVar6 = uVar6 & 0xfe;
goto LAB_0003b920;
}
if (*(char *)(param_1 + 0x16964) == '\x01') {
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
if ((*(uint *)(param_1 + 0x16abc) & 3) == 0) goto LAB_0003c778;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
if (cVar5 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 0;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar5 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0400;
}
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x400) {
uVar6 = uVar3 & 0xff;
goto LAB_0003ba3c;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_0003ba3c:
if ((int)(uVar3 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,4);
uVar6 = (uint)*(byte *)(param_1 + 0x4acd);
LAB_0003bbd4:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 0;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar5 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0400;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x400) {
uVar6 = uVar3 & 0xff;
goto LAB_0003bb7c;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_0003bb7c:
if ((int)(uVar3 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,4);
uVar6 = (uint)*(byte *)(param_1 + 0x4acd);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_0003bbd4;
}
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar5 == '\x01') {
Status = Status & 0xfffffffe;
if (uVar7 != 0) {
Status = Status | 1;
}
goto LAB_0003bbf8;
}
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
LAB_0003bbf8:
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = Status;
if (cVar5 == '\0') {
uVar6 = uVar6 & 0xe7;
bVar12 = (byte)uVar6 | 0x10;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 1;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) break;
iVar2 = iVar2 + 1;
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_0003bcd4;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar5 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa0410;
}
*(byte *)(param_1 + 0x4acd) = bVar12;
if (iVar2 != 100) goto LAB_0003bcf4;
LAB_0003bcd4:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",4);
LAB_0003bcf4:
if (*(char *)(param_1 + 0xad) == '\x01') {
LAB_0003beac:
Status = Status & 0xfffffffe;
if (uVar7 != 0) {
Status = Status | 1;
}
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar3 & 1;
}
iVar2 = 1;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar3 & 0x20000) == 0) break;
iVar4 = iVar2 % 0x14;
iVar2 = iVar2 + 1;
if ((iVar4 == 0) && (cVar5 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 & 0xfffdffff;
}
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_0003be50;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar5 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 | 0xa0410;
}
iVar4 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar4 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 | 0x80410;
}
*(byte *)(param_1 + 0x4acd) = bVar12;
if (iVar2 != 100) goto LAB_0003be98;
LAB_0003be50:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",4);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_0003be98:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar5 == '\x01') goto LAB_0003beac;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar3 = Status;
if (cVar5 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar3 & 1;
}
iVar2 = 1;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) break;
iVar2 = iVar2 + 1;
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_0003bf90;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar5 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar9 | 0xa0300;
}
*(char *)(param_1 + 0x4acc) = (char)uVar9;
if (iVar2 != 100) goto LAB_0003bfb0;
LAB_0003bf90:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",3);
LAB_0003bfb0:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar3 & 1;
}
iVar2 = 1;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar5 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar3 & 0x20000) == 0) break;
iVar4 = iVar2 % 0x14;
iVar2 = iVar2 + 1;
if ((iVar4 == 0) && (cVar5 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar3 & 0xfffdffff;
}
printk(&_LC49) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_0003c10c;
cVar5 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar5 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 | 0xa0300;
}
iVar4 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar4 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 | 0x80300;
}
*(char *)(param_1 + 0x4acc) = (char)uVar9;
if (iVar2 != 100) goto LAB_0003c154;
LAB_0003c10c:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",3);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_0003c154:
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar5 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
if ((cVar5 == '\x01') && (Status = Status & 0xfffffffe, uVar6 != 0)) {
Status = Status | 1;
}
}
pcVar8 = *(code **)(param_1 + 0x94);
AsicRxAntEvalTimeout[param_1 + 5] = (code)0x1;
if (pcVar8 != (code *)0x0) {
(*pcVar8)(param_1,3,1,0,1);
}
LAB_0003c778:
if (*(char *)(param_2 + 9) == '\x01') {
if ((uint)(*(int *)(param_1 + 0x4bf4) << 0x18) >> 0x1c < 2) {
uVar3 = *(uint *)(param_1 + 0x16afc) & 0xff7fffff;
uVar6 = *(uint *)(RTMPCheckRates + param_1) & 0xffbfffff;
}
else {
uVar3 = *(uint *)(param_1 + 0x16afc) & 0xff7fffff | 0x800000;
uVar6 = *(uint *)(RTMPCheckRates + param_1) & 0xffbfffff | 0x400000;
}
*(uint *)(RTMPCheckRates + param_1) = uVar6;
*(uint *)(param_1 + 0x16afc) = uVar3;
if ((*(uint *)(param_1 + 0x4bf4) & 0xf) == 0) {
uVar3 = *(uint *)(param_1 + 0x16afc);
*(uint *)(RTMPCheckRates + param_1) = *(uint *)(RTMPCheckRates + param_1) & 0xfe7fffff;
*(uint *)(param_1 + 0x16afc) = uVar3 & 0xfcffffff;
}
else {
uVar3 = *(uint *)(param_1 + 0x16afc);
*(uint *)(RTMPCheckRates + param_1) =
*(uint *)(RTMPCheckRates + param_1) & 0xfe7fffff | 0x800000;
*(uint *)(param_1 + 0x16afc) = uVar3 & 0xfcffffff | 0x1000000;
}
}
else {
*(uint *)(RTMPCheckRates + param_1) = *(uint *)(RTMPCheckRates + param_1) & 0xfe3fffff;
}
if (*(char *)(param_2 + 10) == '\x01') {
uVar6 = *(uint *)(RTMPCheckRates + param_1) & 0xffcfffff | 0x300000;
uVar3 = *(uint *)(param_1 + 0x16afc) & 0xff9fffff | 0x600000;
}
else {
uVar3 = *(uint *)(param_1 + 0x16afc) & 0xff9fffff;
uVar6 = *(uint *)(RTMPCheckRates + param_1) & 0xffcfffff;
}
*(uint *)(RTMPCheckRates + param_1) = uVar6;
*(uint *)(param_1 + 0x16afc) = uVar3;
*(undefined1 *)(param_1 + 0x16b18) = *(undefined1 *)(param_1 + 0x169ec);
if (*(char *)(param_1 + 0x16a90) == '\0') {
*(undefined2 *)(param_1 + 0x16aaa) = 0x2f;
*(undefined1 *)(param_1 + 0x16a98) = 7;
*(undefined1 *)(param_1 + 0x16a9e) = 2;
*(undefined1 *)(param_1 + 0x16a9f) = 6;
*(undefined1 *)(param_1 + 0x16aa0) = 10;
*(undefined1 *)(param_1 + 0x16a9a) = 1;
*(undefined1 *)(param_1 + 0x16aa1) = 4;
*(undefined1 *)(param_1 + 0x16aa2) = 3;
*(undefined2 *)(param_1 + 0x16aa8) = 0x5e;
*(undefined1 *)(param_1 + 0x16a90) = 1;
AsicEvaluateRxAnt[param_1 + 3] = (code)0x3;
*(undefined1 *)(param_1 + 0x16a99) = 1;
*(undefined1 *)(param_1 + 0x16a9b) = 4;
*(undefined1 *)(param_1 + 0x16a9c) = 4;
*(undefined1 *)(param_1 + 0x16a9d) = 3;
*(undefined2 *)(param_1 + 0x16aa4) = 0;
*(undefined2 *)(param_1 + 0x16aa6) = 0;
}
AsicSetEdcaParm(param_1,param_1 + 0x16a90);
uVar3 = 0;
while( true ) {
uVar6 = uVar3 & 0xff;
bVar1 = (int)(uint)*(byte *)(param_1 + 0x51aa) <= (int)uVar3;
uVar3 = uVar3 + 1;
if (bVar1) break;
RTMPSetIndividualHT(param_1,uVar6);
}
return;
}