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>();
  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();
}
