MiFreeUnmappedPageTables

VOID __stdcall MiFreeUnmappedPageTables(_MMPFN *PfnAllocation, _MI_DELETE_VA_INFO *DeleteInfo){
  __int64 v2; 
  _MMPFN *v4; 
  _MMPFN *bf_0; 
  unsigned __int64 v6; 

  v2 = 0i64;
  v4 = PfnAllocation;
  if( PfnAllocation )
  {
    do
    {
      bf_0 = (_MMPFN *)v4->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0;
      v6 = MiLockPageInline(v4);
      *((_BYTE *)&v4->u3 + 2) = *(_BYTE *)(&v4->u3 + 1) & 0xF8 | 6;
      if( MiDecrementShareCount(v4) == PageStillReferenced )
        ++*(_QWORD *)&DeleteInfo->ReducedCommitClonePages;
      _InterlockedAnd64(&v4->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
      __writecr8(v6);
      ++v2;
      v4 = bf_0;
    }
    while( bf_0 );
  }
  *(_QWORD *)&DeleteInfo[1].ReducedCommitClonePages += v2;
  *(_QWORD *)&DeleteInfo->ResidentPages += v2;
}

Referenced by:

MiDeleteSystemPageTableTail