HalpTscAdvSynchComputeMinimumDelta
INT64 __fastcall HalpTscAdvSynchComputeMinimumDelta(UINT64 a1, INT64 a2){
int v2;
INT64 v3;
int v4;
int v5;
unsigned __int64 v6;
unsigned __int64 v7;
__int64 v8;
__int64 v9;
INT64 v10;
v2 = a2;
v3 = 0x7FFFFFFFFFFFFFFFi64;
v4 = 2;
v5 = *((_DWORD *)KeGetCurrentPrcb() + 9) == a1;
if( (_DWORD)a2 )
{
v6 = (unsigned __int64)(unsigned int)a1 << 7;
do
{
--v2;
while( *(_DWORD *)(v6 + TscRequest + 4) != v5 )
_mm_pause();
HalpProcessorFence();
v7 = __rdtsc();
v8 = *(_QWORD *)(v6 + TscRequest + 8);
v9 = TscRequest;
*(_QWORD *)(v6 + TscRequest + 8) = v7;
_InterlockedXor((volatile signed __int32 *)(v6 + v9 + 4), 1u);
if( v4 )
{
--v4;
}
else
{
v10 = v7 - v8;
if( v10 < v3 )
v3 = v10;
}
}
while( v2 );
}
return v3;
}Referenced by:
HalpTscAdvSynchCalculateRemoteDelta
HalpTscAdvSynchTarget