struct buf0 {
  quarter : f32;
};

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var N : vec4<f32>;
  var I : vec4<f32>;
  var Nref : vec4<f32>;
  var v : vec4<f32>;
  N = vec4<f32>(1.0, 2.0, 3.0, 4.0);
  let x_44 : f32 = x_7.quarter;
  I = vec4<f32>(4.0, 87.589996338, x_44, 92.510002136);
  Nref = vec4<f32>(17.049999237, -6.099999905, 4329.370605469, 2.700000048);
  let x_46 : vec4<f32> = N;
  let x_47 : vec4<f32> = I;
  let x_48 : vec4<f32> = Nref;
  v = faceForward(x_46, x_47, x_48);
  let x_50 : vec4<f32> = v;
  if (all((x_50 == vec4<f32>(-1.0, -2.0, -3.0, -4.0)))) {
    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);
}
