PspJobIoRateVolumeEntryReference

INT64 __fastcall PspJobIoRateVolumeEntryReference(INT64 a1, UINT64 a2){
  volatile LONG *v2; 
  INT64 v5; 
  KIRQL v6; 
  INT64 v7; 
  unsigned __int64 v8; 
  bool v9; 
  signed __int64 Count; 
  int v11; 
  int v12; 
  struct EX_RUNDOWN_REF v13; 
  v2 = (volatile LONG *)(a1 + 1456);
  v5 = 0i64;
  v6 = ExAcquireSpinLockShared((PEX_SPIN_LOCK)(a1 + 1456));
  v7 = a1 + 1464;
  v8 = v6;
  v9 = (*(_BYTE *)(a1 + 1472) & 1) == 0;
  Count = *(_QWORD *)(a1 + 1464);
  if( !v9 && Count )
    Count ^= v7;
  v11 = *(_BYTE *)(v7 + 8) & 1;
  if( Count )
  {
    do
    {
      v12 = MiLockTrackerCompare(a2, Count);
      if( v12 >= 0 )
      {
        if( v12 <= 0 )
          break;
        v13.Count = *(_QWORD *)(Count + 8);
      }
      else
      {
        v13.Count = *(_QWORD *)Count;
      }
      if( v11 && v13.Count )
        Count ^= v13.Count;
      else
        Count = v13.Count;
    }
    while( Count );
    if( Count )
    {
      v5 = Count;
      PspIoRateEntryIoControlReference((struct EX_RUNDOWN_REF *)Count);
    }
  }
  ExReleaseSpinLockSharedFromDpcLevel(v2);
  __writecr8(v8);
  return v5;
}

Referenced by:

PsIoRateControlReference