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