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

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var k : i32;
  var GLF_dead0j : i32;
  var donor_replacementGLF_dead0stack : array<i32, 10>;
  var donor_replacementGLF_dead0top : i32;
  var x_54 : i32;
  var matrix_b : vec4<f32>;
  var b : i32;
  k = 0;
  loop {
    let x_12 : i32 = k;
    if ((x_12 < 4)) {
    } else {
      break;
    }
    let x_62 : f32 = x_6.injectionSwitch.y;
    if ((0.0 > x_62)) {
      GLF_dead0j = 1;
      loop {
        let x_13 : i32 = donor_replacementGLF_dead0stack[0];
        if ((1 <= x_13)) {
        } else {
          break;
        }
      }
      let x_14 : i32 = donor_replacementGLF_dead0top;
      let x_15 : i32 = donor_replacementGLF_dead0top;
      if (((x_14 >= 0) && (x_15 < 9))) {
        let x_16 : i32 = donor_replacementGLF_dead0top;
        let x_17 : i32 = (x_16 + 1);
        donor_replacementGLF_dead0top = x_17;
        x_54 = x_17;
      } else {
        x_54 = 0;
      }
      let x_18 : i32 = x_54;
      donor_replacementGLF_dead0stack[x_18] = 1;
    }
    matrix_b = vec4<f32>(0.0, 0.0, 0.0, 0.0);
    b = 3;
    loop {
      let x_19 : i32 = b;
      if ((x_19 >= 0)) {
      } else {
        break;
      }
      let x_20 : i32 = b;
      let x_21 : i32 = b;
      let x_87 : f32 = matrix_b[x_21];
      matrix_b[x_20] = (x_87 - 1.0);

      continuing {
        let x_22 : i32 = b;
        b = (x_22 - 1);
      }
    }

    continuing {
      let x_24 : i32 = k;
      k = (x_24 + 1);
    }
  }
  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);
}
