NtConvertBetweenAuxiliaryCounterAndPerformanceCounter
__int64 __fastcall NtConvertBetweenAuxiliaryCounterAndPerformanceCounter(
char a1,
unsigned __int64 a2,
_QWORD *a3,
_QWORD *a4){
__int64 v7;
__int64(__fastcall *v8)();
int v9;
__int64(__fastcall *v10)();
__int64 v12;
__int64 v13[4];
v13[0] = 0i64;
v12 = 0i64;
if( KeGetCurrentThread()->PreviousMode )
{
if( (a2 & 3) != 0 )
ExRaiseDatatypeMisalignment();
if( a2 + 8 > 0x7FFFFFFF0000i64 || a2 + 8 < a2 )
MEMORY[0x7FFFFFFF0000] = 0;
v7 = *(_QWORD *)a2;
v13[1] = *(_QWORD *)a2;
ProbeForWrite((UINT64)a3, 8i64, 4i64);
if( a4 )
ProbeForWrite((UINT64)a4, 8i64, 4i64);
v8 = off_140C00928[0];
if( !a1 )
v8 = off_140C00920[0];
v9 = ((__int64(__fastcall *)(__int64, __int64 *, __int64 *))v8)(v7, &v12, v13);
if( v9 >= 0 )
{
*a3 = v12;
if( a4 )
*a4 = v13[0];
}
}
else
{
v10 = off_140C00928[0];
if( !a1 )
v10 = off_140C00920[0];
return((unsigned int(__fastcall *)(_QWORD, _QWORD *, _QWORD *))v10)(*(_QWORD *)a2, a3, a4);
}
return(unsigned int)v9;
}Referenced by:
No references.