ViLookasideTrackList

VOID __stdcall ViLookasideTrackList(_GENERAL_LOOKASIDE *Lookaside, UINT64 HookAllocateFree){
  VOID **(__fastcall *AllocateEx)(UINT64, UINT64, INT64); 
  VOID *(__stdcall *v3)(POOL_TYPE, UINT64, UINT64); 

  if( (_DWORD)HookAllocateFree && (VOID *(__stdcall *)(PVOID, UINT32))Lookaside->FreeEx == ExFreePoolWithTag )
  {
    AllocateEx = (VOID **(__fastcall *)(UINT64, UINT64, INT64))Lookaside->AllocateEx;
    if( AllocateEx == ExAllocatePoolWithTag )
    {
      v3 = VerifierExAllocatePoolWithTag;
LABEL_7:
      Lookaside->AllocateEx = (void *(__fastcall *)(_POOL_TYPE, unsigned __int64, unsigned int, _LOOKASIDE_LIST_EX *))v3;
      Lookaside->FreeEx = (void(__fastcall *)(void *, _LOOKASIDE_LIST_EX *))VerifierExFreePool;
      goto LABEL_8;
    }
    if( (char *)AllocateEx == (char *)ExAllocatePoolWithQuotaTag )
    {
      v3 = VerifierExAllocatePoolWithQuotaTag;
      goto LABEL_7;
    }
  }
LABEL_8:
  ViLookasideAdd(Lookaside);
}

Referenced by:

VerifierExInitializeNPagedLookasideList
VerifierExInitializePagedLookasideList