HalpInitializeTimers

NTSTATUS __stdcall HalpInitializeTimers(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  KDPC *v2; 
  PVOID v3; 
  PVOID v4; 
  PVOID v5; 
  __int64 v6; 
  NTSTATUS ReferencePage; 
  ULONG_PTR *Timer; 
  ULONG_PTR v9; 
  int v10; 
  int v11; 
  unsigned int v12; 
  WCHAR *v13; 
  INT64 result[17]; 
  int v16; 
  int v17; 
  memset((INT64)result, 0i64);
  HalpTimerLoaderBlock = LoaderBlock;
  v2 = HalpStallCounter;
  HalpOriginalStallTimer = (__int64)HalpStallCounter;
  HalpTimerGetInternalData(HalpStallCounter, v3, v4, v5);
  ReferencePage = ((__int64(__fastcall *)(__int64))v2[1].SystemArgument1)(v6);
  if( ReferencePage < 0 )
  {
    v2[4].TargetInfoAsUlong = ReferencePage;
    HalpTimerLastProblem = 15;
    HIDWORD(v2[3].DpcData) = 15;
    v2[4].DpcListEntry.Next = (_SINGLE_LIST_ENTRY *)"minkernel\\hals\\lib\\timers\\common\\timer.c";
    LODWORD(v2[4].ProcessorHistory) = 1552;
  }
  else
  {
    ReferencePage = HalpTimerRegisterBuiltinPluginsCommon(1i64);
    if( ReferencePage < 0 )
    {
      HalpTimerLastProblem = 14;
    }
    else
    {
      Timer = HalpFindTimer(5, 0, 0, 0, 1);
      if( Timer )
      {
        v9 = Timer[36];
        v10 = *((_DWORD *)Timer + 57);
        v11 = *((_DWORD *)Timer + 71);
        v16 = v10;
        v12 = *(unsigned __int16 *)(v9 + 24);
        v13 = *(WCHAR **)(v9 + 32);
        v17 = v11;
        HalpTimerBuildKnownResourceIdString((INT64)result, v12 >> 1, v13);
      }
      ReferencePage = HalpTimerSelectRoles();
      if( ReferencePage < 0 || (ReferencePage = HalpTimerCreateReferencePage(), ReferencePage < 0) )
LABEL_13:
        KeBugCheckEx(0x5Cu, 0x110ui64, 0x5250631ui64, HalpTimerLastProblem, ReferencePage);
      HalpOriginalPerformanceCounter = HalpPerformanceCounter;
      HalpTimerDpc.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))HalpTimerDpcRoutine;
      qword_140C4BD70 = (__int64)&qword_140C4BD68;
      qword_140C4BD68 = (__int64)&qword_140C4BD68;
      off_140C006A8[0] = (__int64(__fastcall *)())HalpTimerReportIdleStateUsage;
      HalpTimerPeriodicTimer = 8i64;
      off_140C006A0[0] = (__int64(__fastcall *)())HalpTimerQueryWakeTime;
      HalpTimerDpc.TargetInfoAsUlong = 275;
      HalpTimerDpc.DeferredContext = 0i64;
      HalpTimerDpc.DpcData = 0i64;
      HalpTimerDpc.ProcessorHistory = 0i64;
      qword_140C4BD78 = 0i64;
      dword_140C4BD9C = 0;
      word_140C4BD98 = 0;
      if( HalpAlwaysOnCounter )
        HalpTimerMaximumAllowableDrift = HalpTimerCalculateMaximumAllowableDrift();
    }
  }
  if( ReferencePage < 0 )
    goto LABEL_13;
  return ReferencePage;
}

Referenced by:

No references.