// File: /workspace/github_cpp_makefile_star2_O3/dsharlet[P]array/test/array_lifetime.cpp
// Function: void nda::test_lifetime_leaks<nda::auto_allocator<nda::lifetime_counter, 256ul, 1ul, std::allocator<nda::lifetime_counter>>>()
void test_lifetime_leaks() {
  lifetime_counter::reset();
  {
    lifetime_array<Alloc> empty;
    lifetime_array<Alloc> default_init(lifetime_shape);
    lifetime_array<Alloc> default_init2({4, 9});
    lifetime_array<Alloc> default_init3({5, 12});
    lifetime_array<Alloc> default_init4({3, 8});
    lifetime_array<Alloc> copy(default_init);
    lifetime_array<Alloc> copy2(default_init2);
    lifetime_array<Alloc> copy3(copy2);
    lifetime_array<Alloc> copy_empty(empty);
    lifetime_array<Alloc> assign_init = default_init;
    lifetime_array<Alloc> assign_init_empty = empty;
    lifetime_array<Alloc> assign;
    assign = default_init;
    assign = default_init2;
    assign = default_init2;
    assign = default_init;
    assign = default_init;
    assign = default_init2;
    assign = default_init;
    assign = default_init2;
    assign = std::move(default_init);
    assign = std::move(default_init2);
    assign = std::move(copy2);
    assign = copy3;
    assign = copy;
    assign = copy;
    copy.clear();
    assign = copy;
    lifetime_array<Alloc> assign2;
    assign2.assign(default_init3);
    assign2.assign(default_init4);
    assign2.assign(default_init4);
    assign2.assign(default_init3);
    assign2.assign(default_init4);
    assign2.assign(lifetime_shape, lifetime_counter());
    assign2.assign(std::move(default_init3));
    assign2.assign(default_init4);
    assign2.assign(std::move(default_init4));
  }
  ASSERT_EQ(lifetime_counter::destructs, lifetime_counter::constructs());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1198, %rsp           # imm = 0x1198
movabsq $-0x8000000000000000, %rbp # imm = 0x8000000000000000
leaq 0xa90cd(%rip), %r14     # 0xe72c0
xorl %r15d, %r15d
movq %r15, (%r14)
leaq 0xa90c8(%rip), %rax     # 0xe72c8
movq %r15, (%rax)
leaq 0xa90c6(%rip), %rax     # 0xe72d0
movq %r15, (%rax)
leaq 0xa90c4(%rip), %rax     # 0xe72d8
movq %r15, (%rax)
leaq 0xa90c2(%rip), %rax     # 0xe72e0
movq %r15, (%rax)
leaq 0xa90c0(%rip), %r12     # 0xe72e8
movq %r15, (%r12)
leaq 0x6a0(%rsp), %rbx
movb %r15b, 0x100(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rbx)
movups %xmm0, 0x118(%rbx)
movq %r15, 0x128(%rbx)
movq %rbp, 0x130(%rbx)
movups %xmm0, 0x138(%rbx)
movq %rbp, 0x148(%rbx)
movq %rbx, %rdi
callq 0x4008a
movq %rbx, %rdi
callq 0x401b0
leaq 0x10(%rsp), %rdi
movb %r15b, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movq %r15, 0x118(%rdi)
movups 0xa8f4c(%rip), %xmm0    # 0xe71e8
movups %xmm0, 0x120(%rdi)
movups 0xa8f4e(%rip), %xmm0    # 0xe71f8
movups %xmm0, 0x130(%rdi)
movups 0xa8f50(%rip), %xmm0    # 0xe7208
movups %xmm0, 0x140(%rdi)
callq 0x4008a
leaq 0x10(%rsp), %rdi
callq 0x401b0
leaq 0x400(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x9, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movq $0x0, 0x138(%rdi)
movq $0x4, 0x140(%rdi)
movq %rbp, 0x148(%rdi)
callq 0x4008a
leaq 0x400(%rsp), %rdi
callq 0x401b0
leaq 0x9b8(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0xc, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movq $0x0, 0x138(%rdi)
movq $0x5, 0x140(%rdi)
movq %rbp, 0x148(%rdi)
callq 0x4008a
leaq 0x9b8(%rsp), %rdi
callq 0x401b0
leaq 0x550(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x8, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movq $0x0, 0x138(%rdi)
movq $0x3, 0x140(%rdi)
movq %rbp, 0x148(%rdi)
callq 0x4008a
leaq 0x550(%rsp), %rdi
callq 0x401b0
leaq 0x868(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
leaq 0x10(%rsp), %rsi
callq 0x4378c
leaq 0xb08(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
leaq 0x400(%rsp), %rsi
callq 0x4378c
leaq 0xc58(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
leaq 0xb08(%rsp), %rsi
callq 0x4378c
leaq 0x1048(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
leaq 0x6a0(%rsp), %rsi
callq 0x4378c
leaq 0xef8(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
leaq 0x10(%rsp), %rsi
callq 0x4378c
leaq 0xda8(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
leaq 0x6a0(%rsp), %rsi
callq 0x4378c
leaq 0x160(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
callq 0x4008a
leaq 0x160(%rsp), %rdi
callq 0x401b0
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x45a9a
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x45a9a
leaq 0x160(%rsp), %rdi
leaq 0xb08(%rsp), %rsi
callq 0x45a9a
leaq 0x160(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x45372
leaq 0x160(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x45372
leaq 0x868(%rsp), %rdi
callq 0x46172
leaq 0x160(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x45372
leaq 0x2b0(%rsp), %rdi
movb $0x0, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq $0x0, 0x128(%rdi)
movq %rbp, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rbp, 0x148(%rdi)
callq 0x4008a
leaq 0x2b0(%rsp), %rdi
callq 0x401b0
leaq 0x2b0(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x4378c
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x4378c
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x4378c
leaq 0x2b0(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x4378c
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x4378c
movups 0xa8a02(%rip), %xmm0    # 0xe7208
leaq 0x830(%rsp), %rsi
movaps %xmm0, 0x20(%rsi)
movups 0xa89df(%rip), %xmm0    # 0xe71f8
movaps %xmm0, 0x10(%rsi)
movups 0xa89c4(%rip), %xmm0    # 0xe71e8
movaps %xmm0, (%rsi)
incq (%r14)
leaq 0x2b0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x4288c
incq (%r12)
leaq 0x2b0(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x45cc6
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x4378c
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x45cc6
leaq 0x2b0(%rsp), %rdi
callq 0x402e8
leaq 0x160(%rsp), %rdi
callq 0x402e8
leaq 0xda8(%rsp), %rdi
callq 0x402e8
leaq 0xef8(%rsp), %rdi
callq 0x402e8
leaq 0x1048(%rsp), %rdi
callq 0x402e8
leaq 0xc58(%rsp), %rdi
callq 0x402e8
leaq 0xb08(%rsp), %rdi
callq 0x402e8
leaq 0x868(%rsp), %rdi
callq 0x402e8
leaq 0x550(%rsp), %rdi
callq 0x402e8
leaq 0x9b8(%rsp), %rdi
callq 0x402e8
leaq 0x400(%rsp), %rdi
callq 0x402e8
leaq 0x10(%rsp), %rdi
callq 0x402e8
leaq 0x6a0(%rsp), %rdi
callq 0x402e8
movq %r12, %rbp
movq (%r12), %rbx
movq %r14, %r13
movq (%r14), %r12
leaq 0xa898f(%rip), %rax     # 0xe72c8
movq (%rax), %r15
leaq 0xa898d(%rip), %rax     # 0xe72d0
movq (%rax), %r14
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x6f005(%rip), %rsi     # 0xad95b
leaq 0x6f03b(%rip), %rdx     # 0xad998
leaq 0x10(%rsp), %rdi
callq 0xd14c
addq %r12, %r15
addq %r14, %r15
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0x6a0(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbf80
leaq 0x64cf5(%rip), %rsi     # 0xa3684
leaq 0x6a0(%rsp), %rdi
callq 0x18fba
leaq 0x69712(%rip), %rsi     # 0xa80b5
movq %rax, %rdi
callq 0x3f614
leaq 0x688a4(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x3e9d6
movq %rbx, %rdi
addq $0x10, %rdi
movq (%rbp), %rsi
callq 0x2110
leaq 0x64ca7(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x6ef8e(%rip), %rsi     # 0xad97a
movq %rax, %rdi
callq 0x3f5a4
leaq 0x6885b(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x3ea33
movq (%r13), %rsi
leaq 0xa88ae(%rip), %rax     # 0xe72c8
addq (%rax), %rsi
leaq 0xa88ac(%rip), %rax     # 0xe72d0
addq (%rax), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x2110
leaq 0x7b85f(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x6a0(%rsp), %rdi
callq 0xbfd8
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3ea6b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
addq $0x1198, %rsp           # imm = 0x1198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x3ec20
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
movq %rax, %rbx
incq (%r12)
jmp 0x3eb70
movq %rax, %rbx
jmp 0x3eba1
movq %rax, %rbx
jmp 0x3ebae
movq %rax, %rbx
jmp 0x3ebbb
movq %rax, %rbx
jmp 0x3ebc8
movq %rax, %rbx
jmp 0x3ebd5
movq %rax, %rbx
jmp 0x3ebe2
jmp 0x3eb33
movq %rax, %rbx
jmp 0x3eb43
jmp 0x3eb84
movq %rax, %rbx
jmp 0x3eb94
movq %rax, %rbx
jmp 0x3ebef
movq %rax, %rbx
jmp 0x3ebfc
movq %rax, %rbx
jmp 0x3ec09
movq %rax, %rbx
jmp 0x3ec13
movq %rax, %rbx
leaq 0x6a0(%rsp), %rdi
callq 0xbfd8
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3ec20
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x3ec20
jmp 0x3ec3e
movq %rax, %rbx
leaq 0x2b0(%rsp), %rdi
callq 0x402e8
jmp 0x3eb87
jmp 0x3ec3e
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x402e8
leaq 0xda8(%rsp), %rdi
callq 0x402e8
leaq 0xef8(%rsp), %rdi
callq 0x402e8
leaq 0x1048(%rsp), %rdi
callq 0x402e8
leaq 0xc58(%rsp), %rdi
callq 0x402e8
leaq 0xb08(%rsp), %rdi
callq 0x402e8
leaq 0x868(%rsp), %rdi
callq 0x402e8
leaq 0x550(%rsp), %rdi
callq 0x402e8
leaq 0x9b8(%rsp), %rdi
callq 0x402e8
leaq 0x400(%rsp), %rdi
callq 0x402e8
leaq 0x10(%rsp), %rdi
callq 0x402e8
leaq 0x6a0(%rsp), %rdi
callq 0x402e8
movq %rbx, %rdi
callq 0x2300
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
jmp 0x3ec3e
movq %rax, %rdi
callq 0xc0a9