struct buf0 {
  one : i32;
};

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_31 : bool;
  var x_32_phi : bool;
  let x_26 : bool = (sign(cosh(709.0)) == 1.0);
  x_32_phi = x_26;
  if (!(x_26)) {
    let x_6 : i32 = x_5.one;
    x_31 = (x_6 == 1);
    x_32_phi = x_31;
  }
  let x_32 : bool = x_32_phi;
  if (x_32) {
    x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  } else {
    x_GLF_color = vec4<f32>(1.0, 1.0, 1.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);
}
