// File: xelia-it[P]mustache/test/src/../../src/../third-party/json/single_include/nlohmann/json.hpp
// Function: nlohmann::json_abi_v3_11_2::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_2::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>::basic_json(nlohmann::json_abi_v3_11_2::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_2::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&)
basic_json(const basic_json& other)
        : json_base_class_t(other),
          m_type(other.m_type)
    {
        // check of passed value is valid
        other.assert_invariant();

        switch (m_type)
        {
            case value_t::object:
            {
                m_value = *other.m_value.object;
                break;
            }

            case value_t::array:
            {
                m_value = *other.m_value.array;
                break;
            }

            case value_t::string:
            {
                m_value = *other.m_value.string;
                break;
            }

            case value_t::boolean:
            {
                m_value = other.m_value.boolean;
                break;
            }

            case value_t::number_integer:
            {
                m_value = other.m_value.number_integer;
                break;
            }

            case value_t::number_unsigned:
            {
                m_value = other.m_value.number_unsigned;
                break;
            }

            case value_t::number_float:
            {
                m_value = other.m_value.number_float;
                break;
            }

            case value_t::binary:
            {
                m_value = *other.m_value.binary;
                break;
            }

            case value_t::null:
            case value_t::discarded:
            default:
                break;
        }

        set_parents();
        assert_invariant();
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rcx
movb (%rcx), %cl
movb %cl, (%rax)
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x111360
movq -0x60(%rbp), %rax
movzbl (%rax), %eax
movq %rax, -0x58(%rbp)
subq $0x9, %rax
ja 0x11f22a
movq -0x58(%rbp), %rax
leaq 0x25326(%rip), %rcx     # 0x14443c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x18(%rbp), %rdi
callq 0x11fbb0
movq -0x60(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x20(%rbp), %rdi
callq 0x11fbf0
movq -0x60(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x11fc30
movq -0x60(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movb 0x8(%rax), %al
leaq -0x30(%rbp), %rdi
andb $0x1, %al
movzbl %al, %esi
callq 0x11fc70
movq -0x60(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x38(%rbp), %rdi
callq 0x11fc90
movq -0x60(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x40(%rbp), %rdi
callq 0x11fcb0
movq -0x60(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x48(%rbp), %rdi
callq 0x11fcd0
movq -0x60(%rbp), %rax
movq -0x48(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0x11fcf0
movq -0x60(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x11f22c
jmp 0x11f22a
jmp 0x11f22c
movq -0x60(%rbp), %rdi
callq 0x11dcc0
movq -0x60(%rbp), %rdi
movl $0x1, %esi
callq 0x111360
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)