HalCalibratePerformanceCounter

VOID __stdcall HalCalibratePerformanceCounter(INT64 *Number, UINT64 NewCount){
  int v2; 
  UINT64 v3; 
  __int64 v4; 
  char v6; 
  void *v7; 
  void *v8; 
  __int64 v9; 
  UINT64 v10; 
  __int64 v11; 
  void *v12; 
  void *v13; 
  LARGE_INTEGER CurrentTime; 
  v2 = *((_DWORD *)KeGetPcr() + 105);
  v3 = NewCount;
  v4 = HalpPerformanceCounter;
  CurrentTime.QuadPart = 0i64;
  if( *(_DWORD *)(HalpPerformanceCounter + 228) == 5 )
    v3 = HalpTimerScaleCounter(NewCount, 0x989680ui64, *(_QWORD *)(HalpPerformanceCounter + 192));
  if( v4 != HalpOriginalPerformanceCounter )
  {
    v10 = *(_QWORD *)(HalpOriginalPerformanceCounter + 192);
    if( *(_DWORD *)(HalpOriginalPerformanceCounter + 228) == 5 )
      v10 = 10000000i64;
    v3 = HalpTimerScaleCounter(v3, v10, *(_QWORD *)(v4 + 192));
  }
  if( !v2 )
  {
    v6 = HalpQueryVirtualRtc(&CurrentTime, 0i64);
    HalpTimerCalibratePerformanceCounter(v4, v3, v7, v8);
    v9 = HalpAlwaysOnCounter;
    if( HalpAlwaysOnCounter )
    {
      v11 = HalpTimerScaleCounter(v3, *(_QWORD *)(v4 + 192), *(_QWORD *)(HalpAlwaysOnCounter + 192));
      HalpTimerCalibratePerformanceCounter(v9, v11, v12, v13);
    }
    if( v6 )
      HalpSetVirtualRtc(&CurrentTime);
  }
  HalpTimerResetProfileAdjustment();
  _InterlockedDecrement((volatile signed __int32 *)Number);
  do
    _mm_pause();
  while( *(int *)Number > 0 );
}

Referenced by:

HalpTscFallback
KiCalibrateTimeAdjustment