HalpTimerConvertAuxiliaryCounter
NTSTATUS __stdcall HalpTimerConvertAuxiliaryCounter(
UINT64 ConvertFromCounter,
UINT64 ConvertFromCounterFreq,
UINT64 ConvertToCounter,
UINT64 ConvertToCounterFreq,
UINT64 ValueToConvert,
UINT64 *ValueConverted,
UINT64 *ErrorOut){
UINT64 v7;
UINT64 *v9;
UINT64 v10;
NTSTATUS result;
ULONGLONG v14;
ULONGLONG v15;
__int64 v16;
UINT64 *v17;
ULONGLONG pullResult;
pullResult = 0i64;
v7 = 0i64;
v9 = ValueConverted;
v10 = ValueToConvert - ConvertFromCounter;
if( ConvertFromCounter >= ValueToConvert )
v10 = ConvertFromCounter - ValueToConvert;
if( v10 / ConvertFromCounterFreq >= 0xA )
{
result = -1073741811;
goto LABEL_13;
}
if( RtlULongLongMult(ConvertToCounterFreq, v10, &pullResult) < 0 )
goto LABEL_6;
v15 = pullResult / ConvertFromCounterFreq;
v7 = 0x3B9ACA00 / ConvertToCounterFreq;
if( ConvertFromCounter >= ValueToConvert )
{
if( v14 < v15 )
{
LABEL_6:
result = -1073741823;
goto LABEL_13;
}
result = 0;
*v9 = v14 - v15;
}
else
{
v16 = -1i64;
if( v15 + v14 >= v15 )
v16 = v15 + v14;
result = v15 + v14 < v15 ? 0xC0000095 : 0;
*v9 = v16;
}
LABEL_13:
v17 = ErrorOut;
if( ErrorOut )
*ErrorOut = v7;
if( result < 0 )
{
if( v17 )
*v17 = 0i64;
*v9 = 0i64;
}
return result;
}Referenced by:
HalpTimerConvertAuxiliaryCounterToPerformanceCounter
HalpTimerConvertPerformanceCounterToAuxiliaryCounter