HalpCmciInitProcessor

VOID __fastcall HalpCmciInitProcessor(INT64 a1, INT64 a2){
  CHAR CpuInfo; 
  unsigned __int8 CurrentIrql; 
  CHAR v6; 
  INT64 McaPcrContext; 
  UINT8 v8; 
  v8 = 0;
  CpuInfo = HalpGetCpuInfo(0i64, 0i64, 0i64, &v8);
  v8 &= -(CpuInfo != 0);
  if( v8 == 1 && !HalpIsCmciImplementedAMD() )
    HalpMcaPollForCmc = 1;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(0xFui64);
  v6 = 1;
  if( HalpCmciRevertToPolledMode )
    goto LABEL_19;
  if( *(_BYTE *)(a1 + 48) != 5 )
  {
    HalpMcaPollForCmc = 1;
LABEL_19:
    v6 = 0;
  }
  HalpCmciSetProcessorConfig(a1, v6, a2);
  McaPcrContext = HalpGetMcaPcrContext(a2);
  if( McaPcrContext && v6 )
  {
    *(_DWORD *)(McaPcrContext + 112) = 0;
    *(_BYTE *)(McaPcrContext + 120) = 0;
  }
  __writecr8(CurrentIrql);
  if( v6 && HalpMcaWheaReady )
  {
    if( KeGetCurrentIrql() > 2u )
    {
      if( McaPcrContext && *(_QWORD *)(McaPcrContext + 16) )
      {
        if( *(_QWORD *)(McaPcrContext + 24) )
          KeInsertQueueDpc((PRKDPC)(McaPcrContext + 40), 0i64, 0i64);
      }
    }
    else
    {
      HalpCmciPollProcessor(a2);
    }
  }
}

Referenced by:

HalpCmciInit
HalpInitializeCmc
HalpMcaResumeProcessorConfig