IvmdFindDeviceEntry
_OWORD *__fastcall IvmdFindDeviceEntry(INT64 a1, INT16 a2){
INT64 v2;
_OWORD *result;
INT64 v6;
INT64 *v7;
INT64 v8;
v8 = 0i64;
v2 = a1 + 8;
for( result = *(_OWORD **)(a1 + 8); result != (_OWORD *)v2; result = *(_OWORD **)result )
{
v8 = (INT64)result;
if( *((_WORD *)result + 8) == a2 )
return result;
}
if( (int)ExtEnvAllocateMemory(a1, 0x28ui64, &v8) < 0 )
return 0i64;
v6 = v8;
*(_OWORD *)v8 = 0i64;
*(_OWORD *)(v6 + 16) = 0i64;
*(_QWORD *)(v6 + 32) = 0i64;
*(_WORD *)(v6 + 16) = a2;
*(_DWORD *)(v6 + 20) = 0;
*(_QWORD *)(v6 + 32) = v6 + 24;
*(_QWORD *)(v6 + 24) = v6 + 24;
v7 = *(INT64 **)(v2 + 8);
if( *v7 != v2 )
__fastfail(3u);
*(_QWORD *)(v6 + 8) = v7;
*(_QWORD *)v6 = v2;
*v7 = v6;
result = (_OWORD *)v6;
*(_QWORD *)(v2 + 8) = v6;
++*(_DWORD *)a1;
return result;
}Referenced by:
HsaProcessIvmd