#include <metal_stdlib>

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

void frag_main_inner(device S& output, S input) {
  float const f = input.f;
  uint const u = input.u;
  float4 const v = input.v;
  output = input;
}

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

