HalpTscSynchronizationWorker
INT8 __stdcall HalpTscSynchronizationWorker(PVOID Argument){
INT64 *v1;
INT8 result;
INT64 v3;
__int16 v4;
int v5;
__int64 v6;
int v7;
v1 = (INT64 *)((unsigned __int64)&v6 & 0xFFFFFFFFFFFFFFC0ui64);
*(_QWORD *)((unsigned __int64)&v6 & 0xFFFFFFFFFFFFFFC0ui64) = Argument;
result = (unsigned __int8)memset((VOID *)(((unsigned __int64)&v6 & 0xFFFFFFFFFFFFFFC0ui64) + 64), 0i64, 0x80u);
v3 = *(_QWORD *)((unsigned __int64)&v6 & 0xFFFFFFFFFFFFFFC0ui64);
if( *(_DWORD *)(v3 + 40) >= 2u )
{
if( *(_DWORD *)(HalpPerformanceCounter + 228) == 5 )
{
v4 = v7;
*(_QWORD *)(((unsigned __int64)KeGetCurrentPrcb()->Number << 7) + qword_140C4A418 + 16) = v1 + 8;
_disable();
v5 = v4 & 0x200;
if( _InterlockedExchangeAdd((volatile signed __int32 *)v3, 0xFFFFFFFF) != 1 )
{
do
_mm_pause();
while( *(_DWORD *)v3 );
}
if( KeGetCurrentPrcb()->Number == *(&stru_140CF2E80 + 1864) )
HalpTscAdvSynchLeader(v3);
else
result = HalpTscAdvSynchTarget();
if( v5 )
_enable();
}
else
{
return HalpTscCompatibilitySynchronization(*v1);
}
}
return result;
}Referenced by:
HalpPostSleepMP