// File: /workspace/github_cpp_makefile_star2_O1/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, 0xc3866(%rip)     # 0xe5258
movq %rax, 0xc386f(%rip)     # 0xe5268
movq %rax, 0xc3860(%rip)     # 0xe5260
movq %rax, 0xc3869(%rip)     # 0xe5270
movl $0x1, %edi
callq 0x2ce47
movl $0x1, %edi
callq 0x2d7fe
movl $0x1, %edi
callq 0x2e092
xorl %edi, %edi
callq 0x2e926
movl $0x1, %edi
callq 0x2f262
movq 0xc381b(%rip), %rbx     # 0xe5258
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x845fd(%rip), %rsi     # 0xa604a
leaq 0x8461b(%rip), %rdx     # 0xa606f
leaq 0x8(%rsp), %rdi
callq 0xd0b8
xorl %esi, %esi
cmpq $0x3, %rbx
sete %sil
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xbf0a
leaq 0x7fbd6(%rip), %rsi     # 0xa1654
leaq 0x28(%rsp), %rdi
callq 0x18a16
leaq 0x84546(%rip), %rsi     # 0xa5fd5
movq %rax, %rdi
callq 0x23f9c
leaq 0x8388c(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x21ac5
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc3798(%rip), %rsi     # 0xe5258
callq 0x2110
leaq 0x7fb88(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x8a06e(%rip), %rsi     # 0xabb49
movq %rax, %rdi
callq 0x18a16
leaq 0x83840(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x21b0f
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x3, %esi
callq 0x22f0
leaq 0x96853(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x28(%rsp), %rdi
callq 0xbf62
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x21b3f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0xc371a(%rip), %rbx     # 0xe5260
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x844f3(%rip), %rsi     # 0xa6048
leaq 0x84513(%rip), %rdx     # 0xa606f
callq 0xd0b8
xorl %esi, %esi
cmpq $0x3, %rbx
sete %sil
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xbf0a
leaq 0x7fad3(%rip), %rsi     # 0xa1654
leaq 0x28(%rsp), %rdi
callq 0x18a16
leaq 0x84441(%rip), %rsi     # 0xa5fd3
movq %rax, %rdi
callq 0x23fd4
leaq 0x83789(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x21bc8
movq %rbx, %rdi
addq $0x10, %rdi
movq 0xc369d(%rip), %rsi     # 0xe5260
callq 0x2110
leaq 0x7fa85(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x89f6b(%rip), %rsi     # 0xabb49
movq %rax, %rdi
callq 0x18a16
leaq 0x8373d(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x21c12
movq %rbx, %rdi
addq $0x10, %rdi
movl $0x3, %esi
callq 0x22f0
leaq 0x96750(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x28(%rsp), %rdi
callq 0xbf62
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x21c42
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r14
retq
jmp 0x21c4f
movq %rax, %rbx
jmp 0x21c92
jmp 0x21c5f
jmp 0x21c6e
jmp 0x21c5a
movq %rax, %rbx
jmp 0x21c7b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbf62
jmp 0x21c7b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbf62
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x21c92
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2300
movq %rax, %rdi
callq 0xc036