MiChargeResident

INT64 __fastcall MiChargeResident(ULONG_PTR *a1, unsigned __int64 a2, __int64 a3){
  struct _KPRCB *CurrentPrcb; 
  unsigned __int64 v4; 
  bool v5; 
  unsigned __int32 v6; 
  if( a1 == &MiSystemPartition )
  {
    CurrentPrcb = KeGetCurrentPrcb();
    v4 = *((unsigned int *)CurrentPrcb + 8391);
    while( a2 <= v4 && (_DWORD)v4 != -1 )
    {
      v6 = _InterlockedCompareExchange((volatile signed __int32 *)CurrentPrcb + 8391, v4 - a2, v4);
      v5 = (_DWORD)v4 == v6;
      v4 = v6;
      if( v5 )
        return 1i64;
    }
  }
  return MiChargePartitionResidentAvailable((INT64)a1, a2, a3);
}

Referenced by:

MiAcquireNonPagedResources
MiAllocatePerSessionProtos
MiChargeForWriteInProgressPage
MiChargeLargeProtoSubsection
MiConstructLoaderEntry
MiCreateLargePfnList
MiCreatePagingFileMap
MiGetCrossPartitionCloneCharges
MiGetSubsectionCharges
MiInitializeSystemWorkingSetList
MiInsertVadCharges
MiObtainFaultCharges
MiObtainSystemCharges
MiSessionCreateInternal
MmAdjustWorkingSetSizeEx
MmChargeResources
MmCreateKernelStack
MmCreateProcessAddressSpace
MmGrowKernelStackEx
MmObtainChargesToLockPagedPool
MmSetHardFaultBehavior
MmStoreChargeResidentAvailableForRead
SMKM_STORE::SmStWorker