#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)]];
  half loc4 [[attribute(4)]];
  half3 loc5 [[attribute(5)]];
};

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

float4 tint_symbol_inner(int loc0, uint loc1, float loc2, float4 loc3, half loc4, half3 loc5) {
  int const i = loc0;
  uint const u = loc1;
  float const f = loc2;
  float4 const v = loc3;
  half const x = loc4;
  half3 const y = loc5;
  return float4(0.0f);
}

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_1.loc4, tint_symbol_1.loc5);
  tint_symbol_3 wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

