HalpLapDeleteSubtree
INT64 **__fastcall HalpLapDeleteSubtree(INT64 **a1, INT64 *a2){
INT64 **v3;
INT64 *v4;
INT64 *v5;
INT64 *v6;
INT64 *v7;
__int64 v8;
bool v9;
*((_BYTE *)a2 + 56) = 0;
v3 = a1;
v4 = a2;
while( 1 )
{
while( 1 )
{
v5 = (INT64 *)v4[3];
if( !v5 )
{
v5 = (INT64 *)v4[4];
if( !v5 )
break;
}
v4 = v5;
}
if( v4 == a2 )
break;
if( !*((_BYTE *)v4 + 56) )
{
v6 = (INT64 *)*v4;
if( *(INT64 **)(*v4 + 8) != v4 || (a1 = (INT64 **)v4[1], *a1 != v4) )
__fastfail(3u);
*a1 = v6;
v6[1] = (INT64)a1;
v4[1] = (INT64)v4;
*v4 = (INT64)v4;
}
v7 = (INT64 *)v4[2];
v8 = v7[3];
v9 = v8 == (_QWORD)v4;
v4 = v7;
if( v9 )
{
HalpMmAllocCtxFree((__int64)a1, v8);
--*((_DWORD *)v3 + 6);
v4[3] = 0i64;
}
else
{
HalpMmAllocCtxFree((__int64)a1, v7[4]);
--*((_DWORD *)v3 + 6);
v4[4] = 0i64;
}
}
return HalpLaBltAdd(a2, (INT64)v3);
}Referenced by:
HalpLaAllocateBlt
HalpLaFreeState
HalpLaInitializeState