MiDeleteVaTail

NTSTATUS __stdcall MiDeleteVaTail(INT64 *a1){
  _MMPTE *v1; 
  _EPROCESS *v3; 
  _MMPFN *v4; 
  unsigned __int64 Long; 
  _MMPFN *v6; 
  INT64 v8; 
  __int64 bf_0; 
  __int64 v10; 
  __int64 v11; 
  _MI_DELETE_VA_INFO *v12; 

  v1 = (_MMPTE *)a1[21];
  MiTerminateWsleCluster((INT64)&v1[15]);
  MiFlushTbList((_MI_TB_FLUSH_LIST *)a1[2]);
  Long = v1->u.Long;
  if( v1->u.Long )
  {
    v8 = a1[3];
    if( (*(_BYTE *)(v8 + 184) & 7) != 0
      && Long >= (unsigned __int64)MmGetPml4eBase()
      && Long <= (unsigned __int64)MmGetPml4eLimit() )
    {
      bf_0 = v1[1].u.Hard._bf_0;
      v10 = (_QWORD)MmGetPteBase() << 25;
      v11 = 3i64;
      do
      {
        Long = (__int64)((Long << 25) - v10) >> 16;
        bf_0 = ((bf_0 << 25) - v10) >> 16;
        --v11;
      }
      while( v11 );
      MiReplicatePteChange((_MMPTE *)Long, (_MMPTE *)bf_0);
      v8 = a1[3];
    }
    else
    {
      Long = 0i64;
      bf_0 = 0i64;
    }
    MiDeletePteRun((_MMPTE *)v8, v1, v3, v4, v12);
    if( Long )
      MiReplicatePteChange((_MMPTE *)Long, (_MMPTE *)bf_0);
    v1->u.Long = 0i64;
  }
  v6 = (_MMPFN *)v1[11].u.Long;
  if( v6 )
  {
    MiDecayPfnFullyInitialized(v6);
    v1[11].u.Long = 0i64;
  }
  return 0;
}

Referenced by:

MiDeletePagablePteRange