KeEstimateClockTickDuration

INT64 *__fastcall KeEstimateClockTickDuration(INT64 a1, CHAR a2, CHAR a3, UINT8 a4, UINT64 a5, INT64 *a6, INT64 *a7){
  int v7; 
  bool v8; 
  UINT64 v9; 
  INT64 v10; 
  INT64 *result; 
  UINT64 v12[3]; 
  INT64 v13; 
  v7 = 2;
  v12[0] = 0i64;
  v8 = *(_BYTE *)(a1 + 33) == 0;
  v9 = KiClockTimerNextTickTime;
  LODWORD(v13) = 2;
  if( v8 )
  {
    KiGetNextTimerExpirationDueTime(a1, 0, a5, a3, a4, v12, &v13);
    if( v9 <= v12[0] )
      v9 = v12[0];
    goto LABEL_11;
  }
  if( a2 )
  {
    if( (_BYTE)KiDynamicTickDisableReason || KiClockState )
      a2 = 0;
    if( a2 )
    {
      KiGetNextTimerExpirationDueTime(a1, 1, a5, a3, a4, v12, &v13);
      if( a5 + (unsigned int)KiLastRequestedTimeIncrement < v12[0] )
      {
        v9 = v12[0];
LABEL_11:
        v7 = v13;
      }
    }
  }
  v10 = -1i64;
  if( v9 != -1i64 )
  {
    if( v9 <= a5 )
      v10 = 0i64;
    else
      v10 = v9 - a5;
  }
  *a6 = v10;
  result = a7;
  *(_DWORD *)a7 = v7;
  return result;
}

Referenced by:

PpmEstimateIdleDuration