ExpSaAllocatorOptimizeList
VOID __fastcall ExpSaAllocatorOptimizeList(INT64 a1){
DOUBLE v1;
int v2;
INT64 v4;
_QWORD *v5;
_QWORD *v6;
_QWORD *v7;
_QWORD *v8;
__int64 v9;
_QWORD *v10;
_QWORD *v11;
v2 = *(_DWORD *)(a1 + 64);
if( (v2 & 2) != 0 )
{
v4 = a1 + 8;
v5 = *(_QWORD **)(a1 + 8);
if( v5 != (_QWORD *)v4 )
{
do
{
v6 = (_QWORD *)*v5;
if( *((_DWORD *)v5 + 9) == 512 )
{
v7 = (_QWORD *)*v5;
if( *(_QWORD **)(*v5 + 8i64) != v5 )
goto LABEL_15;
v8 = (_QWORD *)v5[1];
if( (_QWORD *)*v8 != v5 )
goto LABEL_15;
*v8 = v7;
v7[1] = v8;
ExpSaPageGroupDescriptorFree(v5, v1);
}
else if( !*((_DWORD *)v5 + 9) )
{
v9 = *v5;
*((_DWORD *)v5 + 10) = 1;
if( *(_QWORD **)(v9 + 8) != v5
|| (v10 = (_QWORD *)v5[1], (_QWORD *)*v10 != v5)
|| (*v10 = v9, *(_QWORD *)(v9 + 8) = v10, v11 = *(_QWORD **)(a1 + 32), *v11 != a1 + 24) )
{
LABEL_15:
__fastfail(3u);
}
*v5 = a1 + 24;
v5[1] = v11;
*v11 = v5;
*(_QWORD *)(a1 + 32) = v5;
}
v5 = v6;
}
while( v6 != (_QWORD *)v4 );
}
*(_DWORD *)(a1 + 64) = v2 & 0xFFFFFFFD;
}
}Referenced by:
ExpSaAllocatorAllocate
ExpSaAllocatorFree