// File: /workspace/github_cpp_makefile_star2_O2/dsharlet[P]array/test/array_lifetime.cpp
// Function: void nda::test_copy_assign_lifetime<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 %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
leaq 0xbd6ea(%rip), %rsi     # 0xe21e0
leaq 0x38(%rsp), %rdi
callq 0x31636
leaq 0xbd7b1(%rip), %rax     # 0xe22b8
andq $0x0, (%rax)
leaq 0xbd7ae(%rip), %r14     # 0xe22c0
andq $0x0, (%r14)
leaq 0xbd7ab(%rip), %rax     # 0xe22c8
andq $0x0, (%rax)
leaq 0xbd7a8(%rip), %rax     # 0xe22d0
andq $0x0, (%rax)
leaq 0xbd7a5(%rip), %rax     # 0xe22d8
andq $0x0, (%rax)
leaq 0xbd7a2(%rip), %rbx     # 0xe22e0
andq $0x0, (%rbx)
leaq 0x88(%rsp), %rdi
callq 0x375e6
leaq 0x88(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x37614
leaq 0x88(%rsp), %rdi
callq 0x3166c
movq (%r14), %r14
movq 0xbd688(%rip), %r12     # 0xe2200
movq 0xbd669(%rip), %r15     # 0xe21e8
leaq 0x700e2(%rip), %rsi     # 0x94c68
leaq 0x18(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x66a0
imulq %r12, %r15
xorl %eax, %eax
testq %r15, %r15
cmovgq %r15, %rax
xorl %esi, %esi
cmpq %rax, %r14
sete %sil
leaq 0x88(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x6894
leaq 0x68a83(%rip), %rsi     # 0x8d647
leaq 0x88(%rsp), %rdi
callq 0x106fe
leaq 0x700cb(%rip), %rsi     # 0x94ca3
movq %rax, %rdi
callq 0x34240
leaq 0x6ca0b(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0xbd6ca(%rip), %rsi     # 0xe22c0
movq %rax, %rdi
callq 0x11052
leaq 0x68a42(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x7171f(%rip), %rsi     # 0x96333
movq %rax, %rdi
callq 0x109ea
leaq 0x6c9cf(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movq 0xbd5b6(%rip), %rcx     # 0xe21e8
imulq 0xbd5c6(%rip), %rcx     # 0xe2200
xorl %edx, %edx
testq %rcx, %rcx
cmovgq %rcx, %rdx
leaq 0x10(%rsp), %rsi
movq %rdx, (%rsi)
movq %rax, %rdi
callq 0x11052
leaq 0x80648(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x88(%rsp), %rdi
callq 0x68d4
leaq 0x18(%rsp), %rdi
callq 0x2090
movq (%rbx), %rbx
movq 0xbd57d(%rip), %r15     # 0xe2200
movq 0xbd55e(%rip), %r14     # 0xe21e8
leaq 0x6d8a7(%rip), %rsi     # 0x92538
leaq 0x18(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x66a0
imulq %r15, %r14
xorl %eax, %eax
testq %r14, %r14
cmovgq %r14, %rax
xorl %esi, %esi
cmpq %rax, %rbx
sete %sil
leaq 0x88(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x6894
leaq 0x68978(%rip), %rsi     # 0x8d647
leaq 0x88(%rsp), %rdi
callq 0x106fe
leaq 0x6d88a(%rip), %rsi     # 0x9256d
movq %rax, %rdi
callq 0x31698
leaq 0x6c900(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
leaq 0xbd5df(%rip), %rsi     # 0xe22e0
movq %rax, %rdi
callq 0x11052
leaq 0x68937(%rip), %rsi     # 0x8d647
movq %rax, %rdi
callq 0x106fe
leaq 0x71614(%rip), %rsi     # 0x96333
movq %rax, %rdi
callq 0x109ea
leaq 0x6c8c4(%rip), %rsi     # 0x915f2
movq %rax, %rdi
callq 0x106fe
movq 0xbd4ab(%rip), %rcx     # 0xe21e8
imulq 0xbd4bb(%rip), %rcx     # 0xe2200
xorl %edx, %edx
testq %rcx, %rcx
cmovgq %rcx, %rdx
leaq 0x10(%rsp), %rsi
movq %rdx, (%rsi)
movq %rax, %rdi
callq 0x11052
leaq 0x8053d(%rip), %rsi     # 0xa52a2
movq %rax, %rdi
callq 0x106fe
leaq 0x88(%rsp), %rdi
callq 0x68d4
leaq 0x18(%rsp), %rdi
callq 0x2090
leaq 0x38(%rsp), %rdi
callq 0x3166c
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x24db3
jmp 0x24db3
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x3166c
jmp 0x24def
movq %rax, %rbx
jmp 0x24def
jmp 0x24dc3
jmp 0x24dbe
jmp 0x24dd5
movq %rax, %rbx
jmp 0x24de5
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x68d4
jmp 0x24de5
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x68d4
leaq 0x18(%rsp), %rdi
callq 0x2090
leaq 0x38(%rsp), %rdi
callq 0x3166c
movq %rbx, %rdi
callq 0x22f0
movq %rax, %rdi
callq 0x6bba