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

var<private> gl_FragCoord : vec4<f32>;

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

var<private> x_GLF_color : vec4<f32>;

fn fx_() -> f32 {
  let x_50 : f32 = gl_FragCoord.y;
  if ((x_50 >= 0.0)) {
    let x_55 : f32 = x_7.injectionSwitch.y;
    return x_55;
  }
  loop {
    if (true) {
    } else {
      break;
    }
    x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
  }
  return 0.0;
}

fn main_1() {
  var x2 : f32;
  var B : f32;
  var k0 : f32;
  x2 = 1.0;
  B = 1.0;
  let x_34 : f32 = fx_();
  x_GLF_color = vec4<f32>(x_34, 0.0, 0.0, 1.0);
  loop {
    let x_40 : f32 = x2;
    if ((x_40 > 2.0)) {
    } else {
      break;
    }
    let x_43 : f32 = fx_();
    let x_44 : f32 = fx_();
    k0 = (x_43 - x_44);
    let x_46 : f32 = k0;
    B = x_46;
    let x_47 : f32 = B;
    x2 = x_47;
  }
  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);
}
