HalpCmcStartPolling

CHAR __stdcall HalpCmcStartPolling(){
  UINT64 v0; 
  unsigned __int8 v1; 
  unsigned __int64 v2; 
  CHAR result; 
  if( !HalpIsMicrosoftCompatibleHvLoaded() || (result = HalpIsPartitionCpuManager()) != 0 )
  {
    KeAcquireSpinLockRaiseToDpc(&HalpCmcFallbackLock, v0);
    v2 = v1;
    if( HalpCmcPollingInitialized )
    {
      if( (HalpMcaPollForCmc
         || HalpCmciRevertToPolledMode
         || HalpCmcPollingStartDeferred != (_BYTE)HalpCmciRevertToPolledMode)
        && !HalpCmcPollingStarted )
      {
        KiSetTimerEx(
          (_KTIMER *)&qword_140C50578,
          (_LARGE_INTEGER)(-10000i64 * (unsigned int)HalpCmcContext),
          (unsigned int)HalpCmcContext,
          0,
          &stru_140C505B8);
        HalpCmcPollingStarted = 1;
      }
    }
    else
    {
      HalpCmcPollingStartDeferred = 1;
    }
    KxReleaseSpinLock(&HalpCmcFallbackLock);
    result = KiIrqlFlags;
    __writecr8(v2);
  }
  return result;
}

Referenced by:

HalpCmciDeferredRoutine
HalpInitializeCmc