KeInitializeTimerTable

__int64 __fastcall KeInitializeTimerTable(__int64 a1, _BYTE *a2){
  unsigned __int8 v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  __int64 v8; 
  __int64 *v9; 
  __int64 v10; 
  __int64 *PoolWithTag; 
  if( !*(_DWORD *)(a1 + 36) )
  {
    if( KiSerializeTimerExpiration )
    {
      if( KiSerializeTimerExpiration != 1 )
        KiSerializeTimerExpiration = 0;
    }
    else if( (unsigned __int8)off_140C00860[0]() )
    {
      KiSerializeTimerExpiration = 1;
    }
    KiInitializeTimer2Data(a1, a2);
  }
  v3 = *(_BYTE *)(a1 + 208);
  if( !KiPendingTimerBitmaps[2 * v3 + 1] )
  {
    v8 = 0x4000i64;
    if( v3 )
    {
      if( KiSerializeTimerExpiration )
      {
        v9 = 0i64;
      }
      else
      {
        PoolWithTag = (__int64 *)ExAllocatePoolWithTag(NonPagedPoolNxCacheAligned, 0x4000ui64, 0x6254654Bui64);
        v9 = PoolWithTag;
        if( !PoolWithTag )
          return 3221225626i64;
        memset((INT64)PoolWithTag, 0i64);
        v3 = *(_BYTE *)(a1 + 208);
      }
    }
    else
    {
      v9 = KiPendingTimersMask0;
      if( KiSerializeTimerExpiration )
        v8 = 32i64;
    }
    v10 = 2i64 * v3;
    KiPendingTimerBitmaps[v10] = 8 * v8;
    KiPendingTimerBitmaps[v10 + 1] = (__int64)v9;
  }
  *(_DWORD *)(a1 + 12596) = KUSER_SHARED_DATA.TickCount.LowPart;
  KeInitializeDpc((PRKDPC)(a1 + 31792), KiTimerExpirationDpc, 0i64);
  if( !*(_QWORD *)(a1 + 31848) )
    *(_WORD *)(a1 + 31794) = *(_DWORD *)(a1 + 36) + 1280;
  v4 = a1 + 15176;
  v5 = 2i64;
  do
  {
    v6 = 256i64;
    do
    {
      *(_QWORD *)(v4 - 8) = 0i64;
      *(_DWORD *)(v4 + 20) = -1;
      *(_DWORD *)(v4 + 16) = 0;
      *(_QWORD *)(v4 + 8) = v4;
      *(_QWORD *)v4 = v4;
      v4 += 32i64;
      --v6;
    }
    while( v6 );
    --v5;
  }
  while( v5 );
  KiInitializeForceIdle(a1);
  return 0i64;
}

Referenced by:

KeInitSystem
KeStartAllProcessors
KiStartDynamicProcessor