struct buf0 {
  one : i32;
};

struct buf1 {
  zero : i32;
};

var<private> x_GLF_color : vec4<f32>;

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

[[group(0), binding(1)]] var<uniform> x_9 : buf1;

fn main_1() {
  var i : i32;
  var v : vec4<f32>;
  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
  i = 0;
  loop {
    let x_38 : i32 = i;
    let x_40 : i32 = x_6.one;
    if ((x_38 < x_40)) {
    } else {
      break;
    }
    loop {
      let x_48 : i32 = x_6.one;
      if ((x_48 == 1)) {
        x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
      }

      continuing {
        if (false) {
        } else {
          break;
        }
      }
    }

    continuing {
      let x_52 : i32 = i;
      i = (x_52 + 1);
    }
  }
  let x_55 : i32 = x_9.zero;
  v.y = f32(x_55);
  let x_59 : f32 = v.y;
  x_GLF_color.y = x_59;
  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);
}
