HalpTimerInitialize

__int64 __fastcall HalpTimerInitialize(INT64 a1, void *a2, void *a3, void *a4){
  __int64 v5; 
  void *v6; 
  int v7; 
  void *v8; 
  void *v9; 
  __int64 v10; 
  void *v11; 
  void *v12; 

  if( (*(_DWORD *)(a1 + 184) & 2) != 0 )
  {
    v7 = 0;
  }
  else
  {
    HalpTimerGetInternalData((_KDPC *)a1, a2, a3, a4);
    v7 = (*(__int64(__fastcall **)(__int64))(a1 + 104))(v5);
    if( v7 < 0 )
    {
      *(_DWORD *)(a1 + 256) = v7;
      HalpTimerLastProblem = 15;
      *(_DWORD *)(a1 + 252) = 15;
      *(_QWORD *)(a1 + 264) = "minkernel\\hals\\lib\\timers\\common\\timer.c";
      *(_DWORD *)(a1 + 272) = 2563;
    }
    else
    {
      if( (*(_DWORD *)(a1 + 224) & 2) != 0 )
      {
        HalpTimerGetInternalData((_KDPC *)a1, v6, v8, v9);
        _InterlockedExchange64((volatile __int64 *)(a1 + 200), (*(__int64(__fastcall **)(__int64))(a1 + 112))(v10));
        HalpTimerCalibratePerformanceCounter(a1, 0i64, v11, v12);
      }
      if( *(_DWORD *)(a1 + 228) == 3 )
        HalpTimerNoteHpetMaskingBehavior();
    }
  }
  *(_DWORD *)(a1 + 184) |= (v7 >> 31) + 2;
  return(unsigned int)v7;
}

Referenced by:

HalpTimerInitializeEarlyStallSource
HalpTimerInitializeHypervisorTimer
HalpTimerMeasureFrequencies
HalpTimerSelectRoles