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