// File: /workspace/github_cpp_makefile_star2_O3/oknenavin[P]cxon/test/../src/cxon/lang/common/node-value.hxx
// Function: std::enable_if<!std::is_void<std::map<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>, std::less<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>, std::allocator<std::pair<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>> const, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>>>>::value && !std::is_void<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>::value && !std::integral_constant<bool, false>::value, void>::type cxon::value::controller<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>::ndes_<std::map<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>, std::less<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>, std::allocator<std::pair<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>> const, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>::swap<std::map<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>, std::less<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>, std::allocator<std::pair<cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>> const, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>>>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>&, cxon::cbor::basic_node<cxon::cbor::node_traits<std::allocator<char>>>&)
static auto swap(N& f, N& s) -> enable_if_t<!std::is_void<U>::value && !std::is_void<V>::value && !propagate_on_container_swap::value> {
                                    auto t = std::move(get<U>(f));
                                    destruct<U>(f); construct<V>(f, std::move(get<V>(s)));
                                    destruct<V>(s); construct<U>(s, std::move(t));
                                    swap_(f.kind_, s.kind_);
                                }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rdi), %rdi
leaq 0x8(%rsp), %r15
movq 0x10(%rdi), %rcx
testq %rcx, %rcx
je 0x3c95d
leaq 0x8(%rdi), %rdx
movl 0x8(%rdi), %eax
movq %rcx, 0x10(%rsp)
movups 0x18(%rdi), %xmm0
movups %xmm0, 0x18(%rsp)
movq %r15, 0x8(%rcx)
leaq 0x28(%rdi), %rcx
movq 0x28(%rdi), %rsi
movq %rsi, 0x28(%rsp)
movq $0x0, 0x10(%rdi)
movq %rdx, 0x18(%rdi)
movq %rdx, 0x20(%rdi)
movq (%r14), %rdi
jmp 0x3c974
leaq 0x28(%rsp), %rcx
movq $0x0, -0x18(%rcx)
movq %r15, -0x10(%rcx)
movq %r15, -0x8(%rcx)
xorl %eax, %eax
movq $0x0, (%rcx)
movl %eax, 0x8(%rsp)
callq 0x33ada
movq (%r14), %rdi
callq 0x4220
leaq 0x10(%r14), %rcx
movq %rcx, (%r14)
movq (%rbx), %rdx
leaq 0x10(%rbx), %rax
cmpq %rax, %rdx
je 0x3c9ba
movq %rdx, (%r14)
movq 0x8(%rbx), %rcx
movq %rcx, 0x8(%r14)
movq 0x10(%rbx), %rcx
movq %rcx, 0x10(%r14)
movq %rax, (%rbx)
movq %rax, %rcx
jmp 0x3c9cb
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq 0x8(%rbx), %rcx
movq %rcx, 0x8(%r14)
movq (%rbx), %rcx
movq $0x0, 0x8(%rbx)
movb $0x0, (%rcx)
movq (%rbx), %rdi
cmpq %rax, %rdi
je 0x3c9e3
callq 0x4220
movl $0x30, %edi
callq 0x4230
movq %rax, (%rbx)
leaq 0x8(%rax), %rcx
movq 0x10(%rsp), %r8
testq %r8, %r8
je 0x3ca32
leaq 0x28(%rsp), %rdx
movl -0x20(%rdx), %esi
movq %r8, 0x10(%rax)
movq -0x10(%rdx), %r9
movq -0x8(%rdx), %rdi
movq %rcx, 0x8(%r8)
movq (%rdx), %rcx
movq %rcx, 0x28(%rax)
movq $0x0, -0x18(%rdx)
movq %r15, -0x10(%rdx)
movq %r15, -0x8(%rdx)
movq %r9, %rcx
jmp 0x3ca46
movq $0x0, 0x10(%rax)
movq %rax, %rdx
addq $0x28, %rdx
xorl %esi, %esi
movq %rcx, %rdi
movq %rcx, 0x18(%rax)
movq %rdi, 0x20(%rax)
movq $0x0, (%rdx)
movl %esi, 0x8(%rax)
movl 0x20(%r14), %eax
movl 0x20(%rbx), %ecx
movl %ecx, 0x20(%r14)
movl %eax, 0x20(%rbx)
movq %rsp, %rdi
callq 0x33ada
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x33ada
movq %rbx, %rdi
callq 0x43b0
nop