VfKeCheckForChanges

VOID __stdcall VfKeCheckForChanges(UINT64 NewFlags){
  __int16 v1; 
  VOID *PoolWithTagPriority; 
  void *v3; 
  VOID *v4; 
  void *v5; 
  v1 = NewFlags;
  if( (MmVerifierData & 0xFBF) != 0 )
  {
    if( !ViTrackIrqlQueue && ((NewFlags & 2) != 0 || VfVerifyMode >= 3) )
    {
      PoolWithTagPriority = ExAllocatePoolWithTagPriority(
                              NonPagedPoolNx,
                              56i64 * (unsigned int)ViTrackIrqlQueueLength,
                              0x6C717249ui64,
                              HighPoolPriority);
      v3 = PoolWithTagPriority;
      if( PoolWithTagPriority )
      {
        memset((INT64)PoolWithTagPriority, 0i64);
        if( _InterlockedCompareExchange64((volatile signed __int64 *)&ViTrackIrqlQueue, (signed __int64)v3, 0i64) )
          ExFreePoolWithTag(v3, 0);
      }
    }
    if( !VfKeCriticalRegionTraces && (v1 & 0x800) != 0 )
    {
      v4 = ExAllocatePoolWithTagPriority(
             NonPagedPoolNx,
             (unsigned __int64)(unsigned int)VfKeCriticalRegionTracesLength << 6,
             0x52436656ui64,
             (_EX_POOL_PRIORITY)(VfKeCriticalRegionTraces + 32));
      v5 = v4;
      if( v4 )
      {
        memset((INT64)v4, 0i64);
        if( _InterlockedCompareExchange64(&VfKeCriticalRegionTraces, (signed __int64)v5, 0i64) )
          ExFreePoolWithTag(v5, 0);
      }
    }
  }
}

Referenced by:

VfInitVerifierComponents
VfSettingsCheckForChanges