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