#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)]] [[flat]];
};

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

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

