[[block]]
struct buf0 {
  sequence : vec4<i32>;
};

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var a : vec4<i32>;
  var i : i32;
  var sum : i32;
  a = vec4<i32>(0, 0, 0, 0);
  i = 0;
  loop {
    let x_40 : i32 = i;
    let x_42 : i32 = x_7.sequence.w;
    if ((x_40 < (x_42 + 1))) {
    } else {
      break;
    }
    let x_46 : i32 = i;
    let x_48 : i32 = x_7.sequence.x;
    let x_49 : i32 = i;
    let x_52 : i32 = x_7.sequence[clamp(x_46, x_48, x_49)];
    if ((x_52 == 1)) {
      let x_57 : i32 = i;
      a[x_57] = 5;
    } else {
      let x_59 : i32 = i;
      let x_60 : i32 = i;
      a[x_59] = x_60;
    }

    continuing {
      let x_62 : i32 = i;
      i = (x_62 + 1);
    }
  }
  let x_65 : i32 = a.x;
  let x_67 : i32 = a.y;
  let x_70 : i32 = a.z;
  let x_73 : i32 = a.w;
  sum = (((x_65 + x_67) + x_70) + x_73);
  let x_75 : i32 = sum;
  if ((x_75 == 10)) {
    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  } else {
    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.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);
}
