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.