var<private> x_GLF_color : vec4<f32>;

var<private> gl_FragCoord : vec4<f32>;

fn main_1() {
  var i : i32;
  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  i = 1;
  loop {
    let x_6 : i32 = i;
    if ((x_6 < 2)) {
    } else {
      break;
    }
    let x_37 : f32 = gl_FragCoord.y;
    if ((x_37 < 0.0)) {
      let x_42 : f32 = gl_FragCoord.x;
      if ((x_42 < 0.0)) {
        x_GLF_color = vec4<f32>(226.695999146, 1.0, 1.0, 1.0);
      }
      continue;
    }
    return;

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