HalpHsaCreateReservedDevice
INT64 __fastcall HalpHsaCreateReservedDevice(INT64 a1, INT64 a2){
int v2;
__int16 v4;
INT64 v5;
INT64 v6;
unsigned int v7;
_QWORD *i;
__int64 v9;
INT64 v10;
INT64 v11;
INT64 result;
v2 = *(_DWORD *)(a2 + 20);
v4 = a1;
result = 0i64;
if( (int)ExtEnvAllocateMemory(a1, (unsigned int)(24 * v2 + 32), &result) < 0 )
return 0i64;
v5 = result;
memset(result, 0i64);
*(_DWORD *)(v5 + 24) = *(_DWORD *)(a2 + 20);
v7 = 0;
for( i = *(_QWORD **)(a2 + 24); i != (_QWORD *)(a2 + 24); i = (_QWORD *)*i )
{
v9 = v7++;
v6 = 3 * v9;
*(_QWORD *)(v5 + 8 * v6 + 32) = i[2];
*(_QWORD *)(v5 + 8 * v6 + 40) = i[3];
}
if( (int)ExtEnvAllocateMemory(v6, 0x18ui64, (INT64 *)v5) < 0 )
return 0i64;
v10 = *(_QWORD *)v5;
*(_OWORD *)v10 = 0i64;
*(_QWORD *)(v10 + 16) = 0i64;
v11 = v5;
**(_DWORD **)v5 = 1;
*(_WORD *)(*(_QWORD *)v5 + 8i64) = v4;
*(_WORD *)(*(_QWORD *)v5 + 14i64) = 0;
*(_WORD *)(*(_QWORD *)v5 + 12i64) = *(_WORD *)(a2 + 16);
return v11;
}Referenced by:
HsaEnumerateIvmdDevices