#include <metal_stdlib>

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

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

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

