type RTArr = [[stride(4)]] array<i32>;

struct doesNotMatter {
  global_seed : i32;
  data : RTArr;
};

struct buf1 {
  injectionSwitch : vec2<f32>;
};

var<private> gl_LocalInvocationID : vec3<u32>;

[[group(0), binding(0)]] var<storage, read_write> x_7 : doesNotMatter;

[[group(0), binding(1)]] var<uniform> x_10 : buf1;

fn main_1() {
  var lid : i32;
  var val : i32;
  var i : i32;
  let x_40 : u32 = gl_LocalInvocationID.x;
  lid = bitcast<i32>(x_40);
  let x_43 : i32 = x_7.global_seed;
  val = x_43;
  i = 0;
  loop {
    let x_48 : i32 = i;
    if ((x_48 < 2)) {
    } else {
      break;
    }
    let x_51 : i32 = lid;
    if ((x_51 > 0)) {
      let x_55 : i32 = lid;
      let x_58 : i32 = x_7.data[(x_55 - 1)];
      let x_59 : i32 = val;
      val = (x_59 + x_58);
      let x_62 : f32 = x_10.injectionSwitch.x;
      if ((x_62 > 100.0)) {
        break;
      }
    }
    workgroupBarrier();

    continuing {
      let x_66 : i32 = i;
      i = (x_66 + 1);
    }
  }
  let x_68 : i32 = lid;
  if ((x_68 == 0)) {
    x_7.data[0] = 42;
  }
  return;
}

[[stage(compute), workgroup_size(16, 1, 1)]]
fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>) {
  gl_LocalInvocationID = gl_LocalInvocationID_param;
  main_1();
}
