HalpHvLpReadMcaStatusMsr
char __fastcall HalpHvLpReadMcaStatusMsr(unsigned int a1, unsigned int a2, INT64 *a3, _QWORD *a4){
char v8;
__int64 v9;
__int64 v10;
v8 = 0;
if( HalpGetCpuVendor() == 1 && HalpMcaScalableRasSupported )
{
if( a2 < 0xC0002000 )
return v8;
v9 = (a2 + 1073733632) >> 4;
}
else
{
if( a2 < 0x401 )
return v8;
v9 = (a2 - 1025) >> 2;
}
if( (unsigned int)v9 < (unsigned int)dword_140C4A3A8 )
{
v10 = *a3;
if( *a3 )
{
LABEL_11:
v8 = 1;
*a4 = *(_QWORD *)(v10 + 8 * v9);
return v8;
}
v10 = qword_140C4A3B8 + 8i64 * a1 * (unsigned int)dword_140C4A3A8;
if( HalpHvLpReadMultipleMsr(a1, (unsigned int)dword_140C4A3A8, qword_140C4A3C0, v10) >= 0 )
{
*a3 = v10;
goto LABEL_11;
}
}
return v8;
}Referenced by:
HalpHvEpReadMsr