#include <metal_stdlib>

using namespace metal;
struct VertexInputs {
  uint vertex_index;
  uint instance_index;
};

struct tint_symbol_1 {
  float4 value [[position]];
};

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

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

