HsaProcessDeviceExceptions

INT64 __fastcall HsaProcessDeviceExceptions(INT64 a1){
  _DWORD *v2; 
  int v3; 
  int v4; 
  __int64 i; 
  UINT64 v6; 
  UINT8 *a6; 
  INT64 a7; 
  INT64 v10; 
  INT64 v11; 
  INT64 result[10]; 
  memset((INT64)result, 0i64);
  v2 = *(_DWORD **)(a1 + 216);
  v3 = 0;
  v4 = 0;
  if( *v2 )
  {
    while( 1 )
    {
      v3 = HalpHsapInitializeReservedDomain(a1, (INT64)&v2[4 * v4 + 2]);
      if( v3 < 0 )
        break;
      v2 = *(_DWORD **)(a1 + 216);
      if( (unsigned int)++v4 >= *v2 )
        goto LABEL_4;
    }
  }
  else
  {
LABEL_4:
    for( i = HalpIommuExceptionList; (__int64 *)i != &HalpIommuExceptionList; i = *(_QWORD *)i )
    {
      if( *(_DWORD *)(i + 16) == *(_DWORD *)(a1 + 160) )
      {
        memset((INT64)result, 0i64);
        v6 = *(unsigned int *)(i + 24);
        LODWORD(a7) = 1;
        LODWORD(a6) = 1;
        result[0] = 1i64;
        HsaUpdateDeviceTableEntry((UINT64 *)a1, v6, 0i64, 1, (INT64)result, a6, a7, v10, v11, 0i64);
      }
    }
  }
  return(unsigned int)v3;
}

Referenced by:

HsaInitializeIommu