HalpPostSleepMP

VOID __stdcall HalpPostSleepMP(INT64 NumberProcessors){
  __int64 v1; 
  DOUBLE v2; 
  struct _KPRCB *CurrentPrcb; 
  INT64 v4; 
  bool IsReferenceTscConfigured; 
  INT64 v6; 
  INT64 v7; 
  INT64 v8; 
  int a4; 
  __int64 v10; 
  v10 = v1;
  a4 = NumberProcessors;
  CurrentPrcb = KeGetCurrentPrcb();
  v4 = *((unsigned int *)CurrentPrcb + 9);
  LODWORD(v10) = *((_DWORD *)CurrentPrcb + 9);
  if( (_DWORD)v10 )
  {
    HalpInterruptReinitializeThisProcessor(v4, v2);
    while( (_DWORD)v10 != HalpBarrier )
      _mm_pause();
    __writecr8(0xFui64);
  }
  if( (HalpFeatureBits & 0xC) != 0 )
    HalpMcaResumeProcessorConfig(0i64);
  if( (HalpFeatureBits & 1) != 0 )
    HalpInterruptEnablePerformanceEvents(0i64);
  IsReferenceTscConfigured = HalpHvIsReferenceTscConfigured();
  if( !(_DWORD)v10 )
  {
    dword_140C50414 = 0;
    dword_140C503F0 = 0;
    dword_140C503FC = a4 - 1;
    qword_140C50408 = (__int64)&dword_140C503F0;
    if( !IsReferenceTscConfigured )
      HalpTscInitializeSynchronizationContext((INT64)&Argument, 0, 0i64, &a4);
  }
  _InterlockedIncrement(&HalpBarrier);
  while( HalpBarrier != a4 )
    ;
  if( !(_DWORD)v10 && HalpHvWheaEnlightenedCpuManager && HalpMceEnabled )
    HalpHvSetMachineCheckHandlerState();
  if( !(_DWORD)v10 )
    HalpSetResumeTime(0i64, 1);
  HalpTimerMarkWake();
  HalpTimerRestoreProcessorCounter(v6);
  if( !(_DWORD)v10 )
  {
    SystemPowerPhase = 1;
    HalpSetResumeTime(0i64, 2);
    HalpInterruptRestoreClock();
    HalpHiberInProgress = 0;
    LODWORD(dword_140C50410) = 0;
  }
  _InterlockedIncrement(&dword_140C50414);
  while( dword_140C50414 != a4 )
    ;
  while( (int)dword_140C50410 < (int)v10 )
    ;
  HalpMcUpdateMicrocode((unsigned int)dword_140C50410, v7, v8);
  HalpErrataApplyPerProcessor();
  _InterlockedIncrement((volatile signed __int32 *)&dword_140C50410);
  while( (_DWORD)dword_140C50410 != a4 )
    ;
  HalpRestartProfiling();
  HalpInterruptEnableNmi();
  KeLoadMTRR((INT64)&byte_140C503F8);
  if( !IsReferenceTscConfigured )
    HalpTscSynchronizationWorker(&Argument);
  HalpMcaResumeProcessorConfig(1i64);
}

Referenced by:

HaliAcpiSleep