var<private> frag_color : vec4<f32>;

var<private> color_out : vec4<f32>;

fn main_1() {
  var iv : vec2<i32>;
  let x_28 : vec4<f32> = frag_color;
  iv = vec2<i32>((vec2<f32>(x_28.x, x_28.y) * 256.0));
  let x_33 : i32 = iv.y;
  if ((((x_33 / 2) & 64) == 64)) {
    color_out = vec4<f32>(1.0, 0.0, 0.0, 1.0);
  } else {
    color_out = vec4<f32>(0.0, 1.0, 1.0, 1.0);
  }
  return;
}

struct main_out {
  [[location(0)]]
  color_out_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main([[location(1)]] frag_color_param : vec4<f32>) -> main_out {
  frag_color = frag_color_param;
  main_1();
  return main_out(color_out);
}
