[[block]]
struct buf0 {
  injectionSwitch : vec2<f32>;
};

[[group(0), binding(0)]] var<uniform> x_7 : buf0;

var<private> gl_FragCoord : vec4<f32>;

var<private> x_GLF_color : vec4<f32>;

fn computePoint_() -> vec3<f32> {
  let x_48 : f32 = x_7.injectionSwitch.x;
  let x_50 : f32 = x_7.injectionSwitch.y;
  if ((x_48 > x_50)) {
    discard;
  }
  return vec3<f32>(0.0, 0.0, 0.0);
}

fn main_1() {
  var x_34 : bool = false;
  loop {
    let x_36 : vec3<f32> = computePoint_();
    let x_41 : f32 = gl_FragCoord.x;
    if ((x_41 < 0.0)) {
      x_34 = true;
      break;
    }
    let x_45 : vec3<f32> = computePoint_();
    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
    x_34 = true;
    break;
  }
  return;
}

struct main_out {
  [[location(0)]]
  x_GLF_color_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  return main_out(x_GLF_color);
}
