HalpCmciInitProcessor
VOID __stdcall HalpCmciInitProcessor(INT64 a1, INT64 a2){
CHAR CpuInfo;
unsigned __int8 CurrentIrql;
CHAR v6;
__int64 v7;
UINT8 v8;
v8 = 0;
CpuInfo = HalpGetCpuInfo(0i64, 0i64, 0i64, &v8);
v8 &= -(CpuInfo != 0);
if( v8 == 1 && !HalpIsCmciImplementedAMD() )
*(&stru_140CF2E80 + 7433) = 1;
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xFui64);
v6 = 1;
if( *(&stru_140CF2E80 + 1857) )
goto LABEL_19;
if( *(_BYTE *)(a1 + 48) != 5 )
{
*(&stru_140CF2E80 + 7433) = 1;
LABEL_19:
v6 = 0;
}
HalpCmciSetProcessorConfig(a1, v6, a2);
LODWORD(v7) = HalpGetMcaPcrContext(a2);
if( v7 && v6 )
{
*(_DWORD *)(v7 + 112) = 0;
*(_BYTE *)(v7 + 120) = 0;
}
__writecr8(CurrentIrql);
if( v6 && byte_140C50550 )
{
if( KeGetCurrentIrql() > 2u )
{
if( v7 && *(_QWORD *)(v7 + 16) )
{
if( *(_QWORD *)(v7 + 24) )
KeInsertQueueDpc(v7 + 40, 0i64, 0i64);
}
}
else
{
HalpCmciPollProcessor(a2);
}
}
}Referenced by:
HalpCmciInit
HalpInitializeCmc
HalpMcaResumeProcessorConfig