VfPoolInitPhase1

INT64 __stdcall VfPoolInitPhase1(){
  INT64 result; 
  __int64 *v1; 
  void *v2; 
  struct _OBJECT_ATTRIBUTES ObjectAttributes; 
  void *ThreadHandle; 
  PVOID Object; 
  ThreadHandle = 0i64;
  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  result = (unsigned int)MmVerifierData;
  if( (MmVerifierData & 0x400000) == 0 || (MmVerifierData & 1) != 0 )
  {
    v1 = qword_140CEC868;
    do
    {
      KeInitializeEvent((_KEVENT *)v1 - 1, SynchronizationEvent, 0);
      ObjectAttributes.RootDirectory = 0i64;
      ObjectAttributes.ObjectName = 0i64;
      ObjectAttributes.Length = 48;
      ObjectAttributes.Attributes = 512;
      *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
      if( PsCreateSystemThread(
             &ThreadHandle,
             0,
             &ObjectAttributes,
             0i64,
             0i64,
             (PKSTART_ROUTINE)ViPoolDelayFreeTrimThreadRoutine,
             v1 - 5) >= 0 )
      {
        Object = 0i64;
        ObReferenceObjectByHandle(ThreadHandle, 0, (POBJECT_TYPE)PsThreadType, 0, &Object, 0i64);
        v2 = ThreadHandle;
        *v1 = (__int64)Object;
        ZwClose(v2);
        InitializeSListHead((_SLIST_HEADER *)(v1 - 5));
        _InterlockedExchange((volatile __int32 *)v1 + 2, 1);
      }
      v1 += 8;
      result = (INT64)qword_140CEC8E8;
    }
    while( (__int64)v1 < (__int64)qword_140CEC8E8 );
  }
  return result;
}

Referenced by:

VfInitSystemNoRebootNeeded
ViInitSystemPhase1