KiInitializeTimer2
CHAR __stdcall KiInitializeTimer2(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
__int64 v5;
char v6;
char *i;
CHAR result;
v5 = 0i64;
*(_QWORD *)a1 = 0i64;
*(_BYTE *)a1 = ((int)a4 >= 0) + 24;
*(_QWORD *)(a1 + 16) = a1 + 8;
*(_QWORD *)(a1 + 8) = a1 + 8;
*(_QWORD *)(a1 + 96) = KiWaitNever ^ __ROR8__(a1 ^ _byteswap_uint64(a2 ^ KiWaitAlways), KiWaitNever);
*(_QWORD *)(a1 + 104) = KiWaitNever ^ __ROR8__(a1 ^ _byteswap_uint64(a3 ^ KiWaitAlways), KiWaitNever);
*(_QWORD *)(a1 + 112) = KiWaitNever ^ __ROR8__(a1 ^ _byteswap_uint64(KiWaitAlways), KiWaitNever);
*(_QWORD *)(a1 + 120) = KiWaitNever ^ __ROR8__(a1 ^ _byteswap_uint64(KiWaitAlways), KiWaitNever);
v6 = a4 & 0xE;
if( (a4 & 0xE) == 0
&& !KeGetPcr()->Prcb.NestingLevel
&& PsTimerResolutionActive((INT64)KeGetCurrentThread()->ApcState.Process) )
{
v6 = 16;
}
*(_BYTE *)(a1 + 129) = v6;
for( i = KiTimer2Combinations; *i != v6; i += 3 )
{
v5 = (unsigned int)(v5 + 1);
if( (unsigned int)v5 >= 6 )
__fastfail(5u);
}
*(_BYTE *)(a1 + 130) = KiTimer2Combinations[3 * v5 + 1];
result = KiTimer2Combinations[3 * v5 + 2];
*(_BYTE *)(a1 + 131) = result;
return result;
}Referenced by:
ExAllocateTimerInternal2
ExInitializeTimeRefresh
HalpBlkWdInitialize
KeInitializeIRTimer
KeInitializeTimer2
MiStoreEvictThread
PopPowerAggregatorInitialize
PopSleepstudyInitialize