HalpCmciSetProcessorConfigAMD
CHAR __stdcall HalpCmciSetProcessorConfigAMD(INT64 a1, CHAR a2, INT64 a3){
INT64 v5;
__int64 v6;
__int64 v7;
unsigned int v8;
unsigned int v9;
unsigned int v10;
unsigned int v11;
INT64 v12;
unsigned int v13;
__int64 v14;
INT64 v15;
INT64 v16;
__int64 v17;
INT64 v18;
INT64 v19;
__int64 v21;
unsigned int v23;
v5 = a1;
if( HalpMcaScalableRasSupported )
{
v6 = ((__int64(__fastcall *)(INT64, __int64, _QWORD))qword_140C49C20)(a3, 3221226512i64, 0i64);
qword_140C49C10(a3, 3221226512i64, (a2 != 0 ? 0x1000ui64 : 0) | v6 & 0xFFFFFFFFFFFF0F0Fui64 | (a2 != 0 ? 0x20 : 0));
}
LOBYTE(v7) = byte_140C50568[0];
if( !byte_140C50568[0] )
{
v7 = __readmsr(0x179u);
byte_140C50568[0] = v7;
}
v8 = byte_140C50568[0];
v9 = 0;
v23 = byte_140C50568[0];
if( byte_140C50568[0] )
{
v10 = -1073733622;
v11 = 1027;
do
{
LODWORD(v7) = HalpWheaReadMsrMisc(a3, v9);
v21 = v7;
v12 = v7;
if( v7 < 0 )
{
if( BYTE3(v7) )
{
if( HalpMcaScalableRasSupported )
v13 = v10;
else
v13 = 8 * BYTE3(v7) - 1073740800;
v14 = 4i64;
do
{
v15 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v13, 0i64);
HalpCmciSetProcessorMiscConfigAMD(a1, v13++, v15, a2, a3);
--v14;
}
while( v14 );
v12 = v21;
v8 = v23;
v5 = a1;
}
v16 = v10 - 7;
if( !HalpMcaScalableRasSupported )
v16 = v11;
LOBYTE(v7) = HalpCmciSetProcessorMiscConfigAMD(v5, v16, v12, a2, a3);
if( HalpMcaScalableRasSupported )
{
v17 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v10 - 6, 0i64);
qword_140C49C10(a3, v10 - 6, v17 & 0xFFFFFF9FFFFFFFFFui64 | -(__int64)(a2 != 0) & 0x2000000000i64);
v18 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v10, 0i64);
HalpCmciSetProcessorMiscConfigAMD(v5, v10, v18, a2, a3);
v19 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v10 + 1, 0i64);
LOBYTE(v7) = HalpCmciSetProcessorMiscConfigAMD(v5, v10 + 1, v19, a2, a3);
}
}
++v9;
v11 += 4;
v10 += 16;
}
while( v9 < v8 );
}
return v7;
}Referenced by:
HalpCmciPollProcessor
HalpCmciResetStateAMD
HalpCmciSetProcessorConfig