struct buf0 {
  injectionSwitch : vec2<f32>;
};

var<private> x_GLF_color : vec4<f32>;

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

fn performPartition_() -> i32 {
  var GLF_live0i : i32;
  var i : i32;
  var x_11 : i32;
  var x_10_phi : i32;
  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  x_10_phi = 0;
  loop {
    var x_11_phi : i32;
    let x_10 : i32 = x_10_phi;
    var x_42 : bool;
    let x_41 : f32 = x_6.injectionSwitch.y;
    x_42 = (x_41 < 0.0);
    if (x_42) {
      x_11_phi = x_10;
      continue;
    } else {
      GLF_live0i = 0;
      loop {
        let x_47 : bool = (0 < 1);
        if (x_42) {
          break;
        }
        return 1;
      }
      if (x_42) {
        loop {
          return 1;
        }
        return 0;
      }
      x_11_phi = x_10;
      continue;
    }
    x_11_phi = 0;

    continuing {
      x_11 = x_11_phi;
      x_10_phi = x_11;
      if (false) {
      } else {
        break;
      }
    }
  }
  return x_11;
}

fn main_1() {
  let x_9 : i32 = performPartition_();
  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);
}
