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.