MiDeleteEmptyPageTable
INT64 __fastcall MiDeleteEmptyPageTable(_QWORD *a1, UINT64 a2){
UINT64 *v2;
INT64 v5;
INT64 v6;
INT64 v7;
__int64 v8;
UINT64 LogAccess;
unsigned __int64 v11;
v2 = (UINT64 *)a1[21];
LODWORD(LogAccess) = 0;
v5 = MI_READ_PTE_LOCK_FREE(a2);
v6 = v5;
if( (v5 & 1) != 0 && (v5 & 0x80u) == 0i64 )
{
if( (unsigned int)MiIsPageTableDeletable((INT64)a1, a2) )
{
v7 = a1[2];
v8 = (__int64)((a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
if( (unsigned int)MiTerminateWsle((PVOID)a1[3], (_MMSUPPORT_INSTANCE *)v8, 0i64, (UINT64)&LogAccess) )
{
if( (_DWORD)LogAccess == 1 )
MiInsertTbFlushEntry(v7, v8, 1i64, 0i64);
v11 = v6 & 0xFFFFFFFFFFFFFBFEui64 | 0x400;
*(_QWORD *)a2 = v11;
MiFlushTbListEarly(v7, 0);
_bittestandset64((signed __int64 *)v2 + 3, (a2 >> 3) & 0x1FF);
if( !*v2 )
*v2 = a2;
}
}
}
return 0i64;
}Referenced by:
No references.