PspSetProcessTimerDelayForWin32

INT64 __fastcall PspSetProcessTimerDelayForWin32(__int64 a1){
  INT64 *v1; 
  unsigned __int64 v4; 
  __int64 v5; 
  int v6; 
  int v7; 
  UINT64 v8; 
  v1 = (INT64 *)(a1 + 1080);
  ExAcquirePushLockSharedEx(a1 + 1080, 0i64);
  if( *(_QWORD *)(a1 + 1288) )
  {
    if( _InterlockedCompareExchange64(v1, 0i64, 17i64) != 17 )
      ExfReleasePushLockShared(v1);
    KeAbPostRelease(v1);
    v4 = *(_QWORD *)(a1 + 2416);
    LODWORD(v8) = MmGetSessionIdEx(a1);
    v5 = a1;
    v6 = v4 & 0x3FFFFFFF;
    v7 = (v4 >> 30) & 0x3FFFFFFF;
    return PsInvokeWin32Callout(41i64, &v5, 1i64, &v8);
  }
  else
  {
    if( _InterlockedCompareExchange64(v1, 0i64, 17i64) != 17 )
      ExfReleasePushLockShared(v1);
    KeAbPostRelease(v1);
    return 0i64;
  }
}

Referenced by:

PspApplyTimerDelayProcess