MiReduceUnusedSubsectionCount
VOID __stdcall MiReduceUnusedSubsectionCount(_MSUBSECTION *MappedSubsection){
__int64 v1;
unsigned int PtesInSubsection;
unsigned __int64 v3;
unsigned __int64 v4;
unsigned __int64 v5;
unsigned int v6;
v1 = *(_QWORD *)(*(&stru_140C4DB30 + 267) + 8i64 * (MappedSubsection->Core.ControlArea->u1.Flags._bf_0 & 0x3FF));
PtesInSubsection = MappedSubsection->Core.PtesInSubsection;
v3 = 8i64 * PtesInSubsection;
if( v3 > 0xFE0 )
{
v6 = (8 * (_WORD)PtesInSubsection) & 0xFFF;
if( v3 >= 0x10000 || v6 > 0xFC0 )
{
v5 = (v3 + 4095) & 0xFFFFFFFFFFFFF000ui64;
goto LABEL_4;
}
v4 = v3 + 15;
}
else
{
v4 = v3 + 31;
}
v5 = v4 & 0xFFFFFFFFFFFFFFF0ui64;
LABEL_4:
_InterlockedExchangeAdd64(&qword_140C4C6D8, -(__int64)v5);
*(_QWORD *)(v1 + 1696) -= v5;
}Referenced by:
MiDeleteCachedSubsection
MiDeleteEmptySubsections
MiRemoveUnusedSubsection