HalpHvStartVirtualProcessor
NTSTATUS __stdcall HalpHvStartVirtualProcessor(UINT64 a1){
_DWORD *v1;
unsigned __int8 v2;
NTSTATUS v3;
_OWORD *v4;
_OWORD *v5;
__int64 v6;
int v8[1024];
v1 = (_DWORD *)((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64);
v2 = a1;
if( qword_140C4A1F8 )
return qword_140C4A1F8((unsigned int)a1);
*v1 = -1073741823;
if( HalpIsXboxNanovisorPresent() )
{
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1000) = *v4;
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1010) = v4[1];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1020) = v4[2];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1030) = v4[3];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1040) = v4[4];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1050) = v4[5];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1060) = v4[6];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1070) = v4[7];
v5 = v4 + 8;
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1080) = *v5;
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x1090) = v5[1];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x10A0) = v5[2];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x10B0) = v5[3];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x10C0) = v5[4];
*(_OWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x10D0) = v5[5];
*(_QWORD *)(((unsigned __int64)v8 & 0xFFFFFFFFFFFFF000ui64) + 0x10B8) |= 0x400ui64;
LODWORD(v6) = MmGetPhysicalAddress((UINT64)(v1 + 1024));
__writemsr(0x40000074u, v6 & 0xFFFFFFFFFFFFF000ui64 | v2);
v3 = 0;
*v1 = 0;
}
return v3;
}Referenced by:
HalpHvStartProcessor