KiTimerExpirationDpc

VOID __stdcall KiTimerExpirationDpc(
        _KDPC *TimerDpc,
        PVOID DeferredContext,
        PVOID SystemArgument1,
        PVOID SystemArgument2){
  int v4; 
  struct _KPRCB *CurrentPrcb; 
  unsigned __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  INT64 result[34]; 
  v4 = (int)SystemArgument1;
  memset((INT64)result, 0i64);
  CurrentPrcb = KeGetCurrentPrcb();
  result[1] = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
  _disable();
  v6 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  if( KiSerializeTimerExpiration )
  {
    if( *((_BYTE *)CurrentPrcb + 33) )
    {
      v7 = 31568i64;
      v8 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart >> 18;
      v9 = 2i64;
      do
      {
        *(_DWORD *)((char *)KiProcessorBlock + v7) = v8;
        v7 += 4i64;
        --v9;
      }
      while( v9 );
    }
  }
  else
  {
    *((_DWORD *)CurrentPrcb + 7892) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart >> 18;
    *((_DWORD *)CurrentPrcb + 7893) = v6 >> 18;
  }
  _enable();
  KiTimerExpiration((__int64)CurrentPrcb, v4, v6, 1, (int *)result);
  *((_QWORD *)CurrentPrcb + 1564) = 0i64;
  if( *((_BYTE *)CurrentPrcb + 33) )
    KiTimer2Expiration((struct KPRCB *)CurrentPrcb, v6, 1, 1, (INT64)result);
}

Referenced by:

No references.