KiSetupTimeIncrement

VOID __stdcall KiSetupTimeIncrement(UINT64 MaxIncrement, UINT64 MinIncrement){
  unsigned int v3; 
  int v4; 
  unsigned int v5; 
  UINT64 v6; 
  LARGE_INTEGER v7; 
  __int64 QuadPart; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  CHAR v11; 
  CHAR LeftShift; 
  union _LARGE_INTEGER PerformanceFrequency; 
  PerformanceFrequency.QuadPart = 0i64;
  v11 = 0;
  v3 = 156250;
  v4 = MinIncrement;
  if( (unsigned int)MinIncrement <= 0x1388 )
    v4 = 5000;
  v5 = KiMinDynamicTickDuration;
  KeMinimumIncrement = v4;
  if( MaxIncrement < 0x2625A )
    v3 = MaxIncrement;
  KeMaximumIncrement = v3;
  if( (unsigned int)MinIncrement > KiMinDynamicTickDuration )
  {
    v5 = MinIncrement;
    KiMinDynamicTickDuration = MinIncrement;
  }
  v6 = KiMaxDynamicTickDuration;
  if( MaxIncrement < KiMaxDynamicTickDuration )
  {
    v6 = MaxIncrement;
    KiMaxDynamicTickDuration = MaxIncrement;
  }
  if( v6 < v5 )
    KiMaxDynamicTickDuration = v5;
  KiTickOffset = v3;
  LeftShift = 0;
  KiMaximumIncrementReciprocal = RtlpComputeFraction(1ui64, v3, &LeftShift);
  KeNumberProcessorsGroup0[2] = -LeftShift;
  v7 = KeQueryPerformanceCounter(&PerformanceFrequency);
  QuadPart = PerformanceFrequency.QuadPart;
  KeTimeAdjustmentFrequency = PerformanceFrequency.QuadPart;
  v9 = v7.QuadPart;
  v10 = RtlGenerateQpcToIncrementConstants(PerformanceFrequency.LowPart, &v11);
  KUSER_SHARED_DATA.QpcFrequency = QuadPart;
  KUSER_SHARED_DATA.QpcInterruptTimeIncrement = v10;
  KUSER_SHARED_DATA.QpcInterruptTimeIncrementShift = v11;
  KUSER_SHARED_DATA.QpcSystemTimeIncrement = v10;
  KUSER_SHARED_DATA.QpcSystemTimeIncrementShift = v11;
  KUSER_SHARED_DATA.BaselineSystemTimeQpc = v9;
  KUSER_SHARED_DATA.BaselineInterruptTimeQpc = v9;
  KiBalanceSetManagerPeriod = 0x989680 / KeMaximumIncrement;
  *(_DWORD *)KiBalanceSetManagerCount = 0x989680 / KeMaximumIncrement;
}

Referenced by:

KeInitializeClock