type Arr = [[stride(16)]] array<i32, 4>;

[[block]]
struct buf0 {
  x_GLF_uniform_int_values : Arr;
};

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_28 : i32;
  var x_29 : i32;
  var x_28_phi : i32;
  var x_31_phi : i32;
  var x_42_phi : i32;
  let x_24 : i32 = min(1, reverseBits(1));
  let x_26 : i32 = x_5.x_GLF_uniform_int_values[3];
  x_28_phi = x_26;
  x_31_phi = 1;
  loop {
    var x_32 : i32;
    x_28 = x_28_phi;
    let x_31 : i32 = x_31_phi;
    x_42_phi = x_28;
    if ((x_31 <= (x_24 - 1))) {
    } else {
      break;
    }
    x_29 = bitcast<i32>((x_28 + bitcast<i32>(x_31)));
    let x_38 : i32 = x_5.x_GLF_uniform_int_values[0];
    if ((x_38 == 1)) {
      x_42_phi = x_29;
      break;
    }

    continuing {
      x_32 = (x_31 + 1);
      x_28_phi = x_29;
      x_31_phi = x_32;
    }
  }
  let x_42 : i32 = x_42_phi;
  let x_44 : i32 = x_5.x_GLF_uniform_int_values[2];
  if ((x_42 == x_44)) {
    let x_50 : i32 = x_5.x_GLF_uniform_int_values[0];
    let x_51 : f32 = f32(x_50);
    let x_53 : i32 = x_5.x_GLF_uniform_int_values[1];
    let x_54 : f32 = f32(x_53);
    x_GLF_color = vec4<f32>(x_51, x_54, x_54, x_51);
  } else {
    let x_57 : i32 = x_5.x_GLF_uniform_int_values[1];
    let x_58 : f32 = f32(x_57);
    x_GLF_color = vec4<f32>(x_58, x_58, x_58, x_58);
  }
  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);
}
