[[block]]
struct buf0 {
  one : u32;
};

[[group(0), binding(0)]] var<uniform> x_6 : buf0;

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var a : u32;
  var b : u32;
  var c : u32;
  var d : u32;
  var e : u32;
  var f : u32;
  let x_41 : u32 = x_6.one;
  a = ((77u + x_41) >> 32u);
  let x_45 : u32 = x_6.one;
  b = ((3243u + x_45) >> 33u);
  let x_49 : u32 = x_6.one;
  c = ((23u + x_49) >> 345u);
  let x_53 : u32 = x_6.one;
  d = ((2395u + x_53) << 32u);
  let x_57 : u32 = x_6.one;
  e = ((290485u + x_57) << 33u);
  let x_61 : u32 = x_6.one;
  f = ((44321u + x_61) << 345u);
  let x_64 : u32 = a;
  if ((x_64 != 1u)) {
    a = 1u;
  }
  let x_68 : u32 = b;
  if ((x_68 != 0u)) {
    b = 0u;
  }
  let x_72 : u32 = c;
  if ((x_72 != 1u)) {
    c = 1u;
  }
  let x_76 : u32 = d;
  if ((x_76 != 0u)) {
    d = 0u;
  }
  let x_80 : u32 = e;
  if ((x_80 != 1u)) {
    e = 1u;
  }
  let x_84 : u32 = f;
  if ((x_84 != 0u)) {
    f = 0u;
  }
  let x_88 : u32 = a;
  let x_90 : u32 = b;
  let x_93 : u32 = c;
  let x_96 : u32 = d;
  let x_99 : u32 = e;
  let x_102 : u32 = f;
  if (((((((x_88 == 1u) & (x_90 == 0u)) & (x_93 == 1u)) & (x_96 == 0u)) & (x_99 == 1u)) & (x_102 == 0u))) {
    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>;
};

[[stage(fragment)]]
fn main() -> main_out {
  main_1();
  return main_out(x_GLF_color);
}
