HalpTimerCaptureCurrentAuxiliaryQpcPair

VOID __stdcall HalpTimerCaptureCurrentAuxiliaryQpcPair(UINT64 *CurrentQpcOut, UINT64 *CurrentAuxOut, UINT64 *ErrorOut){
  UINT64 v3; 
  UINT64 QuadPart; 
  unsigned int v6; 
  UINT64 v7; 
  LARGE_INTEGER PerformanceCounter; 
  PVOID v10; 
  PVOID v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  unsigned __int64 v15; 
  v3 = 0i64;
  QuadPart = 0i64;
  v6 = 0;
  v7 = -1i64;
  while( 1 )
  {
    PerformanceCounter = KeQueryPerformanceCounter(0i64);
    HalpTimerGetInternalData((KDPC *)HalpAuxiliaryCounter, v10, HalpAuxiliaryCounter, v11);
    v14 = (*(__int64(__fastcall **)(__int64))(v12 + 112))(v13);
    v15 = *(_QWORD *)&KeQueryPerformanceCounter(0i64) - PerformanceCounter.QuadPart;
    if( v15 <= HalpTimerClosestAuxiliaryQpcPair )
      break;
    if( v7 > v15 )
    {
      v3 = v14;
      QuadPart = PerformanceCounter.QuadPart;
    }
    if( v7 <= v15 )
      v15 = v7;
    ++v6;
    v7 = v15;
    if( v6 >= 0xA )
      goto LABEL_10;
  }
  v7 = v15;
  v3 = v14;
  QuadPart = PerformanceCounter.QuadPart;
LABEL_10:
  *CurrentQpcOut = QuadPart;
  *CurrentAuxOut = v3;
  *ErrorOut = v7;
}

Referenced by:

HalpTimerConvertAuxiliaryCounterToPerformanceCounter
HalpTimerConvertPerformanceCounterToAuxiliaryCounter