HvlpInitializeBootProcessor

VOID __fastcall HvlpInitializeBootProcessor(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  INT64 v1; 
  INT64 v2; 
  INT64 *v3; 
  __int64 v4; 
  struct _KPRCB *CurrentPrcb; 
  __int64 v7; 
  __int64 v8; 
  int v9; 
  int v10[12]; 
  _HV_STATS_OBJECT_IDENTITY ObjectId; 
  UINT64 StatsPagePa; 
  __int64 v13; 
  __int64 v14; 

  v4 = 0i64;
  if( (_BYTE)HvlHypervisorConnected )
  {
    CurrentPrcb = KeGetCurrentPrcb();
    _InterlockedOr(v10, 0);
    v13 = 0i64;
    v14 = 0i64;
    StatsPagePa = 0i64;
    if( (HvlpFlags & 0x80000) != 0 && (HvlpFlags & 2) == 0 )
    {
      v7 = ((__int64(__fastcall *)(_LOADER_PARAMETER_BLOCK *, __int64, __int64 *, __int64))qword_140C00718)(
             LoaderBlock,
             1i64,
             &v13,
             4i64);
      if( !v7 )
        return;
      CurrentPrcb->VirtualApicAssist = (void *)v7;
    }
    if( (HvlpFlags & 2) == 0 && (HvlpFlags & 0x8000) != 0 )
    {
      v8 = ((__int64(__fastcall *)(_LOADER_PARAMETER_BLOCK *, __int64, __int64 *))qword_140C00718)(
             LoaderBlock,
             1i64,
             &v14);
      if( v8 )
        CurrentPrcb->SchedulerAssist = (void *)v8;
    }
    if( (HvlpRootFlags & 0x10) != 0 )
    {
      ObjectId = 0i64;
      HvlpMapStatisticsPage(HvStatsObjectLogicalProcessor, &ObjectId, &StatsPagePa);
      if( v9 >= 0 )
        v4 = ((__int64(__fastcall *)(UINT64, __int64, __int64))qword_140C00720)(StatsPagePa, 1i64, 4i64);
      CurrentPrcb->StatisticsPage = (unsigned __int64 *)v4;
    }
    HvlEnlightenProcessor(0, v1, v2, v3);
  }
}

Referenced by:

HvlPhase0Initialize