PspQueryQuotaLimits

NTSTATUS __stdcall PspQueryQuotaLimits(
        PVOID ProcessHandle,
        PVOID ProcessInformation,
        UINT64 ProcessInformationLength,
        UINT64 *ReturnLength,
        INT8 PreviousMode){
  UINT64 v5; 
  NTSTATUS result; 
  _QWORD *v9; 
  NTSTATUS v10; 
  int v11; 
  int v12; 
  UINT HardEnforcementFlags; 
  PVOID Object; 
  __int64 Src[2]; 
  UINT64 MinimumWorkingSetSize; 
  UINT64 MaximumWorkingSetSize[2]; 
  int v18; 
  int v19; 
  __int64 v20; 
  int v21; 
  UINT64 PrivateWorkingSetSize; 
  UINT64 WorkingSetSize; 
  UINT64 PeakWorkingSetSize; 
  struct _KAPC_STATE ApcState; 
  KPROCESSOR_MODE AccessMode; 
  v5 = (unsigned int)ReturnLength;
  memset((INT64)Src, 0i64);
  Object = 0i64;
  HardEnforcementFlags = 0;
  memset(&ApcState, 0, sizeof(ApcState));
  if( (_DWORD)v5 != 48 && (_DWORD)v5 != 88 )
    return -1073741820;
  result = ObReferenceObjectByHandleWithTag(
             ProcessHandle,
             0x1000u,
             (POBJECT_TYPE)PsProcessType,
             AccessMode,
             0x79517350u,
             &Object,
             0i64);
  if( result >= 0 )
  {
    v9 = (_QWORD *)*((_QWORD *)Object + 173);
    Src[0] = v9[24];
    Src[1] = v9[8];
    MaximumWorkingSetSize[1] = v9[40];
    v20 = v9[56];
    v18 = -1;
    v19 = -1;
    KeStackAttachProcess((PRKPROCESS)Object, &ApcState);
    v10 = MmQueryWorkingSetInformation(
            &PeakWorkingSetSize,
            &WorkingSetSize,
            &PrivateWorkingSetSize,
            &MinimumWorkingSetSize,
            MaximumWorkingSetSize,
            &HardEnforcementFlags);
    KeUnstackDetachProcess(&ApcState);
    v11 = 2 - ((HardEnforcementFlags & 4) != 0);
    if( (HardEnforcementFlags & 1) != 0 )
      v12 = v11 | 4;
    else
      v12 = v11 | 8;
    v21 = v12;
    ObfDereferenceObjectWithTag(Object, 0x79517350ui64);
    if( v10 >= 0 )
    {
      memmove((UINT8 *)ProcessInformationLength, (UINT8 *)Src, v5);
      if( PreviousMode )
        *(_DWORD *)PreviousMode = v5;
    }
    return v10;
  }
  return result;
}

Referenced by:

NtQueryInformationProcess