MiReturnPartitionPagesToParent

VOID __stdcall MiReturnPartitionPagesToParent(_MI_PARTITION *FromPartition){
  __int64 v2; 
  KIRQL v3; 
  _QWORD *v4; 
  _QWORD *v5; 
  unsigned __int64 v6; 
  _QWORD *v7; 
  __int64 v8; 
  _QWORD *v9; 
  __int128 v10; 
  __int128 v11; 
  __int128 v12; 
  __int64 v13; 
  v10 = 0i64;
  v11 = 0i64;
  v12 = 0i64;
  v13 = 0i64;
  v2 = **(_QWORD **)(*((_QWORD *)FromPartition + 22) + 56i64);
  MiDrainZeroLookasides(FromPartition, 0i64, 0i64, 0i64);
  *(_QWORD *)&v10 = v2;
  *((_QWORD *)&v10 + 1) = FromPartition;
  v3 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)FromPartition + 50);
  v4 = (_QWORD *)*((_QWORD *)FromPartition + 3);
  v5 = 0i64;
  v6 = v3;
  LOBYTE(v11) = v3;
  while( v4 )
  {
    v5 = v4;
    v4 = (_QWORD *)*v4;
  }
  while( v5 )
  {
    v7 = (_QWORD *)v5[1];
    v8 = (__int64)v5;
    v9 = v5;
    if( v7 )
    {
      do
      {
        v5 = v7;
        v7 = (_QWORD *)*v7;
      }
      while( v7 );
    }
    else
    {
      while( 1 )
      {
        v5 = (_QWORD *)(v5[2] & 0xFFFFFFFFFFFFFFFCui64);
        if( !v5 || (_QWORD *)*v5 == v9 )
          break;
        v9 = v5;
      }
    }
    MiActOnPartitionNodePages(v8, 4u, (__int16 **)&v10);
  }
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)FromPartition + 25);
  __writecr8(v6);
  MiReleasePartitionHugeIoSpace(FromPartition);
}

Referenced by:

MiFreePartitionPhysicalPages