HalpTimerInitializeClockPn

_KINTERRUPT *__fastcall HalpTimerInitializeClockPn(
        INT64 a1,
        INT64 a2,
        INT64 a3,
        VOID *a4,
        INT64 a5,
        _KINTERRUPT_MODE a6,
        UINT64 a7,
        UINT8 a8){
  void *v8; 
  ULONG_PTR v9; 
  _KINTERRUPT *result; 
  void *v11; 
  void *v12; 
  __int64 v13; 
  ULONG_PTR v14; 
  void *v15; 
  void *v16; 
  void *v17; 
  __int64 v18; 
  HalpInterruptSetIdtEntry(0xD2ui64, HalpTimerClockIpiRoutine, 13, (INT64)a4, (UINT64 *)0xFFFFFFFFFFFFFFFDi64);
  v9 = HalpClockTimer;
  result = (_KINTERRUPT *)*(unsigned int *)(HalpClockTimer + 224);
  if( ((unsigned __int8)result & 1) != 0 )
  {
    result = HalpInterruptSetIdtEntry(0xD1ui64, HalpTimerClockInterrupt, 13, (INT64)v8, (UINT64 *)0xFFFFFFFFFFFFFFFDi64);
    if( (*(_DWORD *)(v9 + 224) & 0x800) != 0 )
    {
      HalpTimerGetInternalData((KDPC *)v9, v11, v12, v8);
      result = (_KINTERRUPT *)(*(__int64(__fastcall **)(__int64, __int64))(v9 + 168))(v13, 209i64);
    }
  }
  v14 = HalpAlwaysOnTimer;
  if( HalpAlwaysOnTimer )
  {
    result = (_KINTERRUPT *)*(unsigned int *)(HalpAlwaysOnTimer + 224);
    if( ((unsigned __int8)result & 1) != 0 )
    {
      result = HalpInterruptSetIdtEntry(
                 0xD3ui64,
                 HalpTimerAlwaysOnClockInterrupt,
                 13,
                 (INT64)v8,
                 (UINT64 *)0xFFFFFFFFFFFFFFFDi64);
      if( (*(_DWORD *)(v14 + 224) & 0x800) != 0 )
      {
        HalpTimerGetInternalData((KDPC *)v14, v15, v16, v17);
        return(_KINTERRUPT *)(*(__int64(__fastcall **)(__int64, __int64))(v14 + 168))(v18, 211i64);
      }
    }
  }
  return result;
}

Referenced by:

No references.