// File: /workspace/github_cpp_makefile_star2_O3/dsharlet[P]array/test/array_lifetime.cpp
// Function: nda::test_array_move_alloc_lifetime_body()
TEST(array_move_alloc_lifetime) {
  movable_custom_alloc::reset_lifetime_counters();
  immovable_custom_alloc::reset_lifetime_counters();
  test_move_alloc_lifetime<std_alloc>();
  test_move_alloc_lifetime<movable_custom_alloc>();
  test_move_alloc_lifetime<immovable_custom_alloc>();
  test_move_alloc_lifetime<auto_alloc_big>(false);
  test_move_alloc_lifetime<auto_alloc_small>();
  ASSERT_EQ(movable_custom_alloc::constructs, 3);
  ASSERT_EQ(immovable_custom_alloc::constructs, 3);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
xorl %eax, %eax
movq %rax, 0xc4e56(%rip)     # 0xe7258
movq %rax, 0xc4e5f(%rip)     # 0xe7268
movq %rax, 0xc4e50(%rip)     # 0xe7260
movq %rax, 0xc4e59(%rip)     # 0xe7270
movl $0x1, %edi
callq 0x2d80f
movl $0x1, %edi
callq 0x2e1a9
movl $0x1, %edi
callq 0x2ea3d
xorl %edi, %edi
callq 0x2f2d1
movl $0x1, %edi
callq 0x2fc0d
movq 0xc4e0b(%rip), %rbx     # 0xe7258
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x859fd(%rip), %rsi     # 0xa7e5a
leaq 0x85a1b(%rip), %rdx     # 0xa7e7f
leaq 0x8(%rsp), %rdi
callq 0xd14c
xorl %esi, %esi
cmpq $0x3, %rbx
sete %sil
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xbf80
leaq 0x811f6(%rip), %rsi     # 0xa3684
leaq 0x28(%rsp), %rdi
callq 0x18fba
leaq 0x85946(%rip), %rsi     # 0xa7de5
movq %rax, %rdi
callq 0x249ac
leaq 0x84da8(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x224d5
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc4d88(%rip), %rsi     # 0xe7258
callq 0x2110
leaq 0x811a8(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x8b46e(%rip), %rsi     # 0xad959
movq %rax, %rdi
callq 0x18fba
leaq 0x84d5c(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x2251f
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x3, %esi
callq 0x22f0
leaq 0x97d73(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x28(%rsp), %rdi
callq 0xbfd8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2254f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xc4d0a(%rip), %rbx     # 0xe7260
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x858f3(%rip), %rsi     # 0xa7e58
leaq 0x85913(%rip), %rdx     # 0xa7e7f
callq 0xd14c
xorl %esi, %esi
cmpq $0x3, %rbx
sete %sil
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xbf80
leaq 0x810f3(%rip), %rsi     # 0xa3684
leaq 0x28(%rsp), %rdi
callq 0x18fba
leaq 0x85841(%rip), %rsi     # 0xa7de3
movq %rax, %rdi
callq 0x249e4
leaq 0x84ca5(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x225d8
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc4c8d(%rip), %rsi     # 0xe7260
callq 0x2110
leaq 0x810a5(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x8b36b(%rip), %rsi     # 0xad959
movq %rax, %rdi
callq 0x18fba
leaq 0x84c59(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x22622
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x3, %esi
callq 0x22f0
leaq 0x97c70(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x28(%rsp), %rdi
callq 0xbfd8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x22652
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r14
retq
jmp 0x2265f
movq %rax, %rbx
jmp 0x226a2
jmp 0x2266f
jmp 0x2267e
jmp 0x2266a
movq %rax, %rbx
jmp 0x2268b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbfd8
jmp 0x2268b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbfd8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x226a2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc0a9