// File: /workspace/github_cpp_makefile_star2_O3/dsharlet[P]array/include/array/array.h
// Function: nda::array<int, nda::shape<nda::dim<-9l, -9l, 1l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>, nda::auto_allocator<int, 32ul, 4ul, std::allocator<int>>>::operator=(nda::array<int, nda::shape<nda::dim<-9l, -9l, 1l>, nda::dim<-9l, -9l, -9l>, nda::dim<-9l, -9l, -9l>>, nda::auto_allocator<int, 32ul, 4ul, std::allocator<int>>>&&)
array& operator=(array&& other) {
    using std::swap;
    if (base_ == other.base_) {
      if (base_) {
        assert(shape_ == other.shape_);
      } else {
        swap(shape_, other.shape_);
        assert(shape_.empty());
      }
      return *this;
    }

    if (std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::value) {
      swap(alloc_, other.alloc_);
      swap_except_allocator(other);
    } else if (alloc_ == other.get_allocator()) {
      swap_except_allocator(other);
    } else {
      assign(std::move(other));
    }
    return *this;
  }

// Assembly:
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
movq 0x98(%rdi), %rax
cmpq 0x98(%rsi), %rax
je 0x4ef44
cmpb $0x0, 0x80(%rbx)
je 0x4efa4
cmpq %rsi, %rbx
jne 0x4efb2
jmp 0x4efbf
testq %rax, %rax
je 0x4f0f6
movq 0xd0(%rbx), %rax
cmpq 0xd0(%rsi), %rax
jne 0x4ef85
movq 0xd8(%rsi), %rax
cmpq %rax, 0xd8(%rbx)
jne 0x4ef85
movl $0xa0, %edi
addq %rdi, %rsi
addq %rbx, %rdi
callq 0xd690
testb %al, %al
jne 0x4f1f0
leaq 0x549c5(%rip), %rdi     # 0xa3951
leaq 0x5418a(%rip), %rsi     # 0xa311d
leaq 0x60b00(%rip), %rcx     # 0xafa9a
movl $0x9a0, %edx            # imm = 0x9A0
callq 0x2100
cmpq %rsi, %rbx
je 0x4efbf
cmpb $0x0, 0x80(%rsi)
je 0x4efbf
movq %rbx, %rdi
callq 0x4ff52
jmp 0x4f1f0
movq 0x88(%rbx), %rax
movq 0x88(%rsi), %rcx
movq %rcx, 0x88(%rbx)
movq %rax, 0x88(%rsi)
movq 0x90(%rbx), %rax
movq 0x90(%rsi), %rcx
movq %rcx, 0x90(%rbx)
movq %rax, 0x90(%rsi)
movq 0x98(%rbx), %rax
movq 0x98(%rsi), %rcx
movq %rcx, 0x98(%rbx)
movq %rax, 0x98(%rsi)
movq 0xb0(%rbx), %rax
movq %rax, 0x10(%rsp)
movups 0xa0(%rbx), %xmm0
movaps %xmm0, (%rsp)
movq 0xc8(%rbx), %rax
movq %rax, 0x28(%rsp)
movups 0xb8(%rbx), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0xe0(%rbx), %rax
movq %rax, 0x40(%rsp)
movups 0xd0(%rbx), %xmm0
movaps %xmm0, 0x30(%rsp)
movb 0xe0(%rsi), %al
movb %al, 0xe0(%rbx)
movups 0xd0(%rsi), %xmm0
movups %xmm0, 0xd0(%rbx)
movq 0xc8(%rsi), %rax
movq %rax, 0xc8(%rbx)
movups 0xb8(%rsi), %xmm0
movups %xmm0, 0xb8(%rbx)
movq 0xb0(%rsi), %rax
movq %rax, 0xb0(%rbx)
movups 0xa0(%rsi), %xmm0
movups %xmm0, 0xa0(%rbx)
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0xd0(%rsi)
movb 0x40(%rsp), %al
movb %al, 0xe0(%rsi)
movups 0x18(%rsp), %xmm0
movups %xmm0, 0xb8(%rsi)
movq 0x28(%rsp), %rax
movq %rax, 0xc8(%rsi)
movaps (%rsp), %xmm0
movups %xmm0, 0xa0(%rsi)
movq 0x10(%rsp), %rax
movq %rax, 0xb0(%rsi)
jmp 0x4f1f0
movq 0xb0(%rbx), %rax
movq %rax, 0x10(%rsp)
movups 0xa0(%rbx), %xmm0
movaps %xmm0, (%rsp)
movq 0xc8(%rbx), %rax
movq %rax, 0x28(%rsp)
movups 0xb8(%rbx), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0xe0(%rbx), %rax
movq %rax, 0x40(%rsp)
movups 0xd0(%rbx), %xmm0
movaps %xmm0, 0x30(%rsp)
movb 0xe0(%rsi), %al
movb %al, 0xe0(%rbx)
movups 0xd0(%rsi), %xmm0
movups %xmm0, 0xd0(%rbx)
movq 0xc8(%rsi), %rax
movq %rax, 0xc8(%rbx)
movups 0xb8(%rsi), %xmm0
movups %xmm0, 0xb8(%rbx)
movq 0xb0(%rsi), %rax
movq %rax, 0xb0(%rbx)
movups 0xa0(%rsi), %xmm0
movups %xmm0, 0xa0(%rbx)
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0xd0(%rsi)
movb 0x40(%rsp), %al
movb %al, 0xe0(%rsi)
movups 0x18(%rsp), %xmm0
movups %xmm0, 0xb8(%rsi)
movq 0x28(%rsp), %rax
movq %rax, 0xc8(%rsi)
movaps (%rsp), %xmm0
movups %xmm0, 0xa0(%rsi)
movq 0x10(%rsp), %rax
movq %rax, 0xb0(%rsi)
movq 0xc0(%rbx), %rax
imulq 0xd8(%rbx), %rax
imulq 0xa8(%rbx), %rax
testq %rax, %rax
jg 0x4f1f9
movq %rbx, %rax
addq $0x50, %rsp
popq %rbx
retq
leaq 0x53ffe(%rip), %rdi     # 0xa31fe
leaq 0x53f16(%rip), %rsi     # 0xa311d
leaq 0x6088c(%rip), %rcx     # 0xafa9a
movl $0x9a3, %edx            # imm = 0x9A3
callq 0x2100