HvlPhase1Initialize

VOID __stdcall HvlPhase1Initialize(){
  INT64 v0; 
  INT64 v1; 
  __int64 v2; 
  int v3; 
  UINT64 v4; 
  _HV_STATS_OBJECT_IDENTITY ObjectId; 
  UINT64 StatsPagePa; 

  StatsPagePa = 0i64;
  v1 = v0;
  if( HviIsAnyHypervisorPresent() && (HvlpRootFlags & 4) == 0 )
  {
    *(&HvlpHvIdentityInfoCallbackRecord.State + 4) = 0;
    KeRegisterBugCheckReasonCallback(
      &HvlpHvIdentityInfoCallbackRecord,
      (PKBUGCHECK_REASON_CALLBACK_ROUTINE)HvlpHvIdentityInfoCallback,
      KbCallbackSecondaryDumpData,
      &HvlpComponentName);
  }
  if( (_BYTE)HvlHypervisorConnected )
  {
    MmMarkHypercallPageRetpolineBit();
    HvlpSetupCachedHypercallPages(KeGetCurrentPrcb());
    HvlpInitializePowerStatistics();
    if( (HvlpRootFlags & 0x10) != 0 )
    {
      ObjectId = 0i64;
      HvlpMapStatisticsPage(HvStatsObjectHypervisor, &ObjectId, &StatsPagePa);
      if( v3 >= 0 )
        HvlpHypervisorStatsPage = (__int64)MmMapIoSpaceEx((_LARGE_INTEGER)StatsPagePa, 0x1000ui64, 2ui64);
    }
    LOBYTE(v2) = 1;
    HvlConfigureMemoryZeroingOnReset(v2);
    LODWORD(HvlpFlags) = HvlpFlags | 8;
    VslpIumPhase0Initialize(v1);
    if( (HvlpRootFlags & 4) != 0 || VslVsmEnabled )
      HvlpInitializeHvCrashdump(*(_QWORD *)(v1 + 240) + 2504i64, v4);
  }
}

Referenced by:

InitBootProcessor