HalpCmcInitializePolling

NTSTATUS __stdcall HalpCmcInitializePolling(INT64 a1){
  unsigned __int64 v2; 
  int v3; 
  NTSTATUS result; 

  v2 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(qword_140CED3C0);
  if( !byte_140C50551 )
  {
    qword_140C50528 = (INT64)&unk_140CED3D0;
    HalpCmcInitializeErrorPacketContents((INT64)&unk_140CED3D0);
    v3 = *(_DWORD *)(a1 + 52);
    stru_140C505B8.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))HalpCmcDeferredRoutine;
    qword_140C50608 = (__int64)HalpCmcWorkerRoutine;
    LODWORD(Period) = v3;
    *(_QWORD *)stru_140C50578.gap0 = 8i64;
    *(_QWORD *)&stru_140C50578.gap0[16] = &stru_140C50578.gap0[8];
    *(_QWORD *)&stru_140C50578.gap0[8] = &stru_140C50578.gap0[8];
    stru_140C505B8.TargetInfoAsUlong = 275;
    stru_140C505B8.DeferredContext = &Period;
    stru_140C505B8.DpcData = 0i64;
    stru_140C505B8.ProcessorHistory = 0i64;
    qword_140C50610 = (__int64)&Period;
    qword_140C505F8 = 0i64;
    stru_140C50578.DueTime.QuadPart = 0i64;
    stru_140C50578.Period = 0;
    stru_140C50578.Processor = 0;
    byte_140C50551 = 1;
  }
  KxReleaseSpinLock(qword_140CED3C0);
  result = KiIrqlFlags;
  __writecr8(v2);
  return result;
}

Referenced by:

HalpInitializeCmc