KeQueryUnbiasedInterruptTimePrecise

UINT64 __stdcall KeQueryUnbiasedInterruptTimePrecise(UINT64 *QpcTimeStamp){
  __int64 v2; 
  unsigned __int64 TimeUpdateLock; 
  unsigned __int64 BaselineInterruptTimeQpc; 
  __int64 v5; 
  LARGE_INTEGER PerformanceCounter; 
  __int64 v7; 
  volatile unsigned __int64 InterruptTimeBias; 
  do
  {
    v2 = 0i64;
    InterruptTimeBias = KUSER_SHARED_DATA.InterruptTimeBias;
    while( 1 )
    {
      TimeUpdateLock = KUSER_SHARED_DATA.TimeUpdateLock;
      if( (KUSER_SHARED_DATA.TimeUpdateLock & 1) == 0 )
      {
        BaselineInterruptTimeQpc = KUSER_SHARED_DATA.BaselineInterruptTimeQpc;
        v5 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
        PerformanceCounter = KeQueryPerformanceCounter(0i64);
        if( KUSER_SHARED_DATA.TimeUpdateLock == TimeUpdateLock )
          break;
      }
      _mm_pause();
    }
    *QpcTimeStamp = PerformanceCounter.QuadPart;
    if( PerformanceCounter.QuadPart > BaselineInterruptTimeQpc )
    {
      v7 = PerformanceCounter.QuadPart - BaselineInterruptTimeQpc - 1;
      if( KUSER_SHARED_DATA.QpcInterruptTimeIncrementShift )
        v7 <<= KUSER_SHARED_DATA.QpcInterruptTimeIncrementShift;
      v2 = ((unsigned __int64)v7 * (unsigned __int128)KUSER_SHARED_DATA.QpcInterruptTimeIncrement) >> 64;
    }
  }
  while( InterruptTimeBias != KUSER_SHARED_DATA.InterruptTimeBias );
  return v2 + v5 - InterruptTimeBias;
}

Referenced by:

IoDiskIoAttributionQuery