KeWakeProcessor

UINT64 __stdcall KeWakeProcessor(){
  struct _KPRCB *CurrentPrcb; 
  __int64 Number; 
  unsigned __int64 v2; 
  UINT64 result; 

  CurrentPrcb = KeGetCurrentPrcb();
  Number = CurrentPrcb->Number;
  CurrentPrcb->DeepSleep = 0;
  _InterlockedAnd64(
    (volatile signed __int64 *)&KeSleepingProcessors.Bitmap[(unsigned __int64)(unsigned int)KiProcessorIndexToNumberMappingTable[Number] >> 6],
    ~(1i64 << (KiProcessorIndexToNumberMappingTable[Number] & 0x3F)));
  v2 = __readcr4();
  if( (v2 & 0x20080) != 0 )
  {
    result = v2 ^ 0x80;
    __writecr4(v2 ^ 0x80);
    __writecr4(v2);
  }
  else
  {
    result = __readcr3();
    __writecr3(result);
  }
  return result;
}

Referenced by:

KiHvInterrupt
KiIpiInterrupt
KiMcheckAbort
KiNmiInterruptStart
KiSwInterrupt
KiVmbusInterrupt0
KiVmbusInterrupt1
KiVmbusInterrupt2
KiVmbusInterrupt3
KxIsrLinkage
PpmIdleExecuteTransition