PspReturnResourceQuota

VOID __fastcall PspReturnResourceQuota(
        _PS_RESOURCE_TYPE ResourceType,
        _PSP_QUOTA_ENTRY *QuotaEntry,
        UINT64 ReturnQuota,
        UINT64 RemoveEntry){
  int v6; 
  int *v7; 
  __int64 v9; 
  _PSP_QUOTA_ENTRY **v10; 
  UINT8 OldIrql; 

  OldIrql = 0;
  v6 = RemoveEntry;
  v7 = &PspQuotaExpansionDescriptors[14 * ResourceType];
  PspLockQuotaExpansion(v7, &OldIrql);
  if( ReturnQuota )
    (*((void(__fastcall **)(_QWORD, UINT64))v7 + 4))((unsigned int)ResourceType, ReturnQuota);
  if( v6 )
  {
    v9 = *(_QWORD *)&QuotaEntry->ExpansionLink[8];
    if( *(_PSP_QUOTA_ENTRY **)(v9 + 8) != (_PSP_QUOTA_ENTRY *)&QuotaEntry->ExpansionLink[8]
      || (v10 = *(_PSP_QUOTA_ENTRY ***)&QuotaEntry->ExpansionLink[16],
          *v10 != (_PSP_QUOTA_ENTRY *)&QuotaEntry->ExpansionLink[8]) )
    {
      __fastfail(3u);
    }
    *v10 = (_PSP_QUOTA_ENTRY *)v9;
    *(_QWORD *)(v9 + 8) = v10;
  }
  PspUnlockQuotaExpansion(v7, OldIrql);
}

Referenced by:

ObpFreeObject
PspDereferenceQuotaBlock
PspReturnQuota