static bool tint_discarded = false;
RWByteAddressBuffer non_uniform_global : register(u0, space0);
RWByteAddressBuffer output : register(u1, space0);

void main() {
  if ((asint(non_uniform_global.Load(0u)) < 0)) {
    tint_discarded = true;
  }
  if (!(tint_discarded)) {
    output.Store(0u, asuint(ddx(1.0f)));
  }
  if ((asfloat(output.Load(0u)) < 0.0f)) {
    int i = 0;
    while (true) {
      if ((asfloat(output.Load(0u)) > float(i))) {
        if (!(tint_discarded)) {
          output.Store(0u, asuint(float(i)));
        }
        if (tint_discarded) {
          discard;
        }
        return;
      }
      {
        i = (i + 1);
        if ((i == 5)) { break; }
      }
    }
    if (tint_discarded) {
      discard;
    }
    return;
  }
  if (tint_discarded) {
    discard;
  }
  return;
}
