struct strided_arr {
  @size(16)
  el : i32,
}

type Arr = array<strided_arr, 3u>;

struct buf0 {
  x_GLF_uniform_int_values : Arr,
}

@group(0) @binding(0) var<uniform> x_7 : buf0;

var<private> x_GLF_color : vec4<f32>;

fn func_() -> i32 {
  var i : i32;
  let x_53 : i32 = x_7.x_GLF_uniform_int_values[0].el;
  i = x_53;
  loop {
    let x_58 : i32 = i;
    i = (x_58 + 1);
    if (true) {
      if (true) {
        let x_65 : i32 = x_7.x_GLF_uniform_int_values[2].el;
        return x_65;
      }
    }

    continuing {
      let x_66 : i32 = i;
      let x_68 : i32 = x_7.x_GLF_uniform_int_values[1].el;
      if ((x_66 < x_68)) {
      } else {
        break;
      }
    }
  }
  let x_71 : i32 = x_7.x_GLF_uniform_int_values[0].el;
  return x_71;
}

fn main_1() {
  let x_27 : i32 = func_();
  let x_29 : i32 = x_7.x_GLF_uniform_int_values[2].el;
  if ((x_27 == x_29)) {
    let x_35 : i32 = x_7.x_GLF_uniform_int_values[2].el;
    let x_38 : i32 = x_7.x_GLF_uniform_int_values[0].el;
    let x_41 : i32 = x_7.x_GLF_uniform_int_values[0].el;
    let x_44 : i32 = x_7.x_GLF_uniform_int_values[2].el;
    x_GLF_color = vec4<f32>(f32(x_35), f32(x_38), f32(x_41), f32(x_44));
  } else {
    let x_48 : i32 = x_7.x_GLF_uniform_int_values[0].el;
    let x_49 : f32 = f32(x_48);
    x_GLF_color = vec4<f32>(x_49, x_49, x_49, x_49);
  }
  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);
}
