HalpTimerConvertAuxiliaryCounterToPerformanceCounter
NTSTATUS __stdcall HalpTimerConvertAuxiliaryCounterToPerformanceCounter(
UINT64 AuxiliaryCounterValue,
UINT64 *PerformanceCounterValueOut,
UINT64 *ConversionErrorOut){
UINT64 v3;
UINT64 v5;
UINT64 v7;
NTSTATUS v9;
UINT64 v10;
UINT64 v11;
NTSTATUS v12;
UINT64 pullResult;
_LARGE_INTEGER CurrentQpcOut;
UINT64 CurrentAuxOut;
UINT64 v17;
__int64 ValueConverted[2];
UINT64 ErrorOut;
CurrentAuxOut = 0i64;
v3 = 0i64;
CurrentQpcOut.QuadPart = 0i64;
ErrorOut = 0i64;
v5 = 0i64;
pullResult = 0i64;
v7 = 0i64;
ValueConverted[0] = 0i64;
v17 = 0i64;
if( !HalpAuxiliaryCounter )
{
v9 = -1073741637;
goto LABEL_10;
}
v10 = HalpTimerQpcFreqForAuxQpcConversion;
v11 = *((_QWORD *)HalpAuxiliaryCounter + 24);
if( HalpTimerQpcFreqForAuxQpcConversion && v11 )
{
HalpTimerCaptureCurrentAuxiliaryQpcPair(&CurrentQpcOut, &CurrentAuxOut, &ErrorOut);
if( RtlULongLongMult(ErrorOut, 0x3B9ACA00ui64, &pullResult) < 0 )
{
v9 = -1073741823;
goto LABEL_10;
}
v7 = pullResult / v10;
v12 = HalpTimerConvertAuxiliaryCounter(
CurrentAuxOut,
v11,
CurrentQpcOut.QuadPart,
v10,
AuxiliaryCounterValue,
(UINT64 *)ValueConverted,
&v17);
v5 = ValueConverted[0];
v9 = v12;
v3 = v17;
}
else
{
v9 = -1073741637;
}
if( v9 < 0 )
{
LABEL_10:
*PerformanceCounterValueOut = 0i64;
if( ConversionErrorOut )
*ConversionErrorOut = 0i64;
return v9;
}
*PerformanceCounterValueOut = v5;
if( ConversionErrorOut )
*ConversionErrorOut = v7 + v3;
return v9;
}Referenced by:
No references.