HsaUpdateRemappingDestination

UINT64 __fastcall HsaUpdateRemappingDestination(UINT64 *a1, LONG64 rdx0, _DWORD *a3, INT64 a5, INT64 a4){
  unsigned int v5; 
  char v6; 
  __int64 v8; 
  __int64 v9; 
  unsigned int v10; 
  __m128i *v11; 
  unsigned __int64 v12; 
  unsigned int v13; 
  unsigned int updated; 
  signed __int64 v15; 
  signed __int64 v16; 
  __int64 v17; 
  __int128 v18; 
  unsigned __int8 v19; 
  UINT64 a5a; 
  unsigned int i; 
  v5 = 0;
  v6 = rdx0;
  for( i = 0; v5 < HsaAllocatedDeviceApertures; i = v5 )
  {
    HsaGetDeviceAperture(v5 << 9);
    v9 = v8;
    if( !v5 || *(_QWORD *)(v8 + 16) )
    {
      v10 = 0;
      if( *((_DWORD *)a1 + 45) )
      {
        do
        {
          v11 = (__m128i *)(*(_QWORD *)(v9 + 16) + 16i64 * v10);
          v12 = v11->m128i_i64[0];
          if( (v11->m128i_i64[0] & 1) != 0 && (!v6 || _bittest(*(const signed __int32 **)(v9 + 40), v10)) )
          {
            LODWORD(a5a) = a4;
            v13 = (v11->m128i_u8[15] << 24) | (v12 >> 8) & 0xFFFFFF;
            updated = IvtUpdateExtendedDestination(v13, (v12 & 0x40) != 0, a3, a5, a5a);
            if( v13 != updated )
            {
              v15 = ((unsigned __int64)updated << 32) ^ (_mm_srli_si128(*v11, 8).m128i_u64[0] ^ ((unsigned __int64)updated << 32)) & 0xFFFFFFFFFFFFFFi64;
              rdx0 = v11->m128i_i64[1];
              v16 = v11->m128i_i64[0] ^ (v11->m128i_i64[0] ^ ((unsigned __int64)updated << 8)) & 0xFFFFFF00;
              v17 = v11->m128i_i64[0];
              do
              {
                *(_QWORD *)&v18 = v17;
                *((_QWORD *)&v18 + 1) = rdx0;
                v19 = _InterlockedCompareExchange128(v11->m128i_i64, v15, v16, (signed __int64 *)&v18);
                v17 = v18;
                rdx0 = *((_QWORD *)&v18 + 1);
              }
              while( !v19 );
            }
          }
          ++v10;
        }
        while( v10 < *((_DWORD *)a1 + 45) );
        v5 = i;
      }
    }
    ++v5;
  }
  return HsaInvalidateRemappingTableEntries(a1, rdx0, 0i64);
}

Referenced by:

No references.