#include <metal_stdlib>

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

void main_1(thread float* const tint_symbol_3) {
  *(tint_symbol_3) = 1.0f;
  return;
}

main_out tint_symbol_inner(thread float* const tint_symbol_4, thread float4* const tint_symbol_5) {
  main_1(tint_symbol_4);
  main_out const tint_symbol_2 = {.gl_Position=*(tint_symbol_5)};
  return tint_symbol_2;
}

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

