HalpTimerSchedulePeriodicQueries

INT64 __stdcall HalpTimerSchedulePeriodicQueries(){
  ULONG_PTR v0; 
  ULONG_PTR v1; 
  __int64 v2; 
  ULONGLONG v3; 
  INT64 result; 
  ULONGLONG v5; 
  ULONGLONG pullResult; 
  ULONGLONG v7; 
  pullResult = 0i64;
  v0 = HalpAlwaysOnCounter;
  v1 = HalpPerformanceCounter;
  if( HalpAlwaysOnCounter )
    v0 = -(__int64)(*(_DWORD *)(HalpAlwaysOnCounter + 220) < 0x40u) & HalpAlwaysOnCounter;
  KeQueryPerformanceCounter(0i64);
  HalpTimerLastDpc = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
  if( RtlULongLongMult(1i64 << *(_DWORD *)(v1 + 220), 0xFAui64, &pullResult) < 0 )
    v3 = 120000i64;
  else
    v3 = pullResult / *(_QWORD *)(v1 + 192);
  v7 = v3;
  if( v0 )
  {
    v5 = RtlULongLongMult(v2 << *(_DWORD *)(v0 + 220), 0xFAui64, &v7) < 0 ? 120000i64 : v7 / *(_QWORD *)(v0 + 192);
    if( v5 < v3 )
      v3 = v5;
  }
  if( v3 - 1 > 0x1D4BF )
    LODWORD(v3) = 120000;
  KiSetTimerEx(
    (_KTIMER *)&HalpTimerPeriodicTimer,
    (_LARGE_INTEGER)(-10000i64 * (int)v3),
    (unsigned int)v3,
    0,
    &HalpTimerDpc);
  return result;
}

Referenced by:

HalpTscFallbackToPlatformSource