// File: /workspace/github_cpp_makefile_star2_O3/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, 0xc51a0(%rip)     # 0xe7258
movq %rax, 0xc51a9(%rip)     # 0xe7268
movq %rax, 0xc519a(%rip)     # 0xe7260
movq %rax, 0xc51a3(%rip)     # 0xe7270
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x28c83
movl $0x0, (%rbx)
incq 0xc516c(%rip)           # 0xe7258
leaq 0x20(%rsp), %rdi
movl $0x1, %esi
callq 0x29c23
incq 0xc5166(%rip)           # 0xe7268
leaq 0x20(%rsp), %rdi
movl $0x0, (%rdi)
incq 0xc514c(%rip)           # 0xe7260
movl $0x1, %esi
callq 0x2ab06
incq 0xc514b(%rip)           # 0xe7270
leaq 0x20(%rsp), %rdi
movl $0x0, (%rdi)
incq 0xc5121(%rip)           # 0xe7258
movl $0x1, %esi
callq 0x29c23
incq 0xc5120(%rip)           # 0xe7268
xorl %ebp, %ebp
leaq 0x20(%rsp), %rbx
movb %bpl, 0x100(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2b931
movb %bpl, 0x20(%rbx)
leaq 0x20(%rsp), %rdi
movl $0x1, %esi
callq 0x2c902
movq 0xc50de(%rip), %rbx     # 0xe7258
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x85d0a(%rip), %rsi     # 0xa7e94
leaq 0x85d2c(%rip), %rdx     # 0xa7ebd
movq %rsp, %rdi
callq 0xd14c
xorl %esi, %esi
cmpq $0x8, %rbx
sete %sil
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x814cd(%rip), %rsi     # 0xa3684
leaq 0x20(%rsp), %rdi
callq 0x18fba
leaq 0x85c1d(%rip), %rsi     # 0xa7de5
movq %rax, %rdi
callq 0x249ac
leaq 0x8507f(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x221fe
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc505f(%rip), %rsi     # 0xe7258
callq 0x2110
leaq 0x8147f(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x85ca4(%rip), %rsi     # 0xa7eb8
movq %rax, %rdi
callq 0x2d7d8
leaq 0x85033(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x22248
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x8, %esi
callq 0x22f0
leaq 0x9804a(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x20(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x22277
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xc4fe2(%rip), %rbx     # 0xe7260
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x85c33(%rip), %rsi     # 0xa7ebe
leaq 0x85c53(%rip), %rdx     # 0xa7ee5
callq 0xd14c
xorl %esi, %esi
cmpq $0x5, %rbx
sete %sil
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0xbf80
leaq 0x813cf(%rip), %rsi     # 0xa3684
leaq 0x20(%rsp), %rdi
callq 0x18fba
leaq 0x85b1d(%rip), %rsi     # 0xa7de3
movq %rax, %rdi
callq 0x249e4
leaq 0x84f81(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x222fc
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc4f69(%rip), %rsi     # 0xe7260
callq 0x2110
leaq 0x81381(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x82f36(%rip), %rsi     # 0xa5248
movq %rax, %rdi
callq 0x18fba
leaq 0x84f35(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x22346
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x5, %esi
callq 0x22f0
leaq 0x97f4c(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x20(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x22375
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x22383
movq %rax, %rbx
jmp 0x223df
jmp 0x22396
movq %rax, %rbx
incq 0xc4edc(%rip)           # 0xe7270
jmp 0x223df
movq %rax, %rbx
incq 0xc4ec8(%rip)           # 0xe7268
jmp 0x223df
jmp 0x223ad
jmp 0x223bc
jmp 0x223a8
movq %rax, %rbx
jmp 0x223c9
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xbfd8
jmp 0x223c9
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xbfd8
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x223df
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc0a9