#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  uint arr[1];
};
struct tint_array_wrapper_1 {
  uint arr[2];
};
struct tint_array_wrapper_2 {
  int arr[1];
};
struct tint_array_wrapper_3 {
  int arr[2];
};

void main_1(thread tint_array_wrapper* const tint_symbol_2) {
  uint const x_3 = (*(tint_symbol_2)).arr[0];
  return;
}

fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
  thread tint_array_wrapper tint_symbol_3 = {};
  tint_symbol_3.arr[0] = x_1_param;
  main_1(&(tint_symbol_3));
  return;
}

