HalpLaDeleteBlt
INT64 __fastcall HalpLaDeleteBlt(INT64 a1, UINT64 a2){
__int64 v2;
unsigned int v4;
__int64 v5;
__int64 v7;
__int64 v8;
__int64 *v9;
__int64 v10;
__int64 *v11;
__int64 v12;
v2 = *(_QWORD *)(a1 + 56);
v4 = 0;
while( *(_QWORD *)(v2 + 48) != a2 || *(_QWORD *)(v2 + 24) || *(_QWORD *)(v2 + 32) )
{
v5 = *(_QWORD *)(v2 + 32);
if( v5 && *(_QWORD *)(v5 + 48) <= a2 )
{
v2 = *(_QWORD *)(v2 + 32);
}
else
{
v2 = *(_QWORD *)(v2 + 24);
if( !v2 )
return(unsigned int)-1073741823;
}
}
if( !*(_BYTE *)(v2 + 56) )
return(unsigned int)-1073741823;
*(_QWORD *)(a1 + 32) -= *(_QWORD *)(v2 + 72);
*(_QWORD *)(a1 + 40) -= *(_QWORD *)(v2 + 64);
*(_BYTE *)(v2 + 56) = 0;
*(_QWORD *)(v2 + 72) = 0i64;
while( 1 )
{
v11 = (__int64 *)(v2 + 16);
v12 = *(_QWORD *)(v2 + 16);
if( !v12 )
break;
v7 = *(_QWORD *)(v12 + 24);
if( v2 == v7 )
v7 = *(_QWORD *)(v12 + 32);
if( *(_BYTE *)(v7 + 56) )
break;
v8 = *(_QWORD *)v7;
if( *(_QWORD *)(*(_QWORD *)v7 + 8i64) != v7 || (v9 = *(__int64 **)(v7 + 8), *v9 != v7) )
__fastfail(3u);
*v9 = v8;
*(_QWORD *)(v8 + 8) = v9;
*(_QWORD *)(v7 + 8) = v7;
*(_QWORD *)v7 = v7;
v2 = *v11;
HalpMmAllocCtxFree(v8, *(_QWORD *)(*v11 + 24));
HalpMmAllocCtxFree(v10, *(_QWORD *)(v2 + 32));
*(_QWORD *)(v2 + 24) = 0i64;
*(_QWORD *)(v2 + 32) = 0i64;
*(_BYTE *)(v2 + 56) = 0;
*(_DWORD *)(a1 + 24) -= 2;
}
HalpLaBltAdd((INT64 *)v2, a1);
return v4;
}Referenced by:
HalpDomainLaDelete