#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 gl_Position;
};
struct tint_symbol_1 {
  float4 gl_Position [[position]];
};

void main_1() {
  return;
}

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

vertex tint_symbol_1 tint_symbol() {
  thread float4 tint_symbol_4 = 0.0f;
  main_out const inner_result = tint_symbol_inner(&(tint_symbol_4));
  tint_symbol_1 wrapper_result = {};
  wrapper_result.gl_Position = inner_result.gl_Position;
  return wrapper_result;
}

