#include <metal_stdlib>

using namespace metal;
struct main_out {
  float x_1_1;
};
struct tint_symbol_1 {
  float x_1_1 [[depth(any)]];
};

void main_1() {
  return;
}

main_out tint_symbol_inner(thread float* const tint_symbol_3) {
  main_1();
  main_out const tint_symbol_2 = {.x_1_1=*(tint_symbol_3)};
  return tint_symbol_2;
}

fragment tint_symbol_1 tint_symbol() {
  thread float tint_symbol_4 = 0.0f;
  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;
}

