var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var c1 : bool;
  var uv : vec2<f32>;
  var i : i32;
  var x_37 : bool;
  var x_37_phi : bool;
  var x_9_phi : i32;
  let x_34 : f32 = uv.y;
  let x_35 : bool = (x_34 < 0.25);
  c1 = x_35;
  i = 0;
  x_37_phi = x_35;
  x_9_phi = 0;
  loop {
    x_37 = x_37_phi;
    let x_9 : i32 = x_9_phi;
    if ((x_9 < 1)) {
    } else {
      break;
    }
    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
    return;

    continuing {
      let x_7 : i32 = i;
      i = (x_7 + 1);
      x_37_phi = false;
      x_9_phi = 0;
    }
  }
  if (x_37) {
    return;
  }
  return;
}

struct main_out {
  @location(0)
  x_GLF_color_1 : vec4<f32>,
}

@stage(fragment)
fn main() -> main_out {
  main_1();
  return main_out(x_GLF_color);
}
