// File: Konano[P]UselessDatabase/./json.hpp
// Function: nlohmann::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::adl_serializer>::basic_json(nlohmann::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::adl_serializer> const&)
basic_json(const basic_json& 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;
            }

            default:
                break;
        }

        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, -0x58(%rbp)
movq -0x10(%rbp), %rcx
movb (%rcx), %cl
movb %cl, (%rax)
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rdi
callq 0x17ae0
movq -0x58(%rbp), %rax
movb (%rax), %al
decb %al
movzbl %al, %ecx
movq %rcx, -0x50(%rbp)
subb $0x6, %al
ja 0xb843
movq -0x50(%rbp), %rax
leaq 0x728b1(%rip), %rcx     # 0x7e004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x18(%rbp), %rdi
callq 0x1e2e0
movq -0x58(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x20(%rbp), %rdi
callq 0x1e320
movq -0x58(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x1e360
movq -0x58(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
movq -0x10(%rbp), %rax
movb 0x8(%rax), %al
leaq -0x30(%rbp), %rdi
andb $0x1, %al
movzbl %al, %esi
callq 0x1e3a0
movq -0x58(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x38(%rbp), %rdi
callq 0x1e3c0
movq -0x58(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x40(%rbp), %rdi
callq 0x1e2c0
movq -0x58(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
movq -0x10(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x48(%rbp), %rdi
callq 0x1e3e0
movq -0x58(%rbp), %rax
movq -0x48(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0xb845
jmp 0xb845
movq -0x58(%rbp), %rdi
callq 0x17ae0
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop