[[block]]
struct buf0 {
  one : f32;
};

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var f : f32;
  var a : i32;
  var b : i32;
  var c : i32;
  var i : i32;
  var v : vec3<f32>;
  let x_42 : f32 = x_6.one;
  f = x_42;
  a = 1;
  b = 0;
  c = 1;
  i = 0;
  loop {
    let x_47 : i32 = i;
    if ((x_47 < 3)) {
    } else {
      break;
    }
    let x_50 : i32 = i;
    let x_51 : f32 = f;
    let x_52 : i32 = i;
    v[x_50] = (x_51 + f32(x_52));

    continuing {
      let x_56 : i32 = i;
      i = (x_56 + 1);
    }
  }
  let x_59 : f32 = x_6.one;
  if ((x_59 == 1.0)) {
    loop {
      x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);

      continuing {
        let x_67 : i32 = c;
        let x_68 : i32 = a;
        let x_69 : i32 = b;
        if (((x_67 & (x_68 | x_69)) == 0)) {
        } else {
          break;
        }
      }
    }
    let x_74 : f32 = x_6.one;
    if ((x_74 == 1.0)) {
      x_GLF_color = vec4<f32>(1.0, 1.0, 1.0, 1.0);
    }
  }
  let x_79 : f32 = v.x;
  let x_83 : f32 = v.y;
  let x_87 : f32 = v.z;
  let x_90 : vec3<f32> = vec3<f32>(select(0.0, 1.0, (x_79 == 1.0)), select(1.0, 0.0, (x_83 == 2.0)), select(1.0, 0.0, (x_87 == 3.0)));
  let x_91 : vec4<f32> = x_GLF_color;
  x_GLF_color = vec4<f32>(x_90.x, x_90.y, x_90.z, x_91.w);
  x_GLF_color.w = 1.0;
  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);
}
