// File: /workspace/github_cpp_makefile_star2_O1/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 0xb4b65(%rip), %xmm0    # 0xe51e8
movups %xmm0, 0x120(%rbx)
movups 0xb4b67(%rip), %xmm0    # 0xe51f8
movups %xmm0, 0x130(%rbx)
movups 0xb4b69(%rip), %xmm0    # 0xe5208
movups %xmm0, 0x140(%rbx)
movq %rbx, %rdi
callq 0x3f6ba
movq %rbx, %rdi
callq 0x3f7be
leaq 0xb4c03(%rip), %rax     # 0xe52c0
movq %r14, (%rax)
leaq 0xb4c01(%rip), %r12     # 0xe52c8
movq %r14, (%r12)
leaq 0xb4bfe(%rip), %rax     # 0xe52d0
movq %r14, (%rax)
leaq 0xb4bfc(%rip), %rax     # 0xe52d8
movq %r14, (%rax)
leaq 0xb4bfa(%rip), %rax     # 0xe52e0
movq %r14, (%rax)
leaq 0xb4bf8(%rip), %r15     # 0xe52e8
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 0x3f6ba
leaq 0x28(%rsp), %rdi
callq 0x3f7be
leaq 0x28(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x44934
leaq 0x28(%rsp), %rdi
callq 0x3f8f6
movq (%r12), %rbx
movq 0xb4a9c(%rip), %rbp     # 0xe5208
movq 0xb4a7d(%rip), %r13     # 0xe51f0
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x78145(%rip), %rsi     # 0xa88c8
leaq 0x78178(%rip), %rdx     # 0xa8902
leaq 0x8(%rsp), %rdi
callq 0xd0b8
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 0xbf0a
leaq 0x70e94(%rip), %rsi     # 0xa1654
leaq 0x28(%rsp), %rdi
callq 0x18a16
leaq 0x78132(%rip), %rsi     # 0xa8903
movq %rax, %rdi
callq 0x4174e
leaq 0x74b4a(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x30804
movq %rbx, %rdi
addq $0x10, %rdi
movq (%r12), %rsi
callq 0x2110
leaq 0x70e49(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x79779(%rip), %rsi     # 0xa9f93
movq %rax, %rdi
callq 0x18c7e
leaq 0x74b01(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x30861
movq 0xb49c4(%rip), %rax     # 0xe5208
imulq 0xb49a4(%rip), %rax     # 0xe51f0
xorl %esi, %esi
testq %rax, %rax
cmovgq %rax, %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x2110
leaq 0x87b01(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x28(%rsp), %rdi
callq 0xbf62
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x30891
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
movq (%r15), %rbx
movq 0xb496d(%rip), %r13     # 0xe5208
movq 0xb494e(%rip), %r12     # 0xe51f0
leaq 0x8(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x759bf(%rip), %rsi     # 0xa6270
leaq 0x759ec(%rip), %rdx     # 0xa62a4
callq 0xd0b8
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 0xbf0a
leaq 0x70d6b(%rip), %rsi     # 0xa1654
leaq 0x28(%rsp), %rdi
callq 0x18a16
leaq 0x759ab(%rip), %rsi     # 0xa62a5
movq %rax, %rdi
callq 0x3ec6a
leaq 0x74a21(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x3092c
movq %rbx, %rdi
addq $0x10, %rdi
movq (%r15), %rsi
callq 0x2110
leaq 0x70d21(%rip), %rsi     # 0xa1654
movq %rbx, %rdi
callq 0x18a16
leaq 0x79651(%rip), %rsi     # 0xa9f93
movq %rax, %rdi
callq 0x18c7e
leaq 0x749d9(%rip), %rsi     # 0xa532a
movq %rax, %rdi
callq 0x18a16
movq %rax, %rbx
cmpb $0x1, 0x188(%rax)
jne 0x30989
movq 0xb489c(%rip), %rax     # 0xe5208
imulq 0xb487c(%rip), %rax     # 0xe51f0
xorl %esi, %esi
testq %rax, %rax
cmovgq %rax, %rsi
movq %rbx, %rdi
addq $0x10, %rdi
callq 0x2110
leaq 0x879d9(%rip), %rsi     # 0xb8369
movq %rbx, %rdi
callq 0x18a16
leaq 0x28(%rsp), %rdi
callq 0xbf62
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x309b9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x1b8(%rsp), %rdi
callq 0x3f8f6
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x30a4b
jmp 0x309fc
jmp 0x309fc
jmp 0x30a4b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3f8f6
jmp 0x30a34
jmp 0x30a4b
jmp 0x30a01
jmp 0x30a10
jmp 0x309f7
movq %rax, %rbx
jmp 0x30a1d
movq %rax, %rbx
jmp 0x30a34
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbf62
jmp 0x30a1d
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xbf62
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x30a34
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x1b8(%rsp), %rdi
callq 0x3f8f6
movq %rbx, %rdi
callq 0x2300
jmp 0x30a4b
movq %rax, %rdi
callq 0xc036