#include <metal_stdlib>

using namespace metal;
struct tint_symbol_2 {
  int loc0 [[attribute(0)]];
  uint loc1 [[attribute(1)]];
  float loc2 [[attribute(2)]];
  float4 loc3 [[attribute(3)]];
};
struct tint_symbol_3 {
  float4 value [[position]];
};

float4 tint_symbol_inner(int loc0, uint loc1, float loc2, float4 loc3) {
  int const i = loc0;
  uint const u = loc1;
  float const f = loc2;
  float4 const v = loc3;
  return float4();
}

vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  float4 const inner_result = tint_symbol_inner(tint_symbol_1.loc0, tint_symbol_1.loc1, tint_symbol_1.loc2, tint_symbol_1.loc3);
  tint_symbol_3 wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

