var<private> x_GLF_color : vec4<f32>;

var<private> gl_FragCoord : vec4<f32>;

fn main_1() {
  var x_30 : f32;
  var foo : u32;
  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  let x_32 : f32 = gl_FragCoord.x;
  if ((x_32 > -1.0)) {
    let x_38 : f32 = x_GLF_color.x;
    x_30 = x_38;
  } else {
    let x_6 : u32 = foo;
    let x_7 : u32 = (x_6 - bitcast<u32>(1));
    foo = x_7;
    x_30 = f32((178493u + x_7));
  }
  let x_40 : f32 = x_30;
  x_GLF_color.x = x_40;
  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);
}
