#include <metal_stdlib>

using namespace metal;
struct VertexInputs {
  int loc0;
  uint loc1;
  float loc2;
  float4 loc3;
};

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(VertexInputs inputs) {
  int const i = inputs.loc0;
  uint const u = inputs.loc1;
  float const f = inputs.loc2;
  float4 const v = inputs.loc3;
  return float4(0.0f);
}

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

