ExpHpCompactSessionPools
VOID *__stdcall ExpHpCompactSessionPools(){
UINT64 v0;
VOID *result;
void *i;
UINT64 v3;
__int64 v4;
__int64 v5;
__int64 v6;
unsigned __int64 v7;
__int64 v8;
__int64 v9;
unsigned __int64 v10;
_KAPC_STATE ApcState;
memset(&ApcState, 0, sizeof(ApcState));
result = MiGetNextSession(0i64, v0);
for( i = result; result; i = result )
{
if( MmAttachSession(i, &ApcState) >= 0 )
{
v4 = *((_QWORD *)KeGetCurrentThread()->ApcState.Process->Session + 84);
v5 = *(_QWORD *)(v4 + 14560);
if( v5 )
{
v6 = *(__int16 *)(v5 + 278);
v7 = *(_QWORD *)(v6 + v5 + 264) >> *(_BYTE *)(v5 + 267);
if( v7 <= 8 )
v7 = 8i64;
if( *(_QWORD *)(v6 + v5 + 272) + *(_QWORD *)(v6 + v5 + 280) > v7 )
RtlpHpHeapCompact(*(_QWORD *)(v4 + 14560));
}
v8 = *(_QWORD *)(v4 + 14568);
if( v8 )
{
v9 = *(__int16 *)(v8 + 278);
v10 = *(_QWORD *)(v9 + v8 + 264) >> *(_BYTE *)(v8 + 267);
if( v10 <= 8 )
v10 = 8i64;
if( *(_QWORD *)(v9 + v8 + 272) + *(_QWORD *)(v9 + v8 + 280) > v10 )
RtlpHpHeapCompact(*(_QWORD *)(v4 + 14568));
}
MmDetachSession(i, &ApcState);
}
result = MiGetNextSession(i, v3);
}
return result;
}Referenced by:
ExpHpCompactionRoutine