MiDecrementSubsections
UINT64 __stdcall MiDecrementSubsections(_SUBSECTION *FirstSubsection, _SUBSECTION *LastSubsection, UINT64 Flags){
unsigned int v3;
_SUBSECTION *v5;
UINT64 v6;
__int64 v7;
unsigned int v8;
UINT64 v10;
v3 = Flags;
v5 = FirstSubsection;
v6 = 0i64;
v7 = *(_QWORD *)(*(_QWORD *)FirstSubsection + 64i64);
do
{
if( *((_QWORD *)v5 + 1) )
{
v6 += MiDecrementSubsectionViewCount((INT64 *)v5, v3);
if( v7 )
{
if( !*((_QWORD *)v5 + 12) && (*((_BYTE *)v5 + 34) & 1) == 0 )
v6 += MiInsertUnusedSubsection((_MSUBSECTION *)v5, v10);
}
}
if( v5 == LastSubsection )
break;
v5 = (_SUBSECTION *)*((_QWORD *)v5 + 2);
v8 = v3 & 0xFFFFFFF7;
if( v7 )
v8 = v3;
v3 = v8;
}
while( v5 );
return v6;
}Referenced by:
MiAddViewsForSection
MiDecrementSubsection
MiDeletePartialVad
MiDeleteVad
MiFlushRelease
MiReleaseFaultCharges
MiUpControlAreaRefs
MiUpdateActiveSubsection
MmPurgeSection