void APPeerBeaconAtScanAction(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined1 *puVar8;
  undefined1 local_c0;
  char local_bf;
  undefined1 uStack_be;
  undefined1 local_bd;
  undefined1 uStack_bc;
  undefined1 uStack_bb;
  undefined1 uStack_ba;
  undefined1 uStack_b9;
  undefined1 uStack_b8;
  undefined1 local_b7;
  undefined1 local_b6;
  undefined1 local_b5;
  undefined1 uStack_b4;
  undefined1 local_b3;
  undefined1 local_b2;
  undefined1 local_b1;
  undefined1 auStack_b0 [2];
  undefined2 local_ae;
  undefined2 local_ac;
  undefined2 local_aa;
  undefined2 local_a8 [2];
  int local_a4;
  undefined1 auStack_a0 [4];
  int local_9c;
  int local_98;
  int local_94;
  undefined1 auStack_90 [8];
  undefined1 auStack_88 [8];
  undefined1 auStack_80 [8];
  undefined1 auStack_78 [8];
  undefined4 local_70;
  undefined4 local_6c;
  undefined1 auStack_68 [8];
  undefined1 auStack_60 [12];
  undefined1 auStack_54 [12];
  undefined1 auStack_48 [32];
  
  local_b1 = 0xff;
  local_bf = '\0';
  local_bd = 0;
  local_a4 = 0;
  local_9c = 0;
  local_98 = 0;
  local_94 = 0;
  os_alloc_mem(0,&local_9c,0x400);
  if ((((local_9c == 0) || (os_alloc_mem(0,&local_98,0x1a), local_98 == 0)) ||
      (os_alloc_mem(0,&local_94,0x16), local_94 == 0)) ||
     (os_alloc_mem(0,&local_a4,0x20), local_a4 == 0)) {
    if (RTDebugLevel != 0) {
      printk("%s: Allocate memory fail!!!\n","APPeerBeaconAtScanAction");
    }
  }
  else {
    local_bd = 0;
    RTMPZeroMemory(local_98,0x1a);
    RTMPZeroMemory(local_94,0x16);
    iVar6 = local_9c;
    *(undefined1 *)(local_9c + 1) = 0;
    puVar8 = auStack_60;
    iVar1 = PeerBeaconAndProbeRspSanity
                      (param_1,param_2,*(undefined4 *)(param_2 + 0x648),
                       *(undefined1 *)(param_2 + 0x65c),auStack_80,auStack_88,local_a4,&local_bd,
                       &local_c0,&local_ae,&local_bf,&uStack_be,&local_70,auStack_78,&local_ac,
                       &local_aa,&uStack_b8,&uStack_bc,&uStack_bb,&uStack_ba,&uStack_b9,puVar8,
                       &local_b7,auStack_54,&local_b6,&local_b5,&uStack_b4,auStack_48,auStack_68,
                       auStack_90,auStack_a0,&local_b3,local_98,auStack_b0,&local_b2,local_94,
                       &local_b1,local_a8,local_9c);
    iVar7 = -0x7f;
    if (iVar1 != 0) {
      uVar2 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x658),0);
      uVar3 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x659),1);
      uVar4 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x65a),2);
      iVar7 = RTMPMaxRssi(param_1,uVar2,uVar3,uVar4);
      if ((local_bf == *(char *)(param_1 + 0x1f175)) || (*(char *)(param_1 + 0x16e01) != '\0')) {
        if ((-0x55 < iVar7) && ((*(byte *)(local_98 + 1) & 0x40) != 0)) {
          Handle_BSS_Width_Trigger_Events(param_1);
        }
        iVar7 = BssTableSearch(param_1 + 0x48330,auStack_88,local_bf);
        iVar1 = -0x7f;
        if (iVar7 != -1) {
          iVar1 = (int)*(char *)(iVar7 * 0x520 + param_1 + 0x48390);
        }
        uVar2 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x658),0);
        uVar3 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x659),1);
        uVar4 = ConvertToRssi(param_1,(int)*(char *)(param_2 + 0x65a),2);
        iVar7 = RTMPMaxRssi(param_1,uVar2,uVar3,uVar4);
        iVar5 = iVar7 + *(char *)(param_1 + 0x4bc9);
        if (iVar1 < iVar5) {
          iVar1 = (int)(char)iVar5;
        }
        iVar6 = BssTableSetEntry(param_1,param_1 + 0x48330,auStack_88,local_a4,local_bd,local_c0,
                                 local_ae,auStack_78,local_ac,local_aa,auStack_60,local_b7,
                                 auStack_54,local_b6,local_98,local_94,local_b3,local_b2,local_b1,
                                 local_bf,iVar1,puVar8,local_70,local_6c,local_b5,auStack_48,
                                 auStack_90,auStack_68,local_a8[0],iVar6);
        if (iVar6 != -1) {
          iVar6 = iVar6 * 0x520;
          memmove((void *)(param_1 + iVar6 + 0x48811),(void *)(param_2 + 0x18),4)   //possible issue identified - semgrep
          memmove((void *)(param_1 + iVar6 + 0x48815),(void *)(param_2 + 0x650),4)   //possible issue identified - semgrep
          memmove((void *)(param_1 + iVar6 + 0x48819),(void *)(param_2 + 0x650),4)   //possible issue identified - semgrep
        }
      }
    }
    if (*(char *)(param_1 + 0x16624) == local_bf) {
      iVar6 = AutoChBssSearchWithSSID
                        (param_1,auStack_88,local_a4,local_bd,*(char *)(param_1 + 0x16624));
      if (iVar6 == -1) {
        iVar6 = *(int *)(param_1 + 0x16960) + (*(byte *)(param_1 + 0x16625) + 0x36) * 4;
        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;
      }
      AutoChBssInsertEntry(param_1,auStack_88,local_a4,local_bd,local_bf,local_b1,iVar7);
    }
  }
  if (local_9c != 0) {
    os_free_mem(0);
  }
  if (local_98 != 0) {
    os_free_mem(0);
  }
  if (local_94 != 0) {
    os_free_mem(0);
  }
  if (local_a4 != 0) {
    os_free_mem(0);
  }
  return;
}