HalpTscAdvSynchReadTimeStamp
UINT64 __fastcall HalpTscAdvSynchReadTimeStamp(UINT64 a1){
unsigned __int64 v2;
int v3[10];
if( (_DWORD)a1 == *((_DWORD *)KeGetCurrentPrcb() + 9) )
{
HalpProcessorFence();
return __rdtsc();
}
else
{
v2 = (unsigned __int64)(unsigned int)a1 << 7;
_InterlockedExchange((volatile __int32 *)(v2 + TscRequest), 7);
while( *(_DWORD *)(v2 + TscRequest) == 7 )
_mm_pause();
while( *(_DWORD *)(v2 + TscRequest) )
_mm_pause();
_InterlockedOr(v3, 0);
return *(_QWORD *)(v2 + TscRequest + 8);
}
}Referenced by:
HalpTscAdvSynchLeader