#include <metal_stdlib>

using namespace metal;
struct FragIn {
  float a;
  uint mask;
};

struct tint_symbol_2 {
  float a [[user(locn0)]];
  float b [[user(locn1)]];
};

struct tint_symbol_3 {
  float a [[color(0)]];
  uint mask [[sample_mask]];
};

FragIn tint_symbol_inner(FragIn in, float b) {
  if ((in.mask == 0u)) {
    return in;
  }
  FragIn const tint_symbol_4 = {.a=b, .mask=1u};
  return tint_symbol_4;
}

fragment tint_symbol_3 tint_symbol(uint mask [[sample_mask]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  FragIn const tint_symbol_5 = {.a=tint_symbol_1.a, .mask=mask};
  FragIn const inner_result = tint_symbol_inner(tint_symbol_5, tint_symbol_1.b);
  tint_symbol_3 wrapper_result = {};
  wrapper_result.a = inner_result.a;
  wrapper_result.mask = inner_result.mask;
  return wrapper_result;
}

