MiDecrementCombinedPte
INT64 __fastcall MiDecrementCombinedPte(INT64 a1, _MMPTE *a2){
__int64 v3;
volatile INT64 *v4;
unsigned int v5;
v3 = *(_QWORD *)((((unsigned __int64)a2 - 48) & 0xFFFFFFFFFFFFF000ui64) + 0x10);
v4 = *(volatile INT64 **)v3;
_InterlockedExchangeAdd((volatile signed __int32 *)(v3 + 392), 0xFFFFFFFF);
v5 = 0;
if( a1
&& *(volatile INT64 **)(qword_140C4E388 + 8i64 * *(unsigned __int16 *)(a1 + 174)) != v4
&& _InterlockedExchangeAdd64((volatile signed __int64 *)a2 + 1, 0xFFFFFFFFFFFFFFFFui64) == 1 )
{
MiReturnCrossPartitionCombineCharges(v4, 1i64);
}
if( _InterlockedExchangeAdd64((volatile signed __int64 *)a2 - 2, 0xFFFFFFFFFFFFFFFFui64) != 1 )
return 2i64;
if( *((_QWORD *)a2 - 3) )
v5 = MiDeleteMergedPte((_MI_PARTITION *)v4, a2);
MiFreeCombineBlock((INT64)a2 - 48);
return v5;
}Referenced by:
MiCopyOnWrite
MiDecommitPages
MiDeletePteList
MiDeletePteRun
MiDeleteSystemPagableVm
MiDeleteVa
MiDeleteValidSystemPage
MiDereferenceCombineBlock
MiDereferenceCombineCrc
MiProcessCrcList