HalpTscAdvSynchToLeader

NTSTATUS __stdcall HalpTscAdvSynchToLeader(UINT64 a1){
  unsigned __int64 v1; 
  __int64 v2; 
  INT64 v3; 
  __int64 v4; 
  unsigned int i; 
  __int64 v6; 
  INT64 v7; 
  __int64 v8; 
  unsigned int v9; 
  unsigned __int32 v10; 
  NTSTATUS result; 
  signed __int32 v12[22]; 

  v1 = (unsigned __int64)(unsigned int)a1 << 7;
  v2 = (unsigned int)a1;
  *(_QWORD *)(v1 + qword_140C4A418 + 8) = 0i64;
  _InterlockedOr(v12, 0);
  _InterlockedExchange((volatile __int32 *)(v1 + qword_140C4A418), 1);
  while( *(_DWORD *)(v1 + qword_140C4A418) == 1 )
    _mm_pause();
  v3 = 0i64;
  v4 = 0x7FFFFFFFFFFFFFFFi64;
  for( i = 0; i < HalpTscSyncRecalculateSkews; ++i )
  {
    v6 = v4;
    v7 = HalpTscAdvSynchCalculateRemoteDelta(v2, (unsigned int)HalpTscRequestedIterations, 0i64);
    v8 = qword_140C4A418;
    *(_QWORD *)(v1 + qword_140C4A418 + 8) = 0i64;
    *(_DWORD *)(v1 + v8 + 4) = 100;
    _InterlockedOr(v12, 0);
    _InterlockedExchange((volatile __int32 *)(v1 + qword_140C4A418), 2);
    while( *(_DWORD *)(v1 + qword_140C4A418) == 2 )
      _mm_pause();
    v3 = HalpTscAdvSynchCalculateRemoteDelta(v2, (unsigned int)HalpTscRequestedIterations, 0i64);
    v4 = (v7 - v3) / 100;
    if( v4 >= v6 )
      v4 = v6;
  }
  v9 = 0;
  v10 = 0;
  *(_DWORD *)(qword_140C4A3E0 + 4 * v2) = v4;
  do
  {
    if( !v9 )
    {
      *(_QWORD *)(v1 + qword_140C4A418 + 8) = v4 - v3;
      _InterlockedOr(v12, 0);
      _InterlockedExchange((volatile __int32 *)(v1 + qword_140C4A418), 1);
      while( *(_DWORD *)(v1 + qword_140C4A418) == 1 )
        _mm_pause();
    }
    v3 = HalpTscAdvSynchCalculateRemoteDelta(v2, (unsigned int)HalpTscRequestedIterations, 0i64);
    if( !v9 )
    {
      v12[8] = v10;
      HalpTscTraceProcessorSynchronization(KeGetCurrentPrcb()->Number, (unsigned int)v2, v3);
    }
    ++v9;
    if( (unsigned __int64)(v3 + 24) > 0x30 )
      v9 = 0;
    ++v10;
  }
  while( v10 < 0x32 && v9 < 2 );
  result = qword_140C4A3D8;
  *(_DWORD *)(qword_140C4A3D8 + 4 * v2) = v10;
  return result;
}

Referenced by:

HalpTscAdvSynchLeader