Phase1InitializationIoReady

VOID __stdcall Phase1InitializationIoReady(VOID *Context, UINT8 UseAlternateShell, INT64 a3, VOID *a4){
  __int64 v6; 
  int v7; 
  NTSTATUS inited; 
  INT64 v9; 

  RtlpInitializeNonVolatileFlush();
  LOBYTE(v6) = *(&stru_140CF2E80 + 1656) != 0;
  v7 = ExpInitializeStateSeparationPhase1(v6);
  if( (int)(v7 + 0x80000000) >= 0 && v7 != -1073741637 )
    KeBugCheckEx(0x32u, 0i64, 0i64, 0i64, 0i64);
  CmInitSystem2();
  inited = EmInitSystem(1ui64, (_LOADER_PARAMETER_BLOCK *)Context);
  if( inited < 0 )
    KeBugCheckEx(0x32u, (PVOID)inited, (PVOID)8, (PVOID)1, 0i64);
  TmInitSystemPhase2();
  InbvSetProgressBarSubset(0i64, 0x64ui64);
  if( InitSafeBootMode )
    InitSafeBoot(UseAlternateShell);
  VmInitSystem(2i64, v9);
  MmInitSystem(2ui64, (_LOADER_PARAMETER_BLOCK *)Context);
  SaveNodeDistanceInformation();
  if( !PoInitSystem(3ui64, (_LOADER_PARAMETER_BLOCK *)Context) )
    KeBugCheck(0xA0u);
  KeInitializeClock(2ui64, (_LOADER_PARAMETER_BLOCK *)Context);
  KiInitializeReservedCpuSets();
  TraceLoggingRegisterEx_EtwRegister_EtwSetInformation((char *)&stru_140C00F40 + 7392);
  ExLogTimeZoneInformation();
  ExInitLicenseData();
  if( !PsInitSystem(2ui64, (_LOADER_PARAMETER_BLOCK *)Context) )
    goto LABEL_21;
  MmInitSystemDll();
  if( !SeRmInitPhase1() )
    KeBugCheck(0x6Cu);
  BootApplicationPersistentDataProcess(2ui64);
  if( !PspInitPhase3() )
LABEL_21:
    KeBugCheck(0x6Bu);
  StartFirstUserProcess();
  LODWORD(InitializationPhase) = InitializationPhase + 1;
  ExNotifyCallback(*(&ExBootDevicesRemovedEvent + 21), 0i64, 0i64);
  if( ViVerifierEnabled )
    VfNotifyVerifierOfEvent(5ui64);
  if( VfClearanceFlag )
    VfClearVerifierSettings();
  ExQueryBootEntropyInformation(0i64);
  if( !KeInitSystem(4ui64) )
    KeBugCheckEx(0x32u, (PVOID)0xFFFFFFFFC0000001i64, 0i64, (PVOID)2, 0i64);
}

Referenced by:

Phase1Initialization