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

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

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_68 : bool = false;
  var x_29 : i32;
  var x_30 : i32;
  var x_31 : i32;
  var globalNumbers : array<i32, 10>;
  var x_17 : i32;
  var acc : i32;
  var i_1 : i32;
  var localNumbers : array<i32, 2>;
  var param : i32;
  var x_24 : i32;
  var x_24_phi : i32;
  var x_23_phi : i32;
  acc = 0;
  i_1 = 0;
  x_24_phi = 0;
  x_23_phi = 0;
  loop {
    var x_33 : i32;
    var x_92 : i32;
    var x_76_phi : bool;
    var x_34_phi : i32;
    var x_25_phi : i32;
    x_24 = x_24_phi;
    let x_23 : i32 = x_23_phi;
    if ((x_23 < 4)) {
    } else {
      break;
    }
    x_68 = false;
    x_76_phi = false;
    loop {
      var x_81 : bool;
      var x_32 : i32;
      var x_81_phi : bool;
      var x_32_phi : i32;
      var x_33_phi : i32;
      var x_90_phi : bool;
      let x_76 : bool = x_76_phi;
      x_30 = 0;
      x_81_phi = x_76;
      x_32_phi = 0;
      loop {
        x_81 = x_81_phi;
        x_32 = x_32_phi;
        let x_86 : f32 = x_8.one;
        x_33_phi = 0;
        x_90_phi = x_81;
        if ((x_32 < i32(x_86))) {
        } else {
          break;
        }
        x_68 = true;
        x_29 = x_32;
        x_33_phi = x_32;
        x_90_phi = true;
        break;

        continuing {
          x_81_phi = false;
          x_32_phi = 0;
        }
      }
      x_33 = x_33_phi;
      let x_90 : bool = x_90_phi;
      x_34_phi = x_33;
      if (x_90) {
        break;
      }
      x_92 = 0;
      x_68 = true;
      x_29 = x_92;
      x_34_phi = x_92;
      break;

      continuing {
        x_76_phi = false;
      }
    }
    let x_34 : i32 = x_34_phi;
    x_31 = x_34;
    let x_93 : i32 = x_31;
    let x_21 : array<i32, 2> = localNumbers;
    var x_22_1 : array<i32, 2> = x_21;
    x_22_1[1u] = x_93;
    let x_22 : array<i32, 2> = x_22_1;
    localNumbers = x_22;
    globalNumbers[0] = 0;
    let x_95 : ptr<function, i32> = &(localNumbers[1]);
    let x_13 : i32 = x_22[1u];
    param = x_13;
    x_17 = 0;
    x_25_phi = 0;
    loop {
      let x_25 : i32 = x_25_phi;
      if ((x_25 <= x_13)) {
      } else {
        break;
      }
      let x_102 : ptr<function, i32> = &(globalNumbers[x_13]);
      let x_18 : i32 = *(x_102);
      if ((x_18 <= 1)) {
        *(x_102) = 1;
      }

      continuing {
        let x_19 : i32 = (x_25 + 1);
        x_17 = x_19;
        x_25_phi = x_19;
      }
    }
    let x_107 : f32 = x_8.one;
    let x_14 : i32 = globalNumbers[(i32(x_107) - 1)];
    let x_15 : i32 = bitcast<i32>((x_24 + bitcast<i32>(x_14)));
    acc = x_15;

    continuing {
      let x_16 : i32 = (x_23 + 1);
      i_1 = x_16;
      x_24_phi = x_15;
      x_23_phi = x_16;
    }
  }
  if ((x_24 == bitcast<i32>(4))) {
    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, 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);
}

fn yieldsZero_() -> i32 {
  var x_116 : bool = false;
  var x_20 : i32;
  var i : i32;
  var x_26 : i32;
  var x_134 : i32;
  var x_118_phi : bool;
  var x_27_phi : i32;
  x_118_phi = false;
  loop {
    var x_123 : bool;
    var x_28 : i32;
    var x_123_phi : bool;
    var x_28_phi : i32;
    var x_26_phi : i32;
    var x_132_phi : bool;
    let x_118 : bool = x_118_phi;
    i = 0;
    x_123_phi = x_118;
    x_28_phi = 0;
    loop {
      x_123 = x_123_phi;
      x_28 = x_28_phi;
      let x_128 : f32 = x_8.one;
      x_26_phi = 0;
      x_132_phi = x_123;
      if ((x_28 < i32(x_128))) {
      } else {
        break;
      }
      x_116 = true;
      x_20 = x_28;
      x_26_phi = x_28;
      x_132_phi = true;
      break;

      continuing {
        x_123_phi = false;
        x_28_phi = 0;
      }
    }
    x_26 = x_26_phi;
    let x_132 : bool = x_132_phi;
    x_27_phi = x_26;
    if (x_132) {
      break;
    }
    x_134 = 0;
    x_116 = true;
    x_20 = x_134;
    x_27_phi = x_134;
    break;

    continuing {
      x_118_phi = false;
    }
  }
  let x_27 : i32 = x_27_phi;
  return x_27;
}
