PspApplyTimerDelayProcess

__int64 __fastcall PspApplyTimerDelayProcess(_EPROCESS *Process, _DWORD *a2){
  _ETHREAD *CurrentThread; 
  unsigned int v3; 
  unsigned __int64 v5; 
  unsigned __int8 v6; 
  unsigned __int64 All; 
  signed __int64 v8; 
  signed __int64 v9; 
  __int64 v10; 
  signed __int64 v11; 
  signed __int64 v12; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v3 = 0;
  --CurrentThread->Tcb.SpecialApcDisable;
  _interlockedbittestandset(&Process->Pcb.ProcessFlags, 4u);
  v5 = 0i64;
  if( a2 )
  {
    v6 = 0;
    v5 = (*a2 / 0x2710u) & 0x3FFFFFFF | ((unsigned __int64)((a2[1] / 0x2710u) & 0x3FFFFFFF) << 30);
  }
  else
  {
    v6 = 1;
  }
  All = Process->ProcessTimerDelay.All;
  if( v6 )
  {
    if( ((All | (All >> 30)) & 0x3FFFFFFF) == 0 )
      goto LABEL_22;
    v5 = All & 0xFFFFFFFFFFFFFFFi64;
  }
  else if( (((unsigned int)v5 ^ (unsigned int)All) & 0x3FFFFFFF) == 0
         && (All & 0xFFFFFFFC0000000i64) == (v5 & 0xFFFFFFFFC0000000ui64) )
  {
    goto LABEL_22;
  }
  v8 = ((unsigned __int64)v6 << 61) | 0x8000000000000000ui64 | v5;
  v10 = All & 0x7FFFFFFFFFFFFFFFi64;
  v9 = _InterlockedCompareExchange64(&Process->ProcessTimerDelay._bf_0, v8, All & 0x7FFFFFFFFFFFFFFFi64);
  if( v10 != v9 )
  {
    do
    {
      v11 = v9;
      if( v9 < 0 )
      {
        if( v6 )
        {
          v8 = v9 & 0xFFFFFFFFFFFFFFFi64 | v8 & 0xF000000000000000ui64;
        }
        else if( (v9 & 0x2000000000000000i64) == 0 )
        {
          goto LABEL_22;
        }
        v8 |= 0x4000000000000000ui64;
      }
      else
      {
        v8 &= ~0x4000000000000000ui64;
        if( v6 )
          v8 ^= (v9 ^ v8) & 0xFFFFFFFFFFFFFFFi64;
      }
      v9 = _InterlockedCompareExchange64(&Process->ProcessTimerDelay._bf_0, v8, v9);
    }
    while( v9 != v11 );
  }
  if( (v8 & 0x4000000000000000i64) == 0 )
  {
    do
    {
      v12 = v8;
      PspSetProcessTimerDelayForKTimers((INT64)Process);
      v3 = PspSetProcessTimerDelayForWin32(Process);
      v8 = _InterlockedCompareExchange64(&Process->ProcessTimerDelay._bf_0, v8 & 0x1FFFFFFFFFFFFFFFi64, v8);
    }
    while( v12 != v8 );
  }
LABEL_22:
  KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
  return v3;
}

Referenced by:

PspTimerDelayProcess
PspTimerDelayWorkerRoutine