struct theSSBO {
  out_data : i32;
};

[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;

fn main_1() {
  var x_30 : mat2x2<f32>;
  var x_30_phi : mat2x2<f32>;
  var x_32_phi : i32;
  x_4.out_data = 42;
  x_30_phi = mat2x2<f32>(vec2<f32>(0.0, 0.0), vec2<f32>(0.0, 0.0));
  x_32_phi = 1;
  loop {
    var x_33 : i32;
    x_30 = x_30_phi;
    let x_32 : i32 = x_32_phi;
    if ((x_32 > 0)) {
    } else {
      break;
    }

    continuing {
      x_33 = (x_32 - 1);
      x_30_phi = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
      x_32_phi = x_33;
    }
  }
  let x_41 : vec2<f32> = (vec2<f32>(1.0, 1.0) * mat2x2<f32>((x_30[0u] - vec2<f32>(1.0, 0.0)), (x_30[1u] - vec2<f32>(0.0, 1.0))));
  loop {
    if ((1.0 < x_41.x)) {
      break;
    }
    workgroupBarrier();
    break;
  }
  return;
}

[[stage(compute), workgroup_size(1, 1, 1)]]
fn main() {
  main_1();
}
