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