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

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

var<private> x_GLF_color : vec4<f32>;

fn makeFrame_() -> f32 {
  var x_60 : f32;
  var x_63_phi : f32;
  loop {
    var x_41 : bool;
    var x_44 : f32;
    var x_45 : f32;
    var x_42 : bool;
    var x_41_phi : bool;
    var x_8_phi : i32;
    var x_44_phi : f32;
    var x_60_phi : f32;
    var x_61_phi : bool;
    x_41_phi = false;
    x_8_phi = 0;
    x_44_phi = 0.0;
    loop {
      var x_50 : f32;
      var x_9 : i32;
      var x_52 : bool;
      var x_7 : i32;
      var x_50_phi : f32;
      var x_9_phi : i32;
      var x_52_phi : bool;
      var x_45_phi : f32;
      var x_42_phi : bool;
      x_41 = x_41_phi;
      let x_8 : i32 = x_8_phi;
      x_44 = x_44_phi;
      x_60_phi = x_44;
      x_61_phi = x_41;
      if ((x_8 < 1)) {
      } else {
        break;
      }
      x_50_phi = x_44;
      x_9_phi = x_8;
      x_52_phi = x_41;
      loop {
        x_50 = x_50_phi;
        x_9 = x_9_phi;
        x_52 = x_52_phi;
        let x_54 : f32 = x_6.injectionSwitch.y;
        x_45_phi = x_50;
        x_42_phi = x_52;
        if ((1 < i32(x_54))) {
        } else {
          break;
        }
        x_45_phi = 1.0;
        x_42_phi = true;
        break;

        continuing {
          x_50_phi = 0.0;
          x_9_phi = 0;
          x_52_phi = false;
        }
      }
      x_45 = x_45_phi;
      x_42 = x_42_phi;
      x_60_phi = x_45;
      x_61_phi = x_42;
      if (x_42) {
        break;
      }

      continuing {
        x_7 = bitcast<i32>((x_9 + bitcast<i32>(1)));
        x_41_phi = x_42;
        x_8_phi = x_7;
        x_44_phi = x_45;
      }
    }
    x_60 = x_60_phi;
    let x_61 : bool = x_61_phi;
    x_63_phi = x_60;
    if (x_61) {
      break;
    }
    x_63_phi = 1.0;
    break;
  }
  let x_63 : f32 = x_63_phi;
  return x_63;
}

fn main_1() {
  let x_34 : f32 = makeFrame_();
  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  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);
}
