#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 Inner {
  /* 0x0000 */ int x;
};
struct tint_padded_array_element {
  /* 0x0000 */ Inner el;
  /* 0x0004 */ int8_t tint_pad[12];
};
struct tint_array_wrapper {
  /* 0x0000 */ tint_padded_array_element arr[4];
};
struct S {
  /* 0x0000 */ packed_int3 a;
  /* 0x000c */ int b;
  /* 0x0010 */ packed_uint3 c;
  /* 0x001c */ uint d;
  /* 0x0020 */ packed_float3 e;
  /* 0x002c */ float f;
  /* 0x0030 */ int2 g;
  /* 0x0038 */ int2 h;
  /* 0x0040 */ float2x3 i;
  /* 0x0060 */ float3x2 j;
  /* 0x0078 */ int8_t tint_pad_1[8];
  /* 0x0080 */ Inner k;
  /* 0x0084 */ int8_t tint_pad_2[12];
  /* 0x0090 */ tint_array_wrapper l;
};

kernel void tint_symbol(const constant S* tint_symbol_1 [[buffer(0)]]) {
  int3 const a = (*(tint_symbol_1)).a;
  int const b = (*(tint_symbol_1)).b;
  uint3 const c = (*(tint_symbol_1)).c;
  uint const d = (*(tint_symbol_1)).d;
  float3 const e = (*(tint_symbol_1)).e;
  float const f = (*(tint_symbol_1)).f;
  int2 const g = (*(tint_symbol_1)).g;
  int2 const h = (*(tint_symbol_1)).h;
  float2x3 const i = (*(tint_symbol_1)).i;
  float3x2 const j = (*(tint_symbol_1)).j;
  Inner const k = (*(tint_symbol_1)).k;
  tint_array_wrapper const l = (*(tint_symbol_1)).l;
  return;
}

