HalpIommuCreateDeviceInternal
__int64 __fastcall HalpIommuCreateDeviceInternal(__int64 a1, int a2, _QWORD *a3, INT64 *a4, _BYTE *a5){
int v9;
INT64 i;
__int64(__fastcall *v11)(_QWORD, __int64, _QWORD, _QWORD *, _QWORD);
__int64(__fastcall *v12)(_QWORD, __int64, __int64, _QWORD *, _QWORD);
int v13;
*a3 = 0i64;
*a4 = 0i64;
v9 = -1073741275;
if( a5 )
*a5 = 0;
for( i = qword_140C49B50; (INT64 *)i != &qword_140C49B50; i = *(_QWORD *)i )
{
v11 = *(__int64(__fastcall **)(_QWORD, __int64, _QWORD, _QWORD *, _QWORD))(i + 88);
if( v11 )
{
v9 = v11(*(_QWORD *)(i + 16), a1, 0i64, a3, 0i64);
if( v9 >= 0 )
{
LABEL_14:
v13 = a2 & *(_DWORD *)(i + 456);
*a4 = i;
if( v13 != a2 )
{
v9 = -1073741811;
(*(void(__fastcall **)(_QWORD, _QWORD, _QWORD))(i + 96))(*(_QWORD *)(i + 16), *a3, 0i64);
*a3 = 0i64;
*a4 = 0i64;
if( a5 )
*a5 |= 1u;
}
return(unsigned int)v9;
}
}
}
for( i = qword_140C49B50; (INT64 *)i != &qword_140C49B50; i = *(_QWORD *)i )
{
v12 = *(__int64(__fastcall **)(_QWORD, __int64, __int64, _QWORD *, _QWORD))(i + 88);
if( v12 )
{
v9 = v12(*(_QWORD *)(i + 16), a1, 1i64, a3, 0i64);
if( v9 >= 0 )
goto LABEL_14;
}
}
return(unsigned int)v9;
}Referenced by:
HalpIommuCreateDevice