MiCompressTbFlushList
UINT64 *__fastcall MiCompressTbFlushList(INT64 a1){
int v1;
UINT64 *result;
unsigned int v3;
UINT64 v5;
UINT64 v6;
INT64 v7;
__int64 v8;
UINT64 v9;
unsigned int v10;
v1 = 0;
result = (UINT64 *)(a1 + 24);
v3 = 1;
if( *(_DWORD *)(a1 + 12) > 1u )
{
do
{
v5 = *result;
v6 = *(_QWORD *)(a1 + 8i64 * v3 + 24);
v7 = a1 + 8i64 * v3;
v8 = 4096i64 << (9 * ((unsigned __int8)(v6 >> 10) & 3u));
if( ((v6 >> 10) & 3) == ((*result >> 10) & 3)
&& (v9 = *result & 0x3FF, (v6 & 0xFFFFFFFFFFFFF000ui64) - v8 * (v9 + 1) == (v5 & 0xFFFFFFFFFFFFF000ui64))
&& v9 != 1023 )
{
if( v9 + (v6 & 0x3FF) + 1 > 0x3FF )
{
*(_QWORD *)(v7 + 24) = (1023 - v9) * v8
+ (v6 ^ ((unsigned __int16)v6 ^ (unsigned __int16)(v6 - (1023 - v9))) & 0x3FF);
*result++ |= 0x3FFui64;
*result = *(_QWORD *)(v7 + 24);
}
else
{
*result = v5 ^ ((unsigned __int16)v5 ^ (unsigned __int16)(v6 + v5 + 1)) & 0x3FF;
++v1;
}
}
else
{
*++result = v6;
}
v10 = *(_DWORD *)(a1 + 12);
++v3;
}
while( v3 < v10 );
if( v1 )
*(_DWORD *)(a1 + 12) = v10 - v1;
}
return result;
}Referenced by:
MiClearPteAccessed
MiDeleteVa
MiInsertTbFlushEntry
MiMoveDirtyBitsToPfns
MiTerminateWsleCluster
MiZeroPage
MmUnmapViewInSystemCache