RtlpHpLfhOwnerMoveSubsegment
INT64 *__fastcall RtlpHpLfhOwnerMoveSubsegment(INT64 a1, INT64 *a2, INT64 a3){
char v3;
INT64 v5;
_QWORD *v6;
INT64 v7;
_QWORD *v8;
INT64 **v9;
INT64 v11;
INT64 **v12;
INT64 v13;
v3 = a3;
if( *((_BYTE *)a2 + 38) )
{
if( *((_BYTE *)a2 + 38) == 1 )
{
v5 = a1 + 40;
}
else
{
if( *((_BYTE *)a2 + 38) != 2 )
return a2;
v5 = 0i64;
}
v6 = 0i64;
}
else
{
v5 = a1 + 24;
v6 = (_QWORD *)(a1 + 8);
}
if( (_DWORD)a3 )
{
if( (_DWORD)a3 == 1 )
{
v7 = a1 + 40;
}
else
{
if( (_DWORD)a3 != 2 )
return a2;
v7 = 0i64;
}
v8 = 0i64;
}
else
{
v7 = a1 + 24;
v8 = (_QWORD *)(a1 + 8);
}
if( v5 )
{
v11 = *a2;
if( *(INT64 **)(*a2 + 8) != a2 )
goto LABEL_30;
v12 = (INT64 **)a2[1];
if( *v12 != a2 )
goto LABEL_30;
*v12 = (INT64 *)v11;
*(_QWORD *)(v11 + 8) = v12;
if( v6 )
--*v6;
}
*((_BYTE *)a2 + 38) = v3;
if( v7 )
{
v9 = *(INT64 ***)(v7 + 8);
if( *v9 != (INT64 *)v7 )
goto LABEL_30;
*a2 = v7;
a2[1] = (INT64)v9;
*v9 = a2;
*(_QWORD *)(v7 + 8) = a2;
if( v8 )
++*v8;
a2 = 0i64;
}
if( (*(_BYTE *)a1 & 1) == 0 && *(_QWORD *)(a1 + 8) > 8ui64 )
{
a2 = *(INT64 **)v7;
if( *(_QWORD *)(*(_QWORD *)v7 + 8i64) == v7 )
{
v13 = *a2;
if( *(INT64 **)(*a2 + 8) == a2 )
{
*(_QWORD *)v7 = v13;
*(_QWORD *)(v13 + 8) = v7;
--*v8;
*((_BYTE *)a2 + 38) = 2;
goto LABEL_16;
}
}
LABEL_30:
__fastfail(3u);
}
LABEL_16:
if( a2 && *((_BYTE *)a2 + 38) == 2 )
a2[2] = 0i64;
return a2;
}Referenced by:
RtlpHpLfhBucketAddSubsegment
RtlpHpLfhBucketGetSubsegment
RtlpHpLfhSlotAddSubsegment