HalpIommuAllocateRemappingTableEntry
INT64 __fastcall HalpIommuAllocateRemappingTableEntry(
UINT64 a1,
UINT64 a2,
UINT64 a3,
UINT64 a4,
INT64 a5,
INT64 a6,
CHAR a7){
unsigned int v7;
__int128 *v8;
unsigned int v9;
unsigned int v10;
unsigned int v11;
__int128 *v12;
INT64 *v13;
unsigned int v14;
INT64 *v15;
__int64(__fastcall *v16)(INT64, _QWORD, _QWORD, _QWORD, int, int, int, _DWORD, __int128 *);
int v18;
int v19;
int v20;
__int128 v21;
__int64 v22;
v7 = a1;
v8 = 0i64;
v9 = a4;
v10 = a3;
v11 = a2;
v21 = 0i64;
v22 = 0i64;
if( a6 )
{
HalpIommuConvertPciBusMasterDescriptorToDeviceId(a6, a7, (INT64)&v21);
v12 = &v21;
if( !(_DWORD)v21 )
v12 = 0i64;
v8 = v12;
}
v13 = (INT64 *)HalpIommuList;
v14 = 0;
while( v13 != &HalpIommuList )
{
v15 = v13;
v13 = (INT64 *)*v13;
if( (v15[57] & 0x40) != 0 )
{
v16 = (__int64(__fastcall *)(INT64, _QWORD, _QWORD, _QWORD, int, int, int, _DWORD, __int128 *))v15[19];
if( v16 )
{
LOBYTE(v20) = (v9 >> 5) & 7;
LOBYTE(v19) = v9 & 0x1F;
LOWORD(v18) = (unsigned __int8)v10;
v14 = v16(v15[2], v7, v11, v10 >> 8, v18, v19, v20, a5, v8);
if( v14 != -1073741594 )
break;
}
}
}
return v14;
}Referenced by:
HalpIrtAllocateIndex