struct buf0 {
  one : i32;
}

var<private> x_GLF_color : vec4<f32>;

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

fn main_1() {
  var x_24 : vec4<f32>;
  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
  let x_26 : i32 = x_6.one;
  if ((x_26 == 0)) {
    return;
  }
  x_24 = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 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);
}

fn func_() -> vec4<f32> {
  return vec4<f32>(1.0, 0.0, 0.0, 1.0);
}
