MiTrimThisWsle
__int64 __fastcall MiTrimThisWsle(__int64 a1, unsigned __int64 a2, __int64 a3, int *a4, char a5, _DWORD *a6){
_MMPTE *PteBase;
_QWORD *v11;
int v12;
UNICODE_STRING *v13;
unsigned int v14;
char v15;
unsigned int v16;
char v17;
int v18;
int v20;
__int64 v21;
__int64 v22;
PteBase = MmGetPteBase();
v11 = (_QWORD *)((char *)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64));
if( a6 )
*a6 = 0;
v12 = *a4;
if( a2 < (unsigned __int64)PteBase || a2 > (unsigned __int64)MmGetPteLimit() )
{
v13 = (UNICODE_STRING *)(HIBYTE(*v11) & 0xFi64);
v14 = HIBYTE(*v11) & 0xF;
}
else
{
v14 = (*((_DWORD *)MmGetPfnDb()
+ 12
* (((unsigned __int64)MI_READ_PTE_LOCK_FREE((INT64)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64)) >> 12) & 0xFFFFFFFFFi64)) >> 1) & 7;
}
v15 = a5;
if( (v12 & 0x60) != 0 )
{
LOBYTE(v18) = MI_PFN_IS_PROTO((UNICODE_STRING *)a3, v13, v14, (PWCHAR)a4);
if( !v18
|| ((v12 & 0x20) == 0
|| (*(_DWORD *)(a3 + 16) & 0x400i64) != 0
|| ((*(_QWORD *)(a3 + 40) & 0x1000000000i64) != 0 || *(__int64 *)(a3 + 8) <= 0)
&& !MiLocateCloneAddress(a1 - 1664, *(_QWORD *)(a3 + 8) | 0x8000000000000000ui64))
&& ((v12 & 0x40) == 0 || (*(_DWORD *)(a3 + 16) & 0x400i64) == 0) )
{
goto LABEL_26;
}
return 1i64;
}
v16 = v12 & 0xF;
if( !v16 )
return 1i64;
v17 = *(_BYTE *)(a3 + 35);
if( (v17 & 8) == 0 && (v17 & 7u) < 5 )
return 1i64;
if( v14 < v16 )
goto LABEL_26;
if( (a5 & 1) == 0 )
return 1i64;
if( *((_QWORD *)a4 + 30) && a2 <= 0x7FFFFFFEFFFFi64 && a6 )
{
*a6 = 1;
return 0i64;
}
LABEL_26:
v20 = 2;
if( (v15 & 1) == 0 || a2 <= 0x7FFFFFFEFFFFi64 && (*(_BYTE *)(a1 + 184) & 7) == 0 && *(_QWORD *)(a1 + 624) && a6 )
{
if( (*(_BYTE *)(a1 + 184) & 7) != 0 && *(_WORD *)(a3 + 32) != 1
|| v14 >= 6
|| (unsigned int)MiGetPfnPriority(a3) >= 5 )
{
return 0i64;
}
v21 = 1i64;
}
else
{
v21 = 2i64;
if( v14 && v14 < 7 )
{
v20 = 0;
v21 = 0i64;
}
if( v20 == 2 )
return 0i64;
}
v22 = 10 * v21;
if( !LOBYTE(a4[2 * v22 + 80]) )
{
LOBYTE(a4[2 * v22 + 80]) = 1;
*(_QWORD *)&a4[2 * v22 + 78] = a2;
}
_bittestandset(&a4[2 * v22 + 62], ((unsigned int)v11 >> 3) & 0x1FF);
return 0i64;
}Referenced by:
MiTrimPte
MiTrimPteWorker