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