HalpMceBarrierWait
CHAR __fastcall HalpMceBarrierWait(_DWORD *a1, INT64 a2, INT64 a3){
unsigned __int64 v3;
unsigned __int64 v4;
unsigned __int64 v5;
unsigned __int64 v6;
if( !(_DWORD)a3 || HalpMceBarrierTimeoutDisabled )
{
while( *a1 < (int)a2 )
_mm_pause();
}
else
{
v3 = (int)a3 * *((_QWORD *)KeGetPcr() + 24) / 0x3E8ui64;
v4 = __rdtsc();
v5 = v4;
while( *a1 < (int)a2 )
{
v6 = __rdtsc();
if( v6 - v5 <= v3 >> 1 )
{
if( v6 - v4 > v3 )
return 0;
}
else
{
v4 = v6;
}
v5 = v6;
_mm_pause();
}
}
return 1;
}Referenced by:
HalpMceHandlerWithRendezvous