KiAdjustTimerDueTimes

void __fastcall KiAdjustTimerDueTimes(__int64 a1, __int64 a2, __int64 a3){
  __int64 v3; 
  unsigned int i; 
  unsigned __int64 v6; 
  unsigned int v7; 
  __int64 v8; 
  volatile signed __int64 *v9; 
  _QWORD *v10; 
  __int64 *v11; 
  _KTIMER *v12; 
  __int64 v13; 
  __int64 **v14; 
  __int64 v15; 
  unsigned __int64 v16; 
  unsigned __int64 v17; 
  __int64 v18; 
  UINT64 v19; 
  _KDPC *v20; 
  UINT8 inserted; 
  _QWORD *v22; 
  char v23; 
  __int64 **v24; 
  __int64 ***v25; 
  UINT64 SpinCount; 
  volatile signed __int64 *v27; 
  __int64 *v28; 
  __int64 **v29; 
  __int128 v30; 
  __int64 v31; 
  UINT8 Late; 
  v29 = &v28;
  v3 = a2;
  Late = 0;
  v28 = (__int64 *)&v28;
  v27 = 0i64;
  for( i = 0; i < 2; ++i )
  {
    v6 = (unsigned __int64)i << 13;
    v7 = 0;
    v8 = v6 + v3 + 512;
    do
    {
      LODWORD(SpinCount) = 0;
      while( _interlockedbittestandset64((volatile signed __int32 *)v8, 0i64) )
      {
        do
          KeYieldProcessorEx(&SpinCount);
        while( *(_QWORD *)v8 );
      }
      v9 = (volatile signed __int64 *)v8;
      v10 = *(_QWORD **)(v8 + 8);
      v27 = (volatile signed __int64 *)v8;
      if( v10 != (_QWORD *)(v8 + 8) )
      {
        do
        {
          v22 = v10 - 4;
          v23 = *((_BYTE *)v10 - 31);
          v10 = (_QWORD *)*v10;
          if( (v23 & 1) != *(_BYTE *)a3 && (!*(_BYTE *)a3 || (v23 & 2) == 0) )
          {
            KiRemoveEntryTimer((_KTIMER_TABLE *)a2, (_KTIMER *)v22, v7);
            v24 = v29;
            v25 = (__int64 ***)(v22 + 4);
            if( *v29 != (__int64 *)&v28 )
              goto LABEL_38;
            v22[5] = v29;
            *v25 = &v28;
            *v24 = (__int64 *)v25;
            v29 = (__int64 **)(v22 + 4);
          }
        }
        while( v10 != (_QWORD *)(v8 + 8) );
        v9 = v27;
      }
      _InterlockedAnd64(v9, 0i64);
      ++v7;
      v8 += 32i64;
    }
    while( v7 < 0x100 );
    v3 = a2;
  }
  v11 = v28;
  if( v28 != (__int64 *)&v28 )
  {
    while( 1 )
    {
      v12 = (_KTIMER *)(v11 - 4);
      v13 = *v11;
      v14 = (__int64 **)v11[1];
      if( *(__int64 **)(*v11 + 8) != v11 || *v14 != v11 )
        break;
      *v14 = (__int64 *)v13;
      *(_QWORD *)(v13 + 8) = v14;
      v15 = *(_QWORD *)(a3 + 24);
      v16 = *((_QWORD *)v12 + 3);
      v17 = v16 - v15;
      if( v15 >= 0 )
      {
        if( v17 > v16 )
          v17 = 0i64;
      }
      else if( v17 < v16 )
      {
        v17 = -1i64;
      }
      v18 = __ROL8__(KiWaitNever ^ *((_QWORD *)v12 + 6), KiWaitNever);
      v19 = (unsigned __int8)(v17 >> 18);
      v30 = 0i64;
      v20 = (_KDPC *)(KiWaitAlways ^ _byteswap_uint64((unsigned __int64)v12 ^ v18));
      *(_DWORD *)v12 |= 0x80u;
      *((_QWORD *)v12 + 3) = v17;
      v31 = 0i64;
      LODWORD(v30) = *(_DWORD *)v12;
      BYTE2(v30) = v17 >> 18;
      *(_DWORD *)v12 = v30;
      if( *(_BYTE *)(a3 + 32) )
        inserted = KiInsertTimerTable((_KPRCB *)a1, v12, v20, v19, &Late);
      else
        inserted = KiInsertTimerTable((_KPRCB *)a1, v12, v20, v19, 0i64);
      if( inserted )
        _InterlockedAnd((volatile signed __int32 *)v12, 0xFFFFFF7F);
      else
        KiTimerWaitTest((_KPRCB *)a1, v12, 0i64);
      v11 = v28;
      if( v28 == (__int64 *)&v28 )
        goto LABEL_27;
    }
LABEL_38:
    __fastfail(3u);
  }
LABEL_27:
  if( *(_BYTE *)(a1 + 33) || *(_BYTE *)(a3 + 32) )
    KiAdjustTimer2DueTimes(a3);
}

Referenced by:

KiAdjustTimersAfterDripsExit
KiSetSystemTimeDpc