HalpTimerCaptureCurrentAuxiliaryQpcPair

VOID __stdcall HalpTimerCaptureCurrentAuxiliaryQpcPair(
        _LARGE_INTEGER *CurrentQpcOut,
        UINT64 *CurrentAuxOut,
        UINT64 *ErrorOut){
  UINT64 v3; 
  LONGLONG v5; 
  unsigned int v6; 
  UINT64 v7; 
  UINT64 PerformanceCounter; 
  PVOID v10; 
  PVOID v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  unsigned __int64 v15; 

  v3 = 0i64;
  v5 = 0i64;
  v6 = 0;
  v7 = -1i64;
  while( 1 )
  {
    PerformanceCounter = KeQueryPerformanceCounter(0i64);
    HalpTimerGetInternalData((_KDPC *)HalpAuxiliaryCounter, v10, HalpAuxiliaryCounter, v11);
    v14 = (*(__int64(__fastcall **)(__int64))(v12 + 112))(v13);
    v15 = KeQueryPerformanceCounter(0i64) - PerformanceCounter;
    if( v15 <= HalpTimerClosestAuxiliaryQpcPair )
      break;
    if( v7 > v15 )
    {
      v3 = v14;
      v5 = PerformanceCounter;
    }
    if( v7 <= v15 )
      v15 = v7;
    ++v6;
    v7 = v15;
    if( v6 >= 0xA )
      goto LABEL_10;
  }
  v7 = v15;
  v3 = v14;
  v5 = PerformanceCounter;
LABEL_10:
  CurrentQpcOut->QuadPart = v5;
  *CurrentAuxOut = v3;
  *ErrorOut = v7;
}

Referenced by:

HalpTimerConvertAuxiliaryCounterToPerformanceCounter
HalpTimerConvertPerformanceCounterToAuxiliaryCounter