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

var<private> gl_FragCoord : vec4<f32>;

var<private> x_GLF_color : vec4<f32>;

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

fn main_1() {
  loop {
    var x_42 : vec4<f32>;
    var x_39 : bool;
    var x_38_phi : bool;
    var x_41_phi : vec4<f32>;
    let x_32 : f32 = gl_FragCoord.x;
    let x_34 : i32 = i32(clamp(x_32, 0.0, 1.0));
    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
    x_38_phi = false;
    x_41_phi = vec4<f32>(0.0, 0.0, 0.0, 0.0);
    loop {
      var x_42_phi : vec4<f32>;
      var x_47_phi : i32;
      var x_39_phi : bool;
      let x_38 : bool = x_38_phi;
      let x_41 : vec4<f32> = x_41_phi;
      x_42_phi = x_41;
      x_47_phi = 0;
      loop {
        var x_45 : vec4<f32>;
        var x_48 : i32;
        x_42 = x_42_phi;
        let x_47 : i32 = x_47_phi;
        let x_50 : f32 = x_6.injectionSwitch.y;
        x_39_phi = x_38;
        if ((x_47 < (x_34 + i32(x_50)))) {
        } else {
          break;
        }
        var x_66 : vec4<f32>;
        var x_70 : vec4<f32>;
        var x_45_phi : vec4<f32>;
        if ((x_34 < 0)) {
          x_39_phi = true;
          break;
        } else {
          if ((x_34 == 1)) {
            let x_64 : f32 = f32(x_34);
            let x_65 : vec2<f32> = vec2<f32>(x_64, x_64);
            x_66 = vec4<f32>(x_65.x, x_42.y, x_42.z, x_65.y);
            x_45_phi = x_66;
          } else {
            let x_68 : f32 = f32((x_34 + 1));
            let x_69 : vec2<f32> = vec2<f32>(x_68, x_68);
            x_70 = vec4<f32>(x_69.x, x_42.y, x_42.z, x_69.y);
            x_45_phi = x_70;
          }
          x_45 = x_45_phi;
        }

        continuing {
          x_48 = (x_47 + 1);
          x_42_phi = x_45;
          x_47_phi = x_48;
        }
      }
      x_39 = x_39_phi;
      if (x_39) {
        break;
      }

      continuing {
        x_38_phi = x_39;
        x_41_phi = x_42;
        if ((x_34 < 0)) {
        } else {
          break;
        }
      }
    }
    if (x_39) {
      break;
    }
    x_GLF_color = x_42;
    break;
  }
  return;
}

struct main_out {
  [[location(0)]]
  x_GLF_color_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  return main_out(x_GLF_color);
}
