#include <metal_stdlib>

using namespace metal;
int vec4f() {
  return 0;
}

float vec2f(int i) {
  return float(i);
}

bool vec2i(float f) {
  return bool(f);
}

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

float4 tint_symbol_inner(uint VertexIndex) {
  float4 const tint_symbol_2 = float4(0.0f);
  float4 const tint_symbol_3 = float4(1.0f);
  int const tint_symbol_4 = vec4f();
  float const tint_symbol_5 = vec2f(tint_symbol_4);
  bool const tint_symbol_6 = vec2i(tint_symbol_5);
  return select(tint_symbol_2, tint_symbol_3, tint_symbol_6);
}

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

