struct Array {
  values : array<i32, 2>;
};

[[block]]
struct buf0 {
  zero : i32;
};

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_52 : bool = false;
  var x_17 : i32;
  var x_18 : i32;
  var x_16 : array<i32, 2>;
  var param : Array;
  var x_20 : i32;
  var x_21_phi : i32;
  let x_12 : i32 = x_8.zero;
  let x_22 : array<i32, 2> = x_16;
  var x_23_1 : array<i32, 2> = x_22;
  x_23_1[0u] = x_12;
  let x_23 : array<i32, 2> = x_23_1;
  x_16 = x_23;
  let x_54 : array<i32, 2> = x_16;
  param = Array(x_54);
  x_52 = false;
  loop {
    var x_20_phi : i32;
    var x_67_phi : bool;
    loop {
      let x_19 : i32 = param.values[x_12];
      if ((x_19 == 0)) {
        x_52 = true;
        x_17 = 42;
        x_20_phi = 42;
        x_67_phi = true;
        break;
      }
      x_20_phi = 0;
      x_67_phi = false;
      break;
    }
    x_20 = x_20_phi;
    let x_67 : bool = x_67_phi;
    x_21_phi = x_20;
    if (x_67) {
      break;
    }
    x_52 = true;
    x_17 = 42;
    x_21_phi = 42;
    break;
  }
  let x_21 : i32 = x_21_phi;
  x_18 = x_21;
  if ((x_21 == 42)) {
    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);
}

fn func_struct_Array_i1_2_1_(a : ptr<function, Array>) -> i32 {
  var x_74 : bool = false;
  var x_13 : i32;
  var x_14 : i32;
  var x_76_phi : bool;
  var x_15_phi : i32;
  x_76_phi = false;
  loop {
    var x_81 : bool;
    var x_81_phi : bool;
    var x_14_phi : i32;
    var x_91_phi : bool;
    let x_76 : bool = x_76_phi;
    x_81_phi = x_76;
    loop {
      x_81 = x_81_phi;
      let x_10 : i32 = x_8.zero;
      let x_11 : i32 = (*(a)).values[x_10];
      if ((x_11 == 0)) {
        x_74 = true;
        x_13 = 42;
        x_14_phi = 42;
        x_91_phi = true;
        break;
      }
      x_14_phi = 0;
      x_91_phi = x_81;
      break;

      continuing {
        x_81_phi = false;
      }
    }
    x_14 = x_14_phi;
    let x_91 : bool = x_91_phi;
    x_15_phi = x_14;
    if (x_91) {
      break;
    }
    x_74 = true;
    x_13 = 42;
    x_15_phi = 42;
    break;

    continuing {
      x_76_phi = false;
    }
  }
  let x_15 : i32 = x_15_phi;
  return x_15;
}
