struct S {
  a : array<vec4<i32>, 4>
}

@group(0) @binding(0) var<storage, read_write>  buffer : array<S>;

var<private> v : u32;

fn idx1() -> i32 {
  v--;
  return 1;
}

fn idx2() -> i32 {
  v--;
  return 2;
}

fn idx3() -> i32 {
  v--;
  return 3;
}

fn idx4() -> i32 {
  v--;
  return 4;
}

fn idx5() -> i32 {
  v--;
  return 0;
}

fn idx6() -> i32 {
  v--;
  return 2;
}

fn main() {
  for (buffer[idx1()].a[idx2()][idx3()]--;
       v < 10u;
       buffer[idx4()].a[idx5()][idx6()]--) {
  }
}