ExpHpCompactionRoutine
INT64 __fastcall ExpHpCompactionRoutine(INT64 a1, UINT64 a2){
unsigned int v2;
int v3;
__int64 v4;
INT64 v5;
INT64 v6;
INT64 v7;
INT64 v8;
INT64 v9;
_QWORD *v10;
_QWORD *v11;
unsigned __int64 v12;
__int64 v13;
INT64 result;
__int64 v15;
__int64 v16;
_QWORD *p_Next;
unsigned __int64 v18;
PSLIST_ENTRY v19;
void *v20;
PVOID v21;
__int128 v22[5];
int v23;
unsigned int a1a;
INT64 v25;
v23 = a1;
v2 = 0;
v3 = a1;
v4 = (int)a1;
v22[0] = (__int128)_mm_load_si128((const __m128i *)&_xmm);
v5 = *((int *)v22 + 2 * (int)a1);
v6 = *((int *)v22 + 2 * v4 + 1);
a1a = v5;
v7 = v6;
if( dword_140C57DD0 )
{
v25 = v5;
do
{
v8 = v5;
if( v5 <= v7 )
{
do
{
v9 = qword_140C57E00[1048 * v2 + v8];
v10 = *(_QWORD **)(v9 + 40);
if( v10 )
{
v11 = 0i64;
v12 = ~*v10;
while( v12 )
{
_BitScanForward64(&v18, v12);
v12 ^= 1i64 << v18;
v19 = RtlpInterlockedFlushSList((PSLIST_HEADER)&v10[8 * (unsigned int)v18 + 8]);
if( v11 )
{
while( 1 )
{
p_Next = &v19->Next;
if( !v19 )
break;
v19 = v19->Next;
*p_Next = v11;
v11 = p_Next;
}
}
else
{
v11 = &v19->Next;
}
}
while( 1 )
{
v20 = v11;
if( !v11 )
break;
v11 = (_QWORD *)*v11;
LODWORD(v21) = ExGetHeapFromVA(v20);
RtlpHpFreeHeap(v21, v20, 0i64);
}
v7 = v6;
}
v13 = *(__int16 *)(v9 + 278);
a2 = *(_QWORD *)(v13 + v9 + 264) >> *(_BYTE *)(v9 + 267);
if( a2 <= 8 )
a2 = 8i64;
if( *(_QWORD *)(v13 + v9 + 272) + *(_QWORD *)(v13 + v9 + 280) > a2 )
RtlpHpHeapCompact(v9);
++v8;
}
while( v8 <= v7 );
v5 = v25;
}
++v2;
}
while( v2 < dword_140C57DD0 );
v3 = v23;
v5 = a1a;
}
result = 3i64;
v15 = (int)v5;
if( (int)v6 >= 3 )
LODWORD(v6) = 3;
while( v15 <= (int)v6 )
{
v16 = qword_140CDAE00[v15];
result = *(__int16 *)(v16 + 278);
LOBYTE(v5) = *(_BYTE *)(v16 + 267);
a2 = *(_QWORD *)(result + v16 + 264) >> v5;
if( a2 <= 8 )
a2 = 8i64;
if( *(_QWORD *)(result + v16 + 272) + *(_QWORD *)(result + v16 + 280) > a2 )
result = RtlpHpHeapCompact(qword_140CDAE00[v15]);
++v15;
}
if( !v3 )
result = ExpHpCompactSessionPools(v5, a2);
if( v3 == 1 )
ExpHpGCScheduledNonPaged = 0;
else
ExpHpGCScheduledPaged = 0;
return result;
}Referenced by:
No references.