HalpCmcInitializePolling

INT64 __fastcall HalpCmcInitializePolling(INT64 a1){
  UINT64 v1; 
  unsigned __int8 v3; 
  unsigned __int64 v4; 
  int v5; 
  INT64 result; 
  KeAcquireSpinLockRaiseToDpc(&HalpCmcFallbackLock, v1);
  v4 = v3;
  if( !HalpCmcPollingInitialized )
  {
    HalpCmcErrorPacket = (INT64)&HalpCmcReserveErrorPacket;
    HalpCmcInitializeErrorPacketContents((INT64)&HalpCmcReserveErrorPacket);
    v5 = *(_DWORD *)(a1 + 52);
    stru_140C505B8.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))HalpCmcDeferredRoutine;
    qword_140C50608 = (__int64)HalpCmcWorkerRoutine;
    LODWORD(HalpCmcContext) = v5;
    qword_140C50578 = 8i64;
    qword_140C50588 = (__int64)&qword_140C50580;
    qword_140C50580 = (__int64)&qword_140C50580;
    stru_140C505B8.TargetInfoAsUlong = 275;
    stru_140C505B8.DeferredContext = &HalpCmcContext;
    stru_140C505B8.DpcData = 0i64;
    stru_140C505B8.ProcessorHistory = 0i64;
    qword_140C50610 = (__int64)&HalpCmcContext;
    qword_140C505F8 = 0i64;
    qword_140C50590 = 0i64;
    dword_140C505B4 = 0;
    word_140C505B0 = 0;
    HalpCmcPollingInitialized = 1;
  }
  KxReleaseSpinLock(&HalpCmcFallbackLock);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v4);
  return result;
}

Referenced by:

HalpInitializeCmc