KiCheckKeepAlive

UINT8 __stdcall KiCheckKeepAlive(UINT64 ProcNumber){
  unsigned int v1; 
  UINT8 v2; 
  unsigned __int64 v3; 
  char v4; 
  unsigned __int64 v5; 

  v1 = ProcNumber;
  v2 = 0;
  v3 = (unsigned int)KiProcessorIndexToNumberMappingTable[(unsigned int)ProcNumber];
  v4 = v3 & 0x3F;
  v5 = v3 >> 6;
  if( ((KiClockCheckPending.Bitmap[v5] >> v4) & 1) != 0 )
  {
    if( ((KiClockCheckReady.Bitmap[v5] >> v4) & 1) != 0 )
    {
      KeRemoveProcessorAffinityEx(&KiClockCheckReady.Count, (unsigned int)ProcNumber);
      KeRemoveProcessorAffinityEx(&KiClockCheckPending.Count, v1);
      return 1;
    }
    else
    {
      KeAddProcessorAffinityEx(&KiClockCheckReady.Count, (unsigned int)ProcNumber);
    }
  }
  return v2;
}

Referenced by:

KeAccumulateTicks