MiDeleteVaTail
INT64 __fastcall MiDeleteVaTail(INT64 *a1){
unsigned __int64 *v1;
unsigned __int64 v3;
CHAR *v4;
__int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
v1 = (unsigned __int64 *)a1[21];
MiTerminateWsleCluster((INT64)(v1 + 15));
MiFlushTbList(a1[2]);
v3 = *v1;
if( *v1 )
{
v6 = a1[3];
if( (*(_BYTE *)(v6 + 184) & 7) != 0
&& v3 >= (unsigned __int64)MmGetPml4eBase()
&& v3 <= (unsigned __int64)MmGetPml4eLimit() )
{
v7 = v1[1];
v8 = (_QWORD)MmGetPteBase() << 25;
v9 = 3i64;
do
{
v3 = (__int64)((v3 << 25) - v8) >> 16;
v7 = ((v7 << 25) - v8) >> 16;
--v9;
}
while( v9 );
MiReplicatePteChange((MMPTE *)v3, (MMPTE *)v7);
v6 = a1[3];
}
else
{
v3 = 0i64;
v7 = 0i64;
}
MiDeletePteRun(v6, (__int64)v1);
if( v3 )
MiReplicatePteChange((MMPTE *)v3, (MMPTE *)v7);
*v1 = 0i64;
}
v4 = (CHAR *)v1[11];
if( v4 )
{
MiDecayPfnFullyInitialized(v4);
v1[11] = 0i64;
}
return 0i64;
}Referenced by:
MiDeletePagablePteRange