VfPendingInitPhase1

VOID __stdcall VfPendingInitPhase1(){
  PVOID *v0; 
  __int64 v1; 
  _HANDLE v2; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  void *ThreadHandle; 
  PVOID Object; 

  ThreadHandle = 0i64;
  *(&ObjectAttributes.Length + 1) = 0;
  v0 = (PVOID *)&ViPendingWorkers;
  *(&ObjectAttributes.Attributes + 1) = 0;
  v1 = 0i64;
  do
  {
    KeInitializeEvent((INT64)&ViPendingWorkers + 48 * v1 + 16, 1, 0);
    ObjectAttributes.RootDirectory = 0i64;
    ObjectAttributes.ObjectName = 0i64;
    ObjectAttributes.Length = 48;
    ObjectAttributes.Attributes = 512;
    *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
    if( PsCreateSystemThread(
           &ThreadHandle,
           0,
           &ObjectAttributes,
           0,
           0i64,
           ViPendingWorkerThread,
           (char *)&ViPendingWorkers + 48 * v1) < 0 )
      break;
    Object = 0i64;
    ObReferenceObjectByHandle(ThreadHandle, 0i64, (_OBJECT_TYPE *)PsThreadType, 0, &Object, 0i64);
    v2 = (int)ThreadHandle;
    *v0 = Object;
    ZwClose(v2);
    v1 = (unsigned int)(v1 + 1);
    v0 += 6;
  }
  while( (unsigned int)v1 < 8 );
  _InterlockedExchange(&ViPendingWorkersCount, v1);
}

Referenced by:

VfInitSystemNoRebootNeeded
ViInitSystemPhase1