HalpIommuProcessReservationsInternal
NTSTATUS __stdcall HalpIommuProcessReservationsInternal(INT64 a1, INT64 a2){
__int64(__fastcall *v2)(_QWORD, UINT64 *, _QWORD);
NTSTATUS result;
PSTR MemoryInternal;
UINT64 v7;
v2 = *(__int64(__fastcall **)(_QWORD, UINT64 *, _QWORD))(a1 + 328);
LODWORD(v7) = 0;
result = v2(*(_QWORD *)(a1 + 16), &v7, 0i64);
if( result == -1073741789 )
{
MemoryInternal = HalpMmAllocateMemoryInternal((unsigned int)(8 * v7 + 8), MmCached);
*(_QWORD *)(a1 + 528) = MemoryInternal;
if( MemoryInternal )
{
*(_DWORD *)MemoryInternal = v7;
result = (*(__int64(__fastcall **)(_QWORD, UINT64 *, __int64))(a1 + 328))(
*(_QWORD *)(a1 + 16),
&v7,
*(_QWORD *)(a1 + 528) + 8i64);
if( result >= 0 )
{
result = HalpIommuProcessMemoryErrata((unsigned int)v7, *(_QWORD *)(a1 + 528) + 8i64, a2);
if( result >= 0 )
return HalpIommuDetermineReservedPciRid(*(UINT64 **)(a1 + 528));
}
}
else
{
return -1073741670;
}
}
return result;
}Referenced by:
HalpIommuProcessReservations