MiDecrementCloneBlockReference

_MI_PAGE_DELETE_RESULT __stdcall MiDecrementCloneBlockReference(
        ULONG_PTR CloneDescriptor,
        ULONG_PTR CloneBlock,
        ULONG_PTR CurrentProcess){
  INT64 v3; 
  _EPROCESS *v4; 
  _ETHREAD *v5; 
  _MMPTE *v6; 
  _MI_CROSS_PARTITION_CHARGES *v7; 
  _MI_PAGE_DELETE_RESULT v8; 

  v3 = *(_QWORD *)&CloneDescriptor;
  v4 = *(_EPROCESS **)&CurrentProcess;
  v5 = *(_ETHREAD **)(*(_QWORD *)&CurrentProcess + 1248i64);
  v6 = *(_MMPTE **)&CloneBlock;
  if( v5 && v5 != (_ETHREAD *)KeGetCurrentThread() )
    KeBugCheckEx(0x1Au, (PVOID)0x61945, (PVOID)v3, *(PVOID *)&CloneBlock, 0i64);
  v7 = *(_MI_CROSS_PARTITION_CHARGES **)(*(_QWORD *)(v3 + 56) + 24i64);
  if( *(_MI_CROSS_PARTITION_CHARGES **)(*(&stru_140C4DB30 + 267)
                                       + 8i64 * *(unsigned __int16 *)(*(_QWORD *)&CurrentProcess + 1838i64)) != v7
    && _InterlockedExchangeAdd64((volatile signed __int64 *)(*(_QWORD *)&CloneBlock + 8i64), 0xFFFFFFFFFFFFFFFFui64) == 1 )
  {
    MiReturnCrossPartitionCloneCharges(v7);
  }
  if( _InterlockedExchangeAdd64((volatile signed __int64 *)&v6[3], 0xFFFFFFFFFFFFFFFFui64) == 1 )
    v8 = MiDeleteMergedPte((_MI_PARTITION *)v7, v6);
  else
    v8 = PageInserted;
  if( v4->Vm.Instance.VmWorkingSetList[9].NextPteToTrim > (_MMPTE *)*(_QWORD *)(v3 + 96) )
  {
    if( (_InterlockedDecrement64((volatile signed __int64 *)&v6[2]) & 0x7FFFFFFFFFFFFFFi64) == 0 )
    {
      _InterlockedAdd64((volatile signed __int64 *)&v7[238].ChargeFailures, 0xFFFFFFFFFFFFFFFFui64);
      if( v8 != PageStillReferenced )
        MiReturnCommit((_MI_PARTITION *)v7, 1ui64);
    }
    v8 = PageCommitNotCharged;
  }
  if( _InterlockedExchangeAdd64((volatile signed __int64 *)(v3 + 48), 0xFFFFFFFFFFFFFFFFui64) == 1 )
    MiDeleteCloneDescriptor(v4, v3);
  return v8;
}

Referenced by:

MiCopyOnWrite
MiDecommitPages
MiDeletePteList
MiDeletePteRun
MiDeleteVa