HalpCmciSetProcessorConfigIntel
CHAR __fastcall HalpCmciSetProcessorConfigIntel(INT64 a1, CHAR a2, INT64 a3){
__int64 v5;
__int64 v7;
unsigned int v8;
__int64 v9;
__int64 v10;
LOBYTE(v5) = HalpMcaNumberOfBanks;
v7 = a2 != 0 ? 0x40000000 : 0;
if( !HalpMcaNumberOfBanks )
{
v5 = __readmsr(0x179u);
HalpMcaNumberOfBanks = v5;
}
if( HalpMcaNumberOfBanks )
{
v8 = 640;
v9 = (unsigned __int8)HalpMcaNumberOfBanks;
do
{
LOBYTE(v5) = HalpWheaWriteMsr(a3, v8, v7);
if( a2 )
{
v5 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))HalpWheaReadMsr)(a3, v8, 0i64);
if( (v5 & 0x40000000) != 0 )
{
v10 = *(_DWORD *)(a1 + 68) & 0x3FFF;
if( (*(_DWORD *)(a1 + 68) & 0x3FFF) == 0 )
v10 = 1i64;
LOBYTE(v5) = HalpWheaWriteMsr(a3, v8, v10 | v5 & 0xFFFFFFFFFFFFC000ui64);
}
}
++v8;
--v9;
}
while( v9 );
}
return v5;
}Referenced by:
HalpCmciSetProcessorConfig