// File: /workspace/github_cpp_makefile_star2_O3/dsharlet[P]array/test/array_lifetime.cpp
// Function: void nda::test_copy_assign_lifetime<nda::auto_allocator<nda::lifetime_counter, 256ul, 1ul, std::allocator<nda::lifetime_counter>>>()
void test_copy_assign_lifetime() {
  lifetime_array<Alloc> source(lifetime_shape);
  lifetime_counter::reset();
  {
    lifetime_array<Alloc> assign;
    assign = source;
  }
  ASSERT_EQ(lifetime_counter::copy_constructs, lifetime_shape.size());
  ASSERT_EQ(lifetime_counter::destructs, lifetime_shape.size());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
xorl %r14d, %r14d
leaq 0x1b8(%rsp), %rbx
movb %r14b, 0x100(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rbx)
movq %r14, 0x118(%rbx)
movups 0xb61ba(%rip), %xmm0    # 0xe71e8
movups %xmm0, 0x120(%rbx)
movups 0xb61bc(%rip), %xmm0    # 0xe71f8
movups %xmm0, 0x130(%rbx)
movups 0xb61be(%rip), %xmm0    # 0xe7208
movups %xmm0, 0x140(%rbx)
movq %rbx, %rdi
callq 0x4008a
movq %rbx, %rdi
callq 0x401b0
leaq 0xb6258(%rip), %rax     # 0xe72c0
movq %r14, (%rax)
leaq 0xb6256(%rip), %r12     # 0xe72c8
movq %r14, (%r12)
leaq 0xb6253(%rip), %rax     # 0xe72d0
movq %r14, (%rax)
leaq 0xb6251(%rip), %rax     # 0xe72d8
movq %r14, (%rax)
leaq 0xb624f(%rip), %rax     # 0xe72e0
movq %r14, (%rax)
leaq 0xb624d(%rip), %r15     # 0xe72e8
movq %r14, (%r15)
leaq 0x28(%rsp), %rdi
movb %r14b, 0x100(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rdi)
movups %xmm0, 0x118(%rdi)
movq %r14, 0x128(%rdi)
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
movq %rax, 0x130(%rdi)
movups %xmm0, 0x138(%rdi)
movq %rax, 0x148(%rdi)
callq 0x4008a
leaq 0x28(%rsp), %rdi
callq 0x401b0
leaq 0x28(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x45372
leaq 0x28(%rsp), %rdi
callq 0x402e8
movq (%r12), %rbx
movq 0xb60f1(%rip), %rbp     # 0xe7208
movq 0xb60d2(%rip), %r13     # 0xe71f0
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x795aa(%rip), %rsi     # 0xaa6d8
leaq 0x795dd(%rip), %rdx     # 0xaa712
leaq 0x8(%rsp), %rdi
callq 0xd14c
imulq %rbp, %r13
xorl %eax, %eax
testq %r13, %r13
cmovgq %r13, %rax
xorl %esi, %esi
cmpq %rax, %rbx
sete %sil
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xbf80
leaq 0x72519(%rip), %rsi     # 0xa3684
leaq 0x28(%rsp), %rdi
callq 0x18fba
leaq 0x79597(%rip), %rsi     # 0xaa713
movq %rax, %rdi
callq 0x421c0
leaq 0x760cb(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x311af
movq %rbx, %rdi
addq $0x10, %rdi
movq (%r12), %rsi
callq 0x2110
leaq 0x724ce(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x7abde(%rip), %rsi     # 0xabda3
movq %rax, %rdi
callq 0x19222
leaq 0x76082(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x3120c
movq 0xb6019(%rip), %rax     # 0xe7208
imulq 0xb5ff9(%rip), %rax     # 0xe71f0
xorl %esi, %esi
testq %rax, %rax
cmovgq %rax, %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x2110
leaq 0x89086(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x28(%rsp), %rdi
callq 0xbfd8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3123c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
movq (%r15), %rbx
movq 0xb5fc2(%rip), %r13     # 0xe7208
movq 0xb5fa3(%rip), %r12     # 0xe71f0
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x76e24(%rip), %rsi     # 0xa8080
leaq 0x76e51(%rip), %rdx     # 0xa80b4
callq 0xd14c
imulq %r13, %r12
xorl %eax, %eax
testq %r12, %r12
cmovgq %r12, %rax
xorl %esi, %esi
cmpq %rax, %rbx
sete %sil
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xbf80
leaq 0x723f0(%rip), %rsi     # 0xa3684
leaq 0x28(%rsp), %rdi
callq 0x18fba
leaq 0x76e10(%rip), %rsi     # 0xa80b5
movq %rax, %rdi
callq 0x3f614
leaq 0x75fa2(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x312d7
movq %rbx, %rdi
addq $0x10, %rdi
movq (%r15), %rsi
callq 0x2110
leaq 0x723a6(%rip), %rsi     # 0xa3684
movq %rbx, %rdi
callq 0x18fba
leaq 0x7aab6(%rip), %rsi     # 0xabda3
movq %rax, %rdi
callq 0x19222
leaq 0x75f5a(%rip), %rsi     # 0xa7256
movq %rax, %rdi
callq 0x18fba
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x31334
movq 0xb5ef1(%rip), %rax     # 0xe7208
imulq 0xb5ed1(%rip), %rax     # 0xe71f0
xorl %esi, %esi
testq %rax, %rax
cmovgq %rax, %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x2110
leaq 0x88f5e(%rip), %rsi     # 0xba299
movq %rbx, %rdi
callq 0x18fba
leaq 0x28(%rsp), %rdi
callq 0xbfd8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x31364
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x1b8(%rsp), %rdi
callq 0x402e8
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x313f6
jmp 0x313a7
jmp 0x313a7
jmp 0x313f6
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x402e8
jmp 0x313df
jmp 0x313f6
jmp 0x313ac
jmp 0x313bb
jmp 0x313a2
movq %rax, %rbx
jmp 0x313c8
movq %rax, %rbx
jmp 0x313df
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbfd8
jmp 0x313c8
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbfd8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x313df
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x1b8(%rsp), %rdi
callq 0x402e8
movq %rbx, %rdi
callq 0x2300
jmp 0x313f6
movq %rax, %rdi
callq 0xc0a9