#include <metal_stdlib>

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

float4 tint_symbol_inner(uint vertex_index, uint instance_index) {
  uint const foo = (vertex_index + instance_index);
  return float4(0.0f);
}

vertex tint_symbol_1 tint_symbol(uint vertex_index [[vertex_id]], uint instance_index [[instance_id]]) {
  float4 const inner_result = tint_symbol_inner(vertex_index, instance_index);
  tint_symbol_1 wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

