#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  int arr[1];
};
struct main_out {
  uint x_1_1;
};
struct tint_symbol_1 {
  uint x_1_1 [[sample_mask]];
};

void main_1() {
  return;
}

main_out tint_symbol_inner(thread tint_array_wrapper* const tint_symbol_3) {
  main_1();
  main_out const tint_symbol_2 = {.x_1_1=as_type<uint>((*(tint_symbol_3)).arr[0])};
  return tint_symbol_2;
}

fragment tint_symbol_1 tint_symbol() {
  thread tint_array_wrapper tint_symbol_4 = {.arr={0}};
  main_out const inner_result = tint_symbol_inner(&(tint_symbol_4));
  tint_symbol_1 wrapper_result = {};
  wrapper_result.x_1_1 = inner_result.x_1_1;
  return wrapper_result;
}

