HalpInitializeCmc

INT64 __fastcall HalpInitializeCmc(INT64 a1, INT64 a2){
  INT64 v4; 
  HIDWORD(v4) = 0;
  if( (_DWORD)a1 )
  {
    if( (_DWORD)a1 == 1 )
    {
      HalpCmcErrorSourceId = *(_DWORD *)(a2 + 28);
      HalpCmcErrorSource = (PVOID)a2;
      if( HalpIsCmciImplemented() )
      {
        *(_BYTE *)(a2 + 48) = 5;
        HalpCmciInit(a2);
      }
      HalpCmcInitializePolling(a2);
      HalpCmcStartPolling();
    }
    else
    {
      LODWORD(v4) = *((_DWORD *)KeGetPcr() + 105);
      if( HalpIsCmciImplemented() )
      {
        HalpCmciInitializeErrorPacket(a2, v4);
        HalpCmciInitProcessor(a2, v4);
      }
    }
  }
  else
  {
    HalpCmcErrorSourceId = *(_DWORD *)(a2 + 28);
    HalpCmcErrorSource = (PVOID)a2;
    if( HalpIsCmciImplemented() )
    {
      HalpCmciEnabled = 1;
      *(_BYTE *)(a2 + 48) = 5;
      HalpCmciInit(a2);
    }
  }
  return 0i64;
}

Referenced by:

HalpInitializeErrSrc