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