// File: dsharlet[P]array/include/array/array.h
// Function: void nda::internal::for_each_index_in_order_impl<void nda::transform_index<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>, void nda::fill_pattern<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>>(nda::array_ref<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>> const&, int)::'lambda'(std::tuple<long, long, long> const&)>(nda::array_ref<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>> const&, void nda::fill_pattern<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>>(nda::array_ref<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>> const&, int)::'lambda'(std::tuple<long, long, long> const&)&&)::'lambda'(std::tuple<long, long, long> const&)&, std::tuple<>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>(int&&, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>> const&, void nda::fill_pattern<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>>(nda::array_ref<int, nda::shape<nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>> const&, int)::'lambda'(std::tuple<long, long, long> const&) const&, nda::dim<-9l, -9l, -9l> const&, nda::dim<-9l, -9l, -9l> const&)
NDARRAY_UNIQUE NDARRAY_HOST_DEVICE void for_each_index_in_order_impl(
    Fn&& fn, const OuterIdx& idx, const Dim0& dim0, const Dim1& dim1, const Dims&... dims) {
  for (index_t i : dim0) {
    for (index_t j : dim1) {
      for_each_index_in_order_impl(
          fn, std::tuple_cat(std::tuple<index_t, index_t>(j, i), idx), dims...);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x48(%rbp)
movq %rsi, -0x50(%rbp)
movq %rdx, -0x58(%rbp)
movq %rcx, -0x60(%rbp)
movq %r8, -0x68(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
callq 0x366c0
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rdi
callq 0x366f0
movq %rax, -0x80(%rbp)
leaq -0x78(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq -0x30(%rbp), %rcx
cmpq (%rcx), %rax
je 0x2f00d
leaq -0x78(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rdi
callq 0x366c0
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rdi
callq 0x366f0
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq -0xa0(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0x40(%rbp), %rcx
cmpq (%rcx), %rax
je 0x2eff0
leaq -0x98(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0xc8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x42b90
movq -0x50(%rbp), %rdx
leaq -0xb8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x42b50
movq -0xd0(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq -0xb8(%rbp), %rsi
callq 0x2f020
leaq -0x98(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x2ef3c
jmp 0x2eff2
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x2eed1
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)