#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 position_1;
};
struct tint_symbol_2 {
  float4 position_1 [[position]];
};

void main_1(thread uint* const tint_symbol_5) {
  uint const x_2 = *(tint_symbol_5);
  return;
}

vertex tint_symbol_2 tint_symbol(uint x_4_param [[instance_id]]) {
  thread uint tint_symbol_6 = 0u;
  thread float4 tint_symbol_7 = 0.0f;
  tint_symbol_6 = x_4_param;
  main_1(&(tint_symbol_6));
  main_out const tint_symbol_3 = {.position_1=tint_symbol_7};
  tint_symbol_2 const tint_symbol_4 = {.position_1=tint_symbol_3.position_1};
  return tint_symbol_4;
}

