#include <metal_stdlib>

using namespace metal;
struct S {
  /* 0x0000 */ float f;
  /* 0x0004 */ uint u;
  /* 0x0008 */ int8_t tint_pad_0[120];
  /* 0x0080 */ packed_float4 v;
  /* 0x0090 */ int8_t tint_pad_1[112];
};
struct tint_symbol_2 {
  float f [[user(locn0)]];
  uint u [[user(locn1)]];
};

fragment void frag_main(float4 tint_symbol_1 [[position]], tint_symbol_2 tint_symbol [[stage_in]], device S& output [[buffer(0)]]) {
  S const input = {.f=tint_symbol.f, .u=tint_symbol.u, .v=tint_symbol_1};
  float const f = input.f;
  uint const u = input.u;
  float4 const v = input.v;
  output = input;
  return;
}

