#include <metal_stdlib>

using namespace metal;

template<typename T, int N, int M>
inline vec<T, M> operator*(matrix<T, N, M> lhs, packed_vec<T, N> rhs) {
  return lhs * vec<T, N>(rhs);
}

template<typename T, int N, int M>
inline vec<T, N> operator*(packed_vec<T, M> lhs, matrix<T, N, M> rhs) {
  return vec<T, M>(lhs) * rhs;
}

struct S {
  /* 0x0000 */ float3x2 tint_symbol;
  /* 0x0018 */ int8_t tint_pad[8];
  /* 0x0020 */ packed_float3 vector;
  /* 0x002c */ int8_t tint_pad_1[4];
};

fragment void tint_symbol_1(const constant S* tint_symbol_2 [[buffer(0)]]) {
  float2 const x = ((*(tint_symbol_2)).tint_symbol * (*(tint_symbol_2)).vector);
  return;
}

