struct buf0 {
  injectionSwitch : vec2<f32>,
}

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  let x_25 : f32 = x_5.injectionSwitch.y;
  switch(i32(x_25)) {
    case -1: {
      let x_30 : f32 = x_5.injectionSwitch.y;
      let x_32 : f32 = x_5.injectionSwitch.x;
      if ((x_30 > x_32)) {
        discard;
      }
    }
    default: {
    }
  }
  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);
}
