KeWakeProcessor

UINT64 __stdcall KeWakeProcessor(){
  struct _KPRCB *CurrentPrcb; 
  __int64 v1; 
  unsigned __int64 v2; 
  UINT64 result; 
  CurrentPrcb = KeGetCurrentPrcb();
  v1 = *((unsigned int *)CurrentPrcb + 9);
  *((_BYTE *)CurrentPrcb + 32410) = 0;
  _InterlockedAnd64(
    (volatile signed __int64 *)&KeSleepingProcessors.Bitmap[(unsigned __int64)(unsigned int)KiProcessorIndexToNumberMappingTable[v1] >> 6],
    ~(1i64 << (KiProcessorIndexToNumberMappingTable[v1] & 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