struct buf0 {
  one : i32,
}

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var a : i32;
  var i : i32;
  a = 0;
  i = 0;
  loop {
    let x_32 : i32 = i;
    if ((x_32 < 5)) {
    } else {
      break;
    }
    let x_36 : i32 = x_7.one;
    if ((x_36 == 0)) {
      if ((floor(bitcast<f32>(-4194304)) > 0.0)) {
        a = -1;
        break;
      }
    }
    let x_45 : i32 = a;
    a = (x_45 + 1);

    continuing {
      let x_47 : i32 = i;
      i = (x_47 + 1);
    }
  }
  let x_49 : i32 = a;
  if ((x_49 == 5)) {
    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>,
}

@fragment
fn main() -> main_out {
  main_1();
  return main_out(x_GLF_color);
}
