Phase1InitializationIoReady

VOID __stdcall Phase1InitializationIoReady(PVOID Context, UINT8 UseAlternateShell){
  __int64 v4; 
  int v5; 
  NTSTATUS inited; 
  INT64 v7; 
  RtlpInitializeNonVolatileFlush();
  LOBYTE(v4) = CmStateSeparationEnabled != 0;
  v5 = ExpInitializeStateSeparationPhase1(v4);
  if( (int)(v5 + 0x80000000) >= 0 && v5 != -1073741637 )
    KeBugCheckEx(0x32u, 0i64, 0i64, 0i64, 0i64);
  CmInitSystem2();
  inited = EmInitSystem(1ui64, (_LOADER_PARAMETER_BLOCK *)Context);
  if( inited < 0 )
    KeBugCheckEx(0x32u, inited, 8ui64, 1ui64, 0i64);
  TmInitSystemPhase2();
  InbvSetProgressBarSubset(0i64, 0x64ui64);
  if( InitSafeBootMode )
    InitSafeBoot(UseAlternateShell);
  VmInitSystem(2i64, v7);
  MmInitSystem(2ui64, (_LOADER_PARAMETER_BLOCK *)Context);
  SaveNodeDistanceInformation();
  if( !PoInitSystem(3ui64, (_LOADER_PARAMETER_BLOCK *)Context) )
    KeBugCheck(0xA0ui64);
  KeInitializeClock(2ui64, (_LOADER_PARAMETER_BLOCK *)Context);
  KiInitializeReservedCpuSets();
  TraceLoggingRegisterEx_EtwRegister_EtwSetInformation(&dword_140C02C20);
  ExLogTimeZoneInformation();
  ExInitLicenseData();
  if( !PsInitSystem(2ui64, (_LOADER_PARAMETER_BLOCK *)Context) )
    goto LABEL_21;
  MmInitSystemDll();
  if( !SeRmInitPhase1() )
    KeBugCheck(0x6Cui64);
  BootApplicationPersistentDataProcess(2i64);
  if( !PspInitPhase3() )
LABEL_21:
    KeBugCheck(0x6Bui64);
  StartFirstUserProcess();
  ++*(_DWORD *)InitializationPhase;
  ExNotifyCallback(ExCbPhase1InitComplete, 0i64, 0i64);
  if( ViVerifierEnabled )
    VfNotifyVerifierOfEvent(5ui64);
  if( VfClearanceFlag )
    VfClearVerifierSettings();
  ExQueryBootEntropyInformation(0i64);
  if( !KeInitSystem(4ui64) )
    KeBugCheckEx(0x32u, 0xFFFFFFFFC0000001ui64, 0i64, 2ui64, 0i64);
}

Referenced by:

Phase1Initialization