#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  /* 0x0000 */ int4 arr[4];
};
struct Inner {
  /* 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[8];
  /* 0x0080 */ tint_array_wrapper k;
};
struct tint_array_wrapper_1 {
  /* 0x0000 */ Inner arr[8];
};
struct S {
  /* 0x0000 */ tint_array_wrapper_1 arr;
};

void tint_symbol_inner(constant S& s, uint idx) {
  int3 const a = s.arr.arr[idx].a;
  int const b = s.arr.arr[idx].b;
  uint3 const c = s.arr.arr[idx].c;
  uint const d = s.arr.arr[idx].d;
  float3 const e = s.arr.arr[idx].e;
  float const f = s.arr.arr[idx].f;
  int2 const g = s.arr.arr[idx].g;
  int2 const h = s.arr.arr[idx].h;
  float2x3 const i = s.arr.arr[idx].i;
}

kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], constant S& s [[buffer(0)]]) {
  tint_symbol_inner(s, idx);
  return;
}

