var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_21_phi : bool;
  x_21_phi = false;
  loop {
    var x_25 : bool;
    var x_25_phi : bool;
    var x_30_phi : bool;
    let x_21 : bool = x_21_phi;
    x_25_phi = x_21;
    loop {
      x_25 = x_25_phi;
      x_30_phi = x_25;
      if ((1 < 0)) {
      } else {
        break;
      }
      x_30_phi = true;
      break;

      continuing {
        x_25_phi = false;
      }
    }
    let x_30 : bool = x_30_phi;
    if (x_30) {
      break;
    }
    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
    break;

    continuing {
      x_21_phi = false;
    }
  }
  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);
}
