// File: /workspace/github_cpp_makefile_star2_O1/dsharlet[P]array/test/array_lifetime.cpp
// Function: nda::test_array_move_lifetime_body()
TEST(array_move_lifetime) {
  movable_custom_alloc::reset_lifetime_counters();
  immovable_custom_alloc::reset_lifetime_counters();
  test_move_lifetime(std_alloc());
  test_move_lifetime(movable_custom_alloc());
  test_move_lifetime(immovable_custom_alloc());
  test_move_lifetime(movable_custom_alloc(1));
  test_move_lifetime(auto_alloc_big(), false);
  test_move_lifetime(auto_alloc_small());
  ASSERT_EQ(movable_custom_alloc::constructs, 2 * 4);  // We run tests with movable_custom_alloc twice.
  ASSERT_EQ(immovable_custom_alloc::constructs, 5);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x1b0, %rsp            # imm = 0x1B0
xorl %eax, %eax
movq %rax, 0xc3bb0(%rip)     # 0xe5258
movq %rax, 0xc3bb9(%rip)     # 0xe5268
movq %rax, 0xc3baa(%rip)     # 0xe5260
movq %rax, 0xc3bb3(%rip)     # 0xe5270
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x28282
movl $0x0, (%rbx)
incq 0xc3b7c(%rip)           # 0xe5258
leaq 0x20(%rsp), %rdi
movl $0x1, %esi
callq 0x2923f
incq 0xc3b76(%rip)           # 0xe5268
leaq 0x20(%rsp), %rdi
movl $0x0, (%rdi)
incq 0xc3b5c(%rip)           # 0xe5260
movl $0x1, %esi
callq 0x2a13f
incq 0xc3b5b(%rip)           # 0xe5270
leaq 0x20(%rsp), %rdi
movl $0x0, (%rdi)
incq 0xc3b31(%rip)           # 0xe5258
movl $0x1, %esi
callq 0x2923f
incq 0xc3b30(%rip)           # 0xe5268
xorl %ebp, %ebp
leaq 0x20(%rsp), %rbx
movb %bpl, 0x100(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2af6a
movb %bpl, 0x20(%rbx)
leaq 0x20(%rsp), %rdi
movl $0x1, %esi
callq 0x2bf3b
movq 0xc3aee(%rip), %rbx     # 0xe5258
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8490a(%rip), %rsi     # 0xa6084
leaq 0x8492c(%rip), %rdx     # 0xa60ad
movq %rsp, %rdi
callq 0xd0b8
xorl %esi, %esi
cmpq $0x8, %rbx
sete %sil
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x7fead(%rip), %rsi     # 0xa1654
leaq 0x20(%rsp), %rdi
callq 0x18a16
leaq 0x8481d(%rip), %rsi     # 0xa5fd5
movq %rax, %rdi
callq 0x23f9c
leaq 0x83b63(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x217ee
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc3a6f(%rip), %rsi     # 0xe5258
callq 0x2110
leaq 0x7fe5f(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x848a4(%rip), %rsi     # 0xa60a8
movq %rax, %rdi
callq 0x2ce10
leaq 0x83b17(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x21838
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x8, %esi
callq 0x22f0
leaq 0x96b2a(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x20(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x21867
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xc39f2(%rip), %rbx     # 0xe5260
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x84833(%rip), %rsi     # 0xa60ae
leaq 0x84853(%rip), %rdx     # 0xa60d5
callq 0xd0b8
xorl %esi, %esi
cmpq $0x5, %rbx
sete %sil
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf0a
leaq 0x7fdaf(%rip), %rsi     # 0xa1654
leaq 0x20(%rsp), %rdi
callq 0x18a16
leaq 0x8471d(%rip), %rsi     # 0xa5fd3
movq %rax, %rdi
callq 0x23fd4
leaq 0x83a65(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x218ec
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc3979(%rip), %rsi     # 0xe5260
callq 0x2110
leaq 0x7fd61(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x818fe(%rip), %rsi     # 0xa3200
movq %rax, %rdi
callq 0x18a16
leaq 0x83a19(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x21936
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x5, %esi
callq 0x22f0
leaq 0x96a2c(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x20(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x21965
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x21973
movq %rax, %rbx
jmp 0x219cf
jmp 0x21986
movq %rax, %rbx
incq 0xc38ec(%rip)           # 0xe5270
jmp 0x219cf
movq %rax, %rbx
incq 0xc38d8(%rip)           # 0xe5268
jmp 0x219cf
jmp 0x2199d
jmp 0x219ac
jmp 0x21998
movq %rax, %rbx
jmp 0x219b9
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xbf62
jmp 0x219b9
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xbf62
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x219cf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc036