HalpMcaSetFeatureFlags
VOID __stdcall HalpMcaSetFeatureFlags(){
CHAR CpuInfo;
UINT8 v1;
unsigned __int64 v2;
int v3[8];
UINT8 v4;
__int32 v5;
unsigned int v6;
int v7;
v5 = 0;
v6 = 0;
v7 = 0;
v4 = 0;
CpuInfo = HalpGetCpuInfo(0i64, 0i64, 0i64, &v4);
v1 = CpuInfo != 0 ? v4 : 0;
v4 = v1;
if( v1 == 2 )
{
byte_140C50558 = 1;
if( !HalpIsCmciImplemented() )
*(&stru_140CF2E80 + 7433) = 1;
v2 = __readmsr(0x179u);
if( (v2 & 0x1000000) != 0 )
HalpMcaRecoverySupported = 1;
if( (v2 & 0x4000000) != 0 )
*(&stru_140CF2E80 + 7434) = 1;
}
else
{
if( v1 != 1 )
goto LABEL_19;
HalpCpuID(0x80000000, (__int32 *)&v6, &v5, &v5, &v5);
if( v6 >= 0x80000007 )
{
HalpCpuID(-2147483641, &v5, &v7, &v5, &v5);
if( (v7 & 2) != 0 )
HalpMcaRecoverySupported = 1;
if( (v7 & 1) != 0 )
*(&stru_140CF2E80 + 7924) = 1;
if( (v7 & 8) != 0 )
HalpMcaScalableRasSupported = 1;
}
if( !HalpMcaScalableRasSupported || !HalpIsCmciImplemented() )
LABEL_19:
*(&stru_140CF2E80 + 7433) = 1;
}
byte_140C50520 = 1;
byte_140C50522 = 1;
_InterlockedOr(v3, 0);
}Referenced by:
HalpInitializeMce