HalpHvInitMcaStatusMsrCache
VOID __stdcall HalpHvInitMcaStatusMsrCache(){
unsigned __int64 v0;
void *v1;
int *v2;
int v3;
int v4;
__int64 v5;
int v6;
_HALP_ALLOC_CONTEXT *v7;
void *v8;
if( !byte_140C4A3B0 )
{
if( !byte_140C50568[0] )
{
v0 = __readmsr(0x179u);
byte_140C50568[0] = v0;
}
v1 = (void *)(4i64 * byte_140C50568[0]);
LODWORD(dword_140C4A3A8) = byte_140C50568[0];
if( v1 )
{
qword_140C4A3C0 = (INT64)HalpMmAllocCtxAlloc((_HALP_ALLOC_CONTEXT *)byte_140C50568[0], 4i64 * byte_140C50568[0]);
v2 = (int *)qword_140C4A3C0;
if( !qword_140C4A3C0 )
KeBugCheckEx(0xACu, v1, 0i64, "minkernel\\hals\\lib\\hv\\hvintel.c", (PVOID)0x613);
if( (_DWORD)dword_140C4A3A8 )
{
v3 = 1025;
v4 = -1073733631;
v5 = (unsigned int)dword_140C4A3A8;
do
{
if( HalpGetCpuVendor() != 1 || (v6 = v4, !HalpMcaScalableRasSupported) )
v6 = v3;
*v2 = v6;
v4 += 16;
++v2;
v3 += 4;
--v5;
}
while( v5 );
}
}
else
{
qword_140C4A3C0 = 0i64;
}
dword_140C4A3AC = HalpQueryMaximumRegisteredProcessorCount();
v8 = (void *)(8 * (unsigned int)dword_140C4A3A8 * (unsigned __int64)dword_140C4A3AC);
if( v8 )
{
qword_140C4A3B8 = (__int64)HalpMmAllocCtxAlloc(v7, (UINT64)v8);
if( !qword_140C4A3B8 )
KeBugCheckEx(0xACu, v8, 0i64, "minkernel\\hals\\lib\\hv\\hvintel.c", (PVOID)0x62D);
}
else
{
qword_140C4A3B8 = 0i64;
}
byte_140C4A3B0 = 1;
}
}Referenced by:
HalpMceInit