// File: /workspace/github_cpp_makefile_star2_O2/Konano[P]UselessDatabase/./json.hpp
// Function: std::pair<bool, 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>*> nlohmann::detail::json_sax_dom_callback_parser<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>>::handle_value<nlohmann::detail::value_t>(nlohmann::detail::value_t&&, bool)
std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
    {
        assert(not keep_stack.empty());

        // do not handle this value if we know it would be added to a discarded
        // container
        if (not keep_stack.back())
        {
            return {false, nullptr};
        }

        // create value
        auto value = BasicJsonType(std::forward<Value>(v));

        // check callback
        const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);

        // do not handle this value if we just learnt it shall be discarded
        if (not keep)
        {
            return {false, nullptr};
        }

        if (ref_stack.empty())
        {
            root = std::move(value);
            return {true, &root};
        }

        // skip this value if we already decided to skip the parent
        // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
        if (not ref_stack.back())
        {
            return {false, nullptr};
        }

        // we now only expect arrays and objects
        assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());

        // array
        if (ref_stack.back()->is_array())
        {
            ref_stack.back()->m_value.array->push_back(std::move(value));
            return {true, &(ref_stack.back()->m_value.array->back())};
        }

        // object
        assert(ref_stack.back()->is_object());
        // check if we should store an element for the current key
        assert(not key_keep_stack.empty());
        const bool store_element = key_keep_stack.back();
        key_keep_stack.pop_back();

        if (not store_element)
        {
            return {false, nullptr};
        }

        assert(object_element);
        *object_element = std::move(value);
        return {true, object_element};
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x38, %rsp
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x20(%rdi), %rax
cmpq 0x30(%rdi), %rax
jne 0x11178
cmpl $0x0, 0x38(%rbx)
je 0x112d1
leaq 0x20(%rbx), %rdi
callq 0x11100
testq %rdx, (%rax)
je 0x11214
movzbl (%r14), %esi
leaq 0x8(%rsp), %rdi
callq 0xf988
testb %bpl, %bpl
jne 0x111c5
leaq 0x80(%rbx), %rdi
movq 0x10(%rbx), %rsi
subq 0x8(%rbx), %rsi
shrq $0x3, %rsi
pushq $0x5
popq %rdx
leaq 0x8(%rsp), %rcx
callq 0x1112e
testb %al, %al
je 0x112b2
movq 0x10(%rbx), %rax
cmpq %rax, 0x8(%rbx)
je 0x1121e
movq -0x8(%rax), %rax
testq %rax, %rax
je 0x112b2
movzbl (%rax), %ecx
cmpl $0x1, %ecx
je 0x11248
cmpl $0x2, %ecx
jne 0x112f0
movq 0x8(%rax), %rdi
leaq 0x8(%rsp), %rsi
callq 0xc1ae
movq 0x10(%rbx), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %r14
addq $-0x10, %r14
jmp 0x112ae
xorl %ebx, %ebx
xorl %r14d, %r14d
jmp 0x112c1
leaq 0x28(%rsp), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xc05e
movq (%rbx), %rdi
movq %r14, %rsi
callq 0x7da0
movq %r14, %rdi
callq 0x7de0
movq (%rbx), %r14
jmp 0x112ae
movq 0x48(%rbx), %rax
cmpq 0x58(%rbx), %rax
jne 0x1125c
cmpl $0x0, 0x60(%rbx)
je 0x1130f
leaq 0x48(%rbx), %rdi
callq 0x11100
movq %rdx, %r14
leaq 0x58(%rbx), %rdi
movq (%rax), %r15
callq 0x1085a
testq %r14, %r15
je 0x112b2
cmpq $0x0, 0x70(%rbx)
je 0x1132e
leaq 0x18(%rsp), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xc05e
movq 0x70(%rbx), %rdi
movq %r14, %rsi
callq 0x7da0
movq %r14, %rdi
callq 0x7de0
movq 0x70(%rbx), %r14
movb $0x1, %bl
jmp 0x112b7
xorl %ebx, %ebx
xorl %r14d, %r14d
leaq 0x8(%rsp), %rdi
callq 0x7de0
movl %ebx, %eax
movq %r14, %rdx
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x247d3(%rip), %rdi     # 0x35aab
leaq 0x2251b(%rip), %rsi     # 0x337fa
leaq 0x247dc(%rip), %rcx     # 0x35ac2
movl $0x12fa, %edx           # imm = 0x12FA
callq 0x52c0
leaq 0x248a3(%rip), %rdi     # 0x35b9a
leaq 0x224fc(%rip), %rsi     # 0x337fa
leaq 0x247bd(%rip), %rcx     # 0x35ac2
movl $0x131d, %edx           # imm = 0x131D
callq 0x52c0
leaq 0x248c2(%rip), %rdi     # 0x35bd8
leaq 0x224dd(%rip), %rsi     # 0x337fa
leaq 0x2479e(%rip), %rcx     # 0x35ac2
movl $0x1329, %edx           # imm = 0x1329
callq 0x52c0
leaq 0x248be(%rip), %rdi     # 0x35bf3
leaq 0x224be(%rip), %rsi     # 0x337fa
leaq 0x2477f(%rip), %rcx     # 0x35ac2
movl $0x1332, %edx           # imm = 0x1332
callq 0x52c0
jmp 0x1134f
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x7de0
movq %rbx, %rdi
callq 0x56f0