HalpTimerConvertPerformanceCounterToAuxiliaryCounter

VOID __fastcall HalpTimerConvertPerformanceCounterToAuxiliaryCounter(
        UINT64 PerformanceCounterValue,
        UINT64 *AuxiliaryCounterValueOut,
        UINT64 *ConversionErrorOut){
  __int64 v3; 
  UINT64 v5; 
  UINT64 v6; 
  UINT64 v9; 
  UINT64 v10; 
  NTSTATUS v11; 
  int v12; 
  UINT64 pullResult; 
  UINT64 CurrentAuxOut; 
  _LARGE_INTEGER CurrentQpcOut; 
  UINT64 ValueConverted; 
  __int64 v17[2]; 
  UINT64 ErrorOut; 

  CurrentAuxOut = 0i64;
  v3 = 0i64;
  CurrentQpcOut.QuadPart = 0i64;
  ErrorOut = 0i64;
  v5 = 0i64;
  pullResult = 0i64;
  v6 = 0i64;
  ValueConverted = 0i64;
  v17[0] = 0i64;
  if( !HalpAuxiliaryCounter )
    goto LABEL_9;
  v9 = HalpTimerQpcFreqForAuxQpcConversion;
  v10 = *((_QWORD *)HalpAuxiliaryCounter + 24);
  if( HalpTimerQpcFreqForAuxQpcConversion && v10 )
  {
    if( PerformanceCounterValue < HalpTimerEarliestQpcAllowedToConvert )
      goto LABEL_9;
    HalpTimerCaptureCurrentAuxiliaryQpcPair(&CurrentQpcOut, &CurrentAuxOut, &ErrorOut);
    if( RtlULongLongMult(ErrorOut, 0x3B9ACA00ui64, &pullResult) < 0 )
      goto LABEL_9;
    v6 = pullResult / v9;
    v11 = HalpTimerConvertAuxiliaryCounter(
            CurrentQpcOut.QuadPart,
            v9,
            CurrentAuxOut,
            v10,
            PerformanceCounterValue,
            &ValueConverted,
            (UINT64 *)v17);
    v5 = ValueConverted;
    v12 = v11;
    v3 = v17[0];
  }
  else
  {
    v12 = -1073741637;
  }
  if( v12 < 0 )
  {
LABEL_9:
    *AuxiliaryCounterValueOut = 0i64;
    if( ConversionErrorOut )
      *ConversionErrorOut = 0i64;
    return;
  }
  *AuxiliaryCounterValueOut = v5;
  if( ConversionErrorOut )
    *ConversionErrorOut = v6 + v3;
}

Referenced by:

No references.