// File: /workspace/github_cpp_makefile_star2_O1/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 0xa7a78(%rip), %r14     # 0xe52c0
xorl %r15d, %r15d
movq %r15, (%r14)
leaq 0xa7a73(%rip), %rax     # 0xe52c8
movq %r15, (%rax)
leaq 0xa7a71(%rip), %rax     # 0xe52d0
movq %r15, (%rax)
leaq 0xa7a6f(%rip), %rax     # 0xe52d8
movq %r15, (%rax)
leaq 0xa7a6d(%rip), %rax     # 0xe52e0
movq %r15, (%rax)
leaq 0xa7a6b(%rip), %r12     # 0xe52e8
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 0x3f6ba
movq %rbx, %rdi
callq 0x3f7be
leaq 0x10(%rsp), %rdi
movb %r15b, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movq %r15, 0x118(%rdi)
movups 0xa78f7(%rip), %xmm0    # 0xe51e8
movups %xmm0, 0x120(%rdi)
movups 0xa78f9(%rip), %xmm0    # 0xe51f8
movups %xmm0, 0x130(%rdi)
movups 0xa78fb(%rip), %xmm0    # 0xe5208
movups %xmm0, 0x140(%rdi)
callq 0x3f6ba
leaq 0x10(%rsp), %rdi
callq 0x3f7be
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 0x3f6ba
leaq 0x400(%rsp), %rdi
callq 0x3f7be
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 0x3f6ba
leaq 0x9b8(%rsp), %rdi
callq 0x3f7be
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 0x3f6ba
leaq 0x550(%rsp), %rdi
callq 0x3f7be
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 0x42d1a
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 0x42d1a
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 0x42d1a
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 0x42d1a
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 0x42d1a
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 0x42d1a
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 0x3f6ba
leaq 0x160(%rsp), %rdi
callq 0x3f7be
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x4505c
leaq 0x160(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x4505c
leaq 0x160(%rsp), %rdi
leaq 0xb08(%rsp), %rsi
callq 0x4505c
leaq 0x160(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x44934
leaq 0x160(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x44934
leaq 0x868(%rsp), %rdi
callq 0x45734
leaq 0x160(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x44934
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 0x3f6ba
leaq 0x2b0(%rsp), %rdi
callq 0x3f7be
leaq 0x2b0(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x42d1a
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x42d1a
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x42d1a
leaq 0x2b0(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x42d1a
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x42d1a
movups 0xa73ad(%rip), %xmm0    # 0xe5208
leaq 0x830(%rsp), %rsi
movaps %xmm0, 0x20(%rsi)
movups 0xa738a(%rip), %xmm0    # 0xe51f8
movaps %xmm0, 0x10(%rsi)
movups 0xa736f(%rip), %xmm0    # 0xe51e8
movaps %xmm0, (%rsi)
incq (%r14)
leaq 0x2b0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x41e1a
incq (%r12)
leaq 0x2b0(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x45288
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x42d1a
leaq 0x2b0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x45288
leaq 0x2b0(%rsp), %rdi
callq 0x3f8f6
leaq 0x160(%rsp), %rdi
callq 0x3f8f6
leaq 0xda8(%rsp), %rdi
callq 0x3f8f6
leaq 0xef8(%rsp), %rdi
callq 0x3f8f6
leaq 0x1048(%rsp), %rdi
callq 0x3f8f6
leaq 0xc58(%rsp), %rdi
callq 0x3f8f6
leaq 0xb08(%rsp), %rdi
callq 0x3f8f6
leaq 0x868(%rsp), %rdi
callq 0x3f8f6
leaq 0x550(%rsp), %rdi
callq 0x3f8f6
leaq 0x9b8(%rsp), %rdi
callq 0x3f8f6
leaq 0x400(%rsp), %rdi
callq 0x3f8f6
leaq 0x10(%rsp), %rdi
callq 0x3f8f6
leaq 0x6a0(%rsp), %rdi
callq 0x3f8f6
movq %r12, %rbp
movq (%r12), %rbx
movq %r14, %r13
movq (%r14), %r12
leaq 0xa733a(%rip), %rax     # 0xe52c8
movq (%rax), %r15
leaq 0xa7338(%rip), %rax     # 0xe52d0
movq (%rax), %r14
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x6dba0(%rip), %rsi     # 0xabb4b
leaq 0x6dbd6(%rip), %rdx     # 0xabb88
leaq 0x10(%rsp), %rdi
callq 0xd0b8
addq %r12, %r15
addq %r14, %r15
xorl %esi, %esi
cmpq %r15, %rbx
sete %sil
leaq 0x6a0(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbf0a
leaq 0x63670(%rip), %rsi     # 0xa1654
leaq 0x6a0(%rsp), %rdi
callq 0x18a16
leaq 0x682ad(%rip), %rsi     # 0xa62a5
movq %rax, %rdi
callq 0x3ec6a
leaq 0x67323(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x3e02b
movq %rbx, %rdi
addq $0x10, %rdi
movq (%rbp), %rsi
callq 0x2110
leaq 0x63622(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x6db29(%rip), %rsi     # 0xabb6a
movq %rax, %rdi
callq 0x3ebfa
leaq 0x672da(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x3e088
movq (%r13), %rsi
leaq 0xa7259(%rip), %rax     # 0xe52c8
addq (%rax), %rsi
leaq 0xa7257(%rip), %rax     # 0xe52d0
addq (%rax), %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x2110
leaq 0x7a2da(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x6a0(%rsp), %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3e0c0
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 0x3e275
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
movq %rax, %rbx
incq (%r12)
jmp 0x3e1c5
movq %rax, %rbx
jmp 0x3e1f6
movq %rax, %rbx
jmp 0x3e203
movq %rax, %rbx
jmp 0x3e210
movq %rax, %rbx
jmp 0x3e21d
movq %rax, %rbx
jmp 0x3e22a
movq %rax, %rbx
jmp 0x3e237
jmp 0x3e188
movq %rax, %rbx
jmp 0x3e198
jmp 0x3e1d9
movq %rax, %rbx
jmp 0x3e1e9
movq %rax, %rbx
jmp 0x3e244
movq %rax, %rbx
jmp 0x3e251
movq %rax, %rbx
jmp 0x3e25e
movq %rax, %rbx
jmp 0x3e268
movq %rax, %rbx
leaq 0x6a0(%rsp), %rdi
callq 0xbf62
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3e275
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x3e275
jmp 0x3e293
movq %rax, %rbx
leaq 0x2b0(%rsp), %rdi
callq 0x3f8f6
jmp 0x3e1dc
jmp 0x3e293
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x3f8f6
leaq 0xda8(%rsp), %rdi
callq 0x3f8f6
leaq 0xef8(%rsp), %rdi
callq 0x3f8f6
leaq 0x1048(%rsp), %rdi
callq 0x3f8f6
leaq 0xc58(%rsp), %rdi
callq 0x3f8f6
leaq 0xb08(%rsp), %rdi
callq 0x3f8f6
leaq 0x868(%rsp), %rdi
callq 0x3f8f6
leaq 0x550(%rsp), %rdi
callq 0x3f8f6
leaq 0x9b8(%rsp), %rdi
callq 0x3f8f6
leaq 0x400(%rsp), %rdi
callq 0x3f8f6
leaq 0x10(%rsp), %rdi
callq 0x3f8f6
leaq 0x6a0(%rsp), %rdi
callq 0x3f8f6
movq %rbx, %rdi
callq 0x2300
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
jmp 0x3e293
movq %rax, %rdi
callq 0xc036