RtlpHpHeapCompact

NTSTATUS __stdcall RtlpHpHeapCompact(INT64 a1){
  int v2; 
  int v3; 
  int v4; 
  unsigned int v5; 
  _QWORD *v6; 

  v2 = *(_DWORD *)(a1 + 220);
  v3 = *(_DWORD *)(a1 + 20) & 0x13000003;
  v4 = 0;
  if( v2 )
    LOBYTE(v4) = v2 == KeGetCurrentThread()[1].CurrentRunTime;
  v5 = v3 | 1;
  if( !v4 )
    v5 = v3;
  RtlpInterlockedFlushSList();
  if( v6 )
    RtlpHpVsContextFreeList(a1 + 640, v5, v6);
  RtlpHpLfhContextCompact((POBJECT_ATTRIBUTES)(a1 + 832), (PFILE_NETWORK_OPEN_INFORMATION)v5);
  RtlpHpSegContextCompact(a1 + 256, v5);
  RtlpHpSegContextCompact(a1 + 448, v5);
  return 0;
}

Referenced by:

ExpHpCompactSessionPools
ExpHpCompactionRoutine