MiFreeLargePages
VOID __stdcall MiFreeLargePages(_MMPFN *PfnAllocation){
_QWORD *v1;
_MMPFN *v2;
_QWORD *v3;
__int64 v4;
__int64 v5;
_MI_CROSS_PARTITION_CHARGES *v6;
unsigned __int64 LeafPfnBuddy;
INT64 v8;
unsigned int PfnPageSizeIndex;
__int64 v10;
__int64 v11;
v2 = PfnAllocation;
v3 = v1;
v4 = 0i64;
v5 = 0i64;
v6 = *(_MI_CROSS_PARTITION_CHARGES **)(*(&stru_140C4DB30 + 267)
+ 8 * (((unsigned __int64)PfnAllocation->u4._bf_0 >> 39) & 0x3FF));
do
{
LeafPfnBuddy = MiGetLeafPfnBuddy(v2);
PfnPageSizeIndex = MiGetPfnPageSizeIndex(v8);
v4 += MiLargePageSizes[PfnPageSizeIndex];
LODWORD(v11) = MiFreeLargePageMemory((v10 - (__int64)MmGetPfnDb()) / 48, PfnPageSizeIndex, 8ui64);
v5 += v11;
v2 = (_MMPFN *)LeafPfnBuddy;
}
while( LeafPfnBuddy );
if( v4 )
MiFreeLargePageCrossPartitionCharges(v6);
*v3 = v5;
}Referenced by:
MiDecommitRegion
MiDeletePagablePteRange
MiDeleteSubsectionLargePages