RtlpHpHeapCompact

INT64 __fastcall RtlpHpHeapCompact(INT64 a1){
  int v2; 
  int v3; 
  int v4; 
  unsigned int v5; 
  v2 = *(_DWORD *)(a1 + 220);
  v3 = *(_DWORD *)(a1 + 20) & 0x13000003;
  v4 = 0;
  if( v2 )
    LOBYTE(v4) = v2 == *((_DWORD *)KeGetCurrentThread() + 288);
  v5 = v3 | 1;
  if( !v4 )
    v5 = v3;
  if( RtlpInterlockedFlushSList((PSLIST_HEADER)(a1 + 704)) )
    RtlpHpVsContextFreeList((INT64 *)(a1 + 640), (BYTE *)v5);
  RtlpHpLfhContextCompact((POBJECT_ATTRIBUTES)(a1 + 832), (PFILE_NETWORK_OPEN_INFORMATION)v5);
  RtlpHpSegContextCompact(a1 + 256, v5);
  RtlpHpSegContextCompact(a1 + 448, v5);
  return 0i64;
}

Referenced by:

ExpHpCompactSessionPools
ExpHpCompactionRoutine