HalpTscCompatibilitySynchronization

CHAR __stdcall HalpTscCompatibilitySynchronization(INT64 a1){
  __int16 v1; 
  int v3; 
  int v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  signed __int32 v8[8]; 
  int v9; 

  v1 = v9;
  _disable();
  v3 = v1 & 0x200;
  if( _InterlockedExchangeAdd((volatile signed __int32 *)a1, 0xFFFFFFFF) == 1 )
  {
    v4 = *(_DWORD *)(a1 + 40);
    *(_DWORD *)(a1 + 4) = 0;
    *(_DWORD *)(a1 + 8) = v4;
    *(_QWORD *)(a1 + 24) = 0i64;
    *(_QWORD *)(a1 + 16) = -1i64;
    _InterlockedDecrement((volatile signed __int32 *)a1);
  }
  else
  {
    do
      _mm_pause();
    while( *(_DWORD *)a1 != -1 );
    _InterlockedOr(v8, 0);
  }
  HalpProcessorFence();
  v5 = __rdtsc();
  while( *(_DWORD *)(a1 + 4) != KeGetCurrentPrcb()->Number )
    _mm_pause();
  if( !*(_BYTE *)(a1 + 34) || *(_DWORD *)(a1 + 36) != KeGetCurrentPrcb()->Number )
  {
    if( v5 < *(_QWORD *)(a1 + 16) )
      *(_QWORD *)(a1 + 16) = v5;
    if( v5 > *(_QWORD *)(a1 + 24) )
      *(_QWORD *)(a1 + 24) = v5;
  }
  _InterlockedIncrement((volatile signed __int32 *)(a1 + 4));
  if( _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 8), 0xFFFFFFFF) == 1 )
  {
    *(_BYTE *)(a1 + 32) = *(_BYTE *)(a1 + 33) || *(_QWORD *)(a1 + 24) - *(_QWORD *)(a1 + 16) <= 0xF4240ui64;
    _InterlockedDecrement((volatile signed __int32 *)(a1 + 8));
  }
  else
  {
    do
      _mm_pause();
    while( *(_DWORD *)(a1 + 8) != -1 );
    _InterlockedOr(v8, 0);
  }
  LOBYTE(v6) = *(_BYTE *)(a1 + 32);
  if( (_BYTE)v6 )
  {
    v6 = *(_QWORD *)(a1 + 24);
    __writemsr(0x10u, v6);
  }
  if( v3 )
    _enable();
  return v6;
}

Referenced by:

HalpTscSynchronizationWorker