HalpDmaAddReservedRangesToDomain
INT64 __fastcall HalpDmaAddReservedRangesToDomain(INT64 a1, INT64 rdx0){
int ReservedRanges;
__int64 v4;
__int64 v5;
signed __int64 v6;
signed __int64 v7;
unsigned __int64 v8;
unsigned int a2;
__int64 a3;
a3 = 0i64;
a2 = 0;
if( rdx0 )
{
ReservedRanges = HalpIommuGetReservedRanges(rdx0, &a2, &a3);
if( ReservedRanges >= 0 )
{
if( a2 )
*(_BYTE *)(a1 + 33) = 1;
v4 = 0i64;
if( a2 )
{
v5 = a3;
do
{
if( !*(_BYTE *)(v5 + 24 * v4 + 16) )
{
v6 = *(_QWORD *)(v5 + 24 * v4);
v7 = *(_QWORD *)(v5 + 24 * v4 + 8);
if( v6 >= v7 )
return(unsigned int)-1073741503;
v8 = v7 - v6 + 1;
if( v8 >= 0xFFFFFFFF )
return(unsigned int)-1073741503;
ReservedRanges = HalpLaReserveRange(*(_QWORD *)(a1 + 48), *(_QWORD *)(v5 + 24 * v4), v8);
if( ReservedRanges < 0 )
return(unsigned int)ReservedRanges;
ReservedRanges = HalpIommuDomainMapLogicalRange(
*(_QWORD *)(a1 + 40),
3i64,
*(_QWORD *)(v5 + 24 * v4),
v8,
v6);
}
v4 = (unsigned int)(v4 + 1);
}
while( (unsigned int)v4 < a2 );
}
}
}
else
{
return 0;
}
return(unsigned int)ReservedRanges;
}Referenced by:
No references.