HalpArtQueryCounter
UINT64 __stdcall HalpArtQueryCounter(UINT64 *a1, INT64 a2){
unsigned __int64 v2;
unsigned __int64 v3;
unsigned __int64 v4;
unsigned __int64 v5;
UINT64 pullResult;
pullResult = 0i64;
v2 = *(&CmpDummyThreadEvent + 1069);
if( *(&CmpDummyThreadEvent + 1069) )
{
if( *(&CmpDummyThreadEvent + 1069) == 1 )
{
_mm_lfence();
}
else if( *(&CmpDummyThreadEvent + 1069) == 2 )
{
_mm_mfence();
}
v2 = __rdtsc();
LODWORD(a2) = HIDWORD(v2);
v2 = (unsigned int)v2;
a2 = (unsigned int)a2;
}
else
{
__asm { rdtscp }
}
v3 = *((unsigned int *)a1 + 1);
if( RtlULongLongMult(((a2 << 32) | v2) - __readmsr(0x3Bu), *(unsigned int *)a1, &pullResult) >= 0 )
return pullResult / v3;
if( v4 <= v5 )
return v4 * (v5 / v3);
return v5 * (v4 / v3);
}Referenced by:
No references.