CmpExpandPathInfo

INT64 __fastcall CmpExpandPathInfo(INT64 a1){
  struct _KPRCB *CurrentPrcb; 
  _GENERAL_LOOKASIDE *P; 
  unsigned int v4; 
  PSLIST_ENTRY v5; 
  _GENERAL_LOOKASIDE *L; 
  __int64 Size; 
  void *(__fastcall *AllocateEx)(_POOL_TYPE, unsigned __int64, unsigned int, _LOOKASIDE_LIST_EX *); 
  __int64 Tag; 
  __int64 Type; 

  CurrentPrcb = KeGetCurrentPrcb();
  P = CurrentPrcb->PPLookasideList[8].P;
  ++P->TotalAllocates;
  v4 = 0;
  v5 = RtlpInterlockedPopEntrySList(&P->ListHead);
  if( v5 )
    goto LABEL_2;
  ++P->AllocateMisses;
  L = CurrentPrcb->PPLookasideList[8].L;
  ++L->TotalAllocates;
  v5 = RtlpInterlockedPopEntrySList(&L->ListHead);
  if( v5
    || (Size = L->Size,
        AllocateEx = L->AllocateEx,
        Tag = L->Tag,
        Type = (unsigned int)L->Type,
        ++L->AllocateMisses,
        (v5 = (PSLIST_ENTRY)((__int64(__fastcall *)(__int64, __int64, __int64))AllocateEx)(Type, Size, Tag)) != 0i64) )
  {
LABEL_2:
    memset(v5, 0i64, 0x1E0u);
    *(_QWORD *)(a1 + 160) = v5;
  }
  else
  {
    return(unsigned int)-1073741670;
  }
  return v4;
}

Referenced by:

CmpComputeComponentHashes