HalpTimerInitializeEarlyStallSource

INT64 __fastcall HalpTimerInitializeEarlyStallSource(
        _LOADER_PARAMETER_BLOCK *LoaderBlock,
        INT64 a2,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8){
  int v9; 
  KDPC *Timer; 
  void *v11; 
  void *v12; 
  void *v13; 
  KDPC *v14; 
  unsigned int v15; 
  bool v16; 
  unsigned __int64 v17; 
  LODWORD(HalpRegisteredTimerCount) = 0;
  HalpTimerLoaderBlock = LoaderBlock;
  qword_140C4BEA8 = (__int64)&HalpRegisteredTimers;
  HalpRegisteredTimers = (ULONG_PTR)&HalpRegisteredTimers;
  v9 = HalpTimerRegisterBuiltinPluginsCommon(0i64);
  if( v9 < 0 )
  {
    HalpTimerLastProblem = 14;
  }
  else if( (_DWORD)HalpRegisteredTimerCount && (Timer = (KDPC *)HalpFindTimer(0, 2, 0, 0, 1), (v14 = Timer) != 0i64) )
  {
    HalpPerformanceCounter = (ULONG_PTR)Timer;
    HalpStallCounter = Timer;
    v9 = HalpTimerInitialize((__int64)Timer, v11, v12, v13);
    if( v9 >= 0 )
    {
      v15 = (__int64)v14[2].DpcData & 0xFFFFFFFB;
      v16 = *(_QWORD *)&v14[3].TargetInfoAsUlong == 0i64;
      LODWORD(v14[2].DpcData) = v15;
      if( v16 )
      {
        LODWORD(v14[2].DpcData) = v15 | 8;
        v17 = *(_QWORD *)(*((_QWORD *)LoaderBlock + 30) + 2496i64);
        *(_QWORD *)&v14[3].TargetInfoAsUlong = v17;
        if( v17 < 0x3E8 )
        {
          v14[4].TargetInfoAsUlong = 0;
          HalpTimerLastProblem = 40;
          HIDWORD(v14[3].DpcData) = 40;
          v14[4].DpcListEntry.Next = (_SINGLE_LIST_ENTRY *)"minkernel\\hals\\lib\\timers\\common\\timer.c";
          *(_QWORD *)&v14[3].TargetInfoAsUlong = 15625000i64;
          LODWORD(v14[4].ProcessorHistory) = 1186;
        }
      }
      else
      {
        HalpTimerProcessorFrequencyKnown = 1;
      }
    }
  }
  else
  {
    v9 = -1073741823;
    HalpTimerLastProblem = 21;
  }
  return(unsigned int)v9;
}

Referenced by:

No references.