#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  int arr[1];
};

void main_1(thread tint_array_wrapper* const tint_symbol_1) {
  int const x_4 = (*(tint_symbol_1)).arr[0];
  return;
}

void tint_symbol_inner(uint x_1_param, thread tint_array_wrapper* const tint_symbol_2) {
  (*(tint_symbol_2)).arr[0] = as_type<int>(x_1_param);
  main_1(tint_symbol_2);
}

fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
  thread tint_array_wrapper tint_symbol_3 = {};
  tint_symbol_inner(x_1_param, &(tint_symbol_3));
  return;
}

