HalpTimerPropagateQpcBiasUpdate

VOID __fastcall HalpTimerPropagateQpcBiasUpdate(INT64 a1){
  __int64 v2; 
  int v3; 
  __int64 v4; 
  UINT64 v5; 
  if( a1 == HalpPerformanceCounter )
  {
    if( !qword_140C4A298 )
    {
      v2 = *(_QWORD *)(a1 + 208);
      if( qword_140C4A290 )
        qword_140C4A290(v2);
    }
    v3 = *(_DWORD *)(a1 + 228);
    if( v3 == 5 )
    {
      if( !*(_QWORD *)(a1 + 192) )
        return;
      v4 = *(_QWORD *)(a1 + 208);
      v5 = HalpTimerScaleCounter(abs64(v4), *(_QWORD *)(a1 + 192), 0x989680ui64);
      if( v4 < 0 )
        v5 = -(__int64)v5;
      KUSER_SHARED_DATA.QpcBias = v5;
      v3 = *(_DWORD *)(a1 + 228);
    }
    if( v3 == 11 || v3 == 8 )
      KUSER_SHARED_DATA.QpcBias = *(_QWORD *)(a1 + 208);
  }
}

Referenced by:

HalpTimerCalibratePerformanceCounter
HalpTimerSelectRoles