/* WARNING: Type propagation algorithm not settling */

void APPeerAuthReqAtIdleAction(char *param_1,int param_2)

{
  byte bVar1;
  undefined1 uVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  code *pcVar6;
  char *pcVar7;
  undefined4 uVar8;
  uint uVar9;
  uint uVar10;
  undefined1 local_e0;
  undefined1 local_df;
  short local_de;
  short local_dc [4];
  undefined4 local_d4;
  undefined4 local_d0;
  undefined1 auStack_cc [8];
  undefined1 local_c4;
  undefined1 local_c3;
  undefined1 local_c2;
  undefined1 local_c1;
  undefined1 local_c0;
  undefined1 local_bf;
  undefined1 auStack_bc [24];
  undefined1 auStack_a4 [136];
  
  local_e0 = 0x10;
  local_df = 0x80;
  local_d4 = 0;
  local_d0 = 0;
  iVar4 = APPeerAuthSanity(param_1,param_2,*(undefined4 *)(param_2 + 0x648),auStack_cc,&local_c4,
                           local_dc,&local_de,local_dc + 2,auStack_a4);
  if (iVar4 == 0) {
    return;
  }
  for (uVar10 = 0; uVar10 < (byte)param_1[0x51aa]; uVar10 = uVar10 + 1) {
    iVar4 = memcmp(auStack_cc,param_1 + uVar10 * 0x1140 + 0x51ac,6);
    if (iVar4 == 0) {
      bVar1 = param_1[0x51aa];
      goto LAB_0006f4e0;
    }
  }
  bVar1 = param_1[0x51aa];
LAB_0006f4e0:
  if (uVar10 < bVar1) {
    if ((*(int *)(param_1 + uVar10 * 0x1140 + 0x51d8) == 0) ||
       ((*(uint *)(*(int *)(param_1 + uVar10 * 0x1140 + 0x51d8) + 0xc0) & 1) != 0)) {
      piVar5 = (int *)MacTableLookup(param_1,&local_c4);
      if ((piVar5 != (int *)0x0) && (*piVar5 == 1)) {
        iVar4 = memcmp(auStack_cc,param_1 + (uint)*(byte *)((int)piVar5 + 0x31) * 0x1140 + 0x51ac,6)
        ;
        if (iVar4 == 0) {
          if (*(char *)((int)piVar5 + 5) == '\x01') {
            AsicUpdateProtect(param_1,8,0x3c,0,0);
            if (RTDebugLevel < 3) {
              *(undefined1 *)((int)piVar5 + 5) = 0;
            }
            else {
              printk("Atheros Problem. Turn on RTS/CTS!!!\n");
              *(undefined1 *)((int)piVar5 + 5) = 0;
            }
            uVar2 = *(undefined1 *)((int)piVar5 + 0x27e);
          }
          else {
            uVar2 = *(undefined1 *)((int)piVar5 + 0x27e);
          }
          BASessionTearDownALL(param_1,uVar2);
          if (*(ushort *)((int)piVar5 + 0x27e) != (ushort)*(byte *)(param_2 + 0x65d)) {
            printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_auth.c:%d assert pEntry->Aid == Elem->Wcidfailed\n"
                   ,0x141);
          }
        }
        else {
          MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar5 + 0x27e),piVar5 + 0x96);
          piVar5 = (int *)0x0;
          if (1 < RTDebugLevel) {
            printk("AUTH - Bssid does not match\n");
            piVar5 = (int *)0x0;
          }
        }
      }
      if (2 < RTDebugLevel) {
        printk("AUTH - MBSS(%d), Rcv AUTH seq#%d, Alg=%d, Status=%d from [wcid=%d]%02x:%02x:%02x:%02x:%02x:%02x\n"
               ,uVar10,local_de,local_dc[0],local_dc[2],*(undefined1 *)(param_2 + 0x65d),local_c4,
               local_c3,local_c2,local_c1,local_c0,local_bf);
      }
      uVar9 = uVar10 & 0xff;
      iVar4 = ApCheckAccessControlList(param_1,&local_c4,uVar9);
      if (iVar4 != 0) {
        if (local_dc[0] == 0) {
          if (*(int *)(param_1 + uVar10 * 0x1140 + 0x51dc) != 1) {
            if ((piVar5 == (int *)0x0) &&
               (piVar5 = (int *)MacTableInsertEntry(param_1,&local_c4,uVar9,1,1),
               piVar5 == (int *)0x0)) {
              return;
            }
            piVar5[0x9d] = 1;
            piVar5[0x9e] = 1;
            APPeerAuthSimpleRspGenAndSend(param_1,param_2,local_dc[0],local_de + 1,0);
            return;
          }
        }
        else if ((local_dc[0] == 1) && (*(int *)(param_1 + uVar10 * 0x1140 + 0x51dc) - 1U < 2)) {
          if ((piVar5 == (int *)0x0) &&
             (piVar5 = (int *)MacTableInsertEntry(param_1,&local_c4,uVar9,1,1), piVar5 == (int *)0x0
             )) {
            return;
          }
          piVar5[0x9e] = 3;
          piVar5[0x9d] = 0;
          memcpy(param_1 + 0x168d0,&local_c4,6)   //possible issue identified - semgrep
          pcVar7 = param_1 + 0x168d8;
          do {
            cVar3 = RandomByte(param_1);
            *pcVar7 = cVar3;
            pcVar7 = pcVar7 + 1;
          } while (pcVar7 != param_1 + 0x16958);
          local_de = local_de + 1   //possible issue identified - semgrep
          local_dc[1] = 0;
          iVar4 = os_alloc_mem(param_1,&local_d4,0x640);
          if (iVar4 != 0) {
            return;
          }
          if (2 < RTDebugLevel) {
            printk("AUTH - Send AUTH seq#2 (Challenge)\n");
          }
          MgtMacHeaderInit(param_1,auStack_bc,0xb,0,&local_c4,param_1 + uVar10 * 0x1140 + 0x51ac);
          MakeOutgoingFrame(local_d4,&local_d0,0x18,auStack_bc,2,local_dc,2,&local_de,2,local_dc + 1
                            ,1,&local_e0,1,&local_df,0x80,param_1 + 0x168d8,0xffffffff);
          MiniportMMRequest(param_1,0,local_d4,local_d0);
          pcVar6 = os_free_mem;
          uVar8 = local_d4;
          goto LAB_0006fa84;
        }
        APPeerAuthSimpleRspGenAndSend(param_1,param_2,local_dc[0],local_de + 1,0xd);
        if (piVar5 != (int *)0x0) {
          MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar5 + 0x27e),piVar5 + 0x96);
        }
        if (RTDebugLevel < 3) {
          return;
        }
        printk("AUTH - Alg=%d, Seq=%d, AuthMode=%d\n",local_dc[0],local_de,
               *(undefined4 *)(param_1 + uVar10 * 0x1140 + 0x51dc));
        return;
      }
      if (local_de != 1) {
        printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_auth.c:%d assert Seq == 1failed\n"
               ,0x158);
      }
      if (piVar5 != (int *)0x0) {
        printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_auth.c:%d assert pEntry == NULLfailed\n"
               ,0x159);
      }
      APPeerAuthSimpleRspGenAndSend(param_1,param_2,local_dc[0],local_de + 1,1);
      if (piVar5 != (int *)0x0) {
        MacTableDeleteEntry(param_1,*(undefined2 *)((int)piVar5 + 0x27e),piVar5 + 0x96);
      }
      RtmpOsSendWirelessEvent(param_1,0x215,&local_c4,uVar9,0,RtmpDrvSendWirelessEvent);
      if (RTDebugLevel < 3) {
        return;
      }
      param_1 = "Failed in ACL checking => send an AUTH seq#2 with Status code = %d\n";
      pcVar6 = printk;
      uVar8 = 1;
LAB_0006fa84:
      (*pcVar6)(param_1,uVar8);
      return;
    }
    if (RTDebugLevel < 3) {
      return;
    }
    pcVar7 = "AUTH - Bssid IF didn\'t up yet.\n";
  }
  else {
    if (RTDebugLevel < 3) {
      return;
    }
    pcVar7 = "AUTH - Bssid not found\n";
  }
  printk(pcVar7);
  return;
}