MiDecrementCombinedPte
_MI_PAGE_DELETE_RESULT __stdcall MiDecrementCombinedPte(_MMPTE *ProtoPte){
_MMPTE *v1;
_MMPTE *v2;
__int64 v3;
_MI_CROSS_PARTITION_CHARGES *v4;
_MI_PAGE_DELETE_RESULT v5;
v2 = v1;
v3 = *(_QWORD *)(((unsigned __int64)&v1[-6] & 0xFFFFFFFFFFFFF000ui64) + 0x10);
v4 = *(_MI_CROSS_PARTITION_CHARGES **)v3;
_InterlockedExchangeAdd((volatile signed __int32 *)(v3 + 392), 0xFFFFFFFF);
v5 = PageNonExistent;
if( ProtoPte
&& *(_MI_CROSS_PARTITION_CHARGES **)(*(&stru_140C4DB30 + 267) + 8i64 * HIWORD(ProtoPte[21].u.TimeStamp._bf_0)) != v4
&& _InterlockedExchangeAdd64((volatile signed __int64 *)&v1[1], 0xFFFFFFFFFFFFFFFFui64) == 1 )
{
MiReturnCrossPartitionCombineCharges(v4, 1i64);
}
if( _InterlockedExchangeAdd64((volatile signed __int64 *)&v2[-2], 0xFFFFFFFFFFFFFFFFui64) != 1 )
return 2;
if( v2[-3].u.Long )
v5 = MiDeleteMergedPte((_MI_PARTITION *)v4, v2);
MiFreeCombineBlock((_MI_COMBINE_BLOCK *)&v2[-6]);
return v5;
}Referenced by:
MiCopyOnWrite
MiDecommitPages
MiDeletePteList
MiDeletePteRun
MiDeleteSystemPagableVm
MiDeleteVa
MiDeleteValidSystemPage
MiDereferenceCombineBlock
MiDereferenceCombineCrc
MiProcessCrcList