struct struct_base {
  data : i32;
  leftIndex : i32;
  rightIndex : i32;
};

[[block]]
struct buf0 {
  injectionSwitch : vec2<f32>;
};

var<private> struct_array : array<struct_base, 3>;

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var index : i32;
  struct_array = array<struct_base, 3>(struct_base(1, 1, 1), struct_base(1, 1, 1), struct_base(1, 1, 1));
  index = 1;
  struct_array[1].rightIndex = 1;
  let x_39 : i32 = struct_array[1].leftIndex;
  if ((x_39 == 1)) {
    let x_45 : f32 = x_8.injectionSwitch.x;
    let x_48 : i32 = struct_array[i32(x_45)].rightIndex;
    index = x_48;
  } else {
    let x_50 : f32 = x_8.injectionSwitch.y;
    let x_53 : i32 = struct_array[i32(x_50)].leftIndex;
    index = x_53;
  }
  let x_55 : i32 = struct_array[1].leftIndex;
  if ((x_55 == 1)) {
    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);
}
