/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void APMlmeScanReqAction(int param_1,int param_2)
{
undefined1 uVar1;
int iVar2;
int iVar3;
char cVar4;
uint uVar5;
uint uVar6;
uint uVar7;
undefined1 uStack_50;
byte local_4f;
undefined1 local_4e;
undefined1 local_4d;
undefined1 auStack_4c [36];
RTMPSuspendMsduTransmission();
iVar2 = MlmeScanReqSanity(param_1,param_2,*(undefined4 *)(param_2 + 0x648),&local_4d,auStack_4c,
&local_4f,&local_4e);
if (iVar2 == 0) {
if (RTDebugLevel != 0) {
printk("AP SYNC - MlmeScanReqAction() sanity check fail. BUG!!!\n");
}
*(undefined4 *)(param_1 + 94000) = 0;
return;
}
if (2 < RTDebugLevel) {
printk("AP SYNC - MlmeScanReqAction\n");
}
*(undefined4 *)(param_1 + 0x1663c) = _jiffies;
RTMPCancelTimer(param_1 + 0x48268,&uStack_50);
*(undefined1 *)(param_1 + 0x1f128) = local_4d;
*(undefined1 *)(param_1 + 0x1f174) = local_4e;
*(byte *)(param_1 + 0x1f149) = local_4f;
memmove((void *)(param_1 + 0x1f129),auStack_4c,(uint)local_4f) //possible issue identified - semgrep
uVar1 = FirstChannel(param_1);
uVar5 = Status;
*(undefined1 *)(param_1 + 0x1f175) = uVar1;
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 = uVar5 & 1;
}
iVar2 = 0;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar5 = 0;
if (cVar4 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0400;
}
iVar3 = 1;
while( true ) {
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar5 & 0x20000) == 0) || (iVar3 == 100)) break;
iVar3 = iVar3 + 1;
}
if ((uVar5 & 0x2ff00) == 0x400) {
uVar6 = uVar5 & 0xff;
goto LAB_000755c0;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_000755c0:
if ((int)(uVar5 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,4);
uVar6 = (uint)*(byte *)(param_1 + 0x4acd);
LAB_00075758:
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar5 & 1;
}
iVar2 = 0;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar5 = 0;
if (cVar4 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar5 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0400;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar3 = 1;
while( true ) {
uVar5 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar5 & 0x20000) == 0) || (iVar3 == 100)) break;
iVar3 = iVar3 + 1;
}
if ((uVar5 & 0x2ff00) == 0x400) {
uVar6 = uVar5 & 0xff;
goto LAB_00075700;
}
}
iVar2 = iVar2 + 1;
if (iVar2 == 100) break;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_00075700:
if ((int)(uVar5 << 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_00075758;
}
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar4 != '\x01') {
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00075780;
}
Status = Status & 0xfffffffe;
if (uVar7 != 0) {
Status = Status | 1;
}
}
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00075780:
uVar5 = Status;
if (cVar4 == '\0') {
uVar6 = uVar6 & 0xe7;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar5 & 1;
}
iVar2 = 1;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar5 = 0;
if (cVar4 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar5 & 0x20000) == 0) break;
iVar2 = iVar2 + 1;
printk(&_LC8) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_00075854;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar4 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar6 | 0xa0400;
}
*(char *)(param_1 + 0x4acd) = (char)uVar6;
if (iVar2 != 100) goto LAB_00075874;
LAB_00075854:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",4);
LAB_00075874:
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar5 & 1;
}
iVar2 = 1;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar5 = 0;
if (cVar4 == '\0') {
uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar5 & 0x20000) == 0) break;
iVar3 = iVar2 % 0x14;
iVar2 = iVar2 + 1;
if ((iVar3 == 0) && (cVar4 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 & 0xfffdffff;
}
printk(&_LC8) //possible issue identified - semgrep
if (iVar2 == 100) goto LAB_000759d0;
cVar4 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar4 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 | 0xa0400;
}
iVar3 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar3 == 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_00075a18;
LAB_000759d0:
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_00075a18:
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar4 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
if ((cVar4 == '\x01') && (Status = Status & 0xfffffffe, uVar7 != 0)) {
Status = Status | 1;
}
}
if (2 < RTDebugLevel) {
printk("SYNC - BBP R4 to 20MHz.l\n");
}
if (*(char *)(param_1 + 0x16614) == '\x01') {
APAutoChannelInit(param_1);
*(undefined1 *)(param_1 + 0x16624) = *(undefined1 *)(param_1 + 0x4e3e);
}
ScanNextChannel(param_1,1);
return;
}