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