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.