// File: 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
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movb %dl, %al
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x18(%rbp), %rdi
movq %rdi, -0x108(%rbp)
addq $0x20, %rdi
callq 0x2a5c0
xorb $-0x1, %al
testb $0x1, %al
jne 0x2a776
jmp 0x2a778
jmp 0x2a797
leaq 0x56efb(%rip), %rdi     # 0x8167a
leaq 0x543bb(%rip), %rsi     # 0x7eb41
movl $0x12fa, %edx           # imm = 0x12FA
leaq 0x56eff(%rip), %rcx     # 0x81691
callq 0x6350
movq -0x108(%rbp), %rdi
addq $0x20, %rdi
callq 0x2a640
movq %rax, -0x38(%rbp)
movq %rdx, -0x30(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x28960
xorb $-0x1, %al
testb $0x1, %al
jne 0x2a7c0
jmp 0x2a7e2
movb $0x0, -0x39(%rbp)
movq $0x0, -0x48(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x39(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x2ad80
jmp 0x2ac3a
movq -0x20(%rbp), %rax
leaq -0x58(%rbp), %rdi
movzbl (%rax), %esi
callq 0x25c80
movb $0x1, %al
testb $0x1, -0x21(%rbp)
movb %al, -0x109(%rbp)
jne 0x2a84b
movq -0x108(%rbp), %rdi
movq %rdi, %rax
subq $-0x80, %rax
movq %rax, -0x118(%rbp)
addq $0x8, %rdi
callq 0x2a720
movq -0x118(%rbp), %rdi
movl %eax, %esi
movl $0x5, %edx
leaq -0x58(%rbp), %rcx
callq 0x2a6d0
movb %al, -0x10a(%rbp)
jmp 0x2a83d
movb -0x10a(%rbp), %al
movb %al, -0x109(%rbp)
jmp 0x2a84b
movb -0x109(%rbp), %al
andb $0x1, %al
movb %al, -0x59(%rbp)
testb $0x1, -0x59(%rbp)
jne 0x2a8a1
movb $0x0, -0x6d(%rbp)
movq $0x0, -0x78(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x6d(%rbp), %rsi
leaq -0x78(%rbp), %rdx
callq 0x2ad80
jmp 0x2a87b
movl $0x1, -0x7c(%rbp)
jmp 0x2ac31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb110
jmp 0x2ac4a
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2adb0
testb $0x1, %al
jne 0x2a8b7
jmp 0x2a92d
leaq -0x90(%rbp), %rdi
movq %rdi, -0x120(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x18380
movq -0x120(%rbp), %rsi
movq -0x108(%rbp), %rax
movq (%rax), %rdi
callq 0xb0a0
movq -0x120(%rbp), %rdi
callq 0xb110
movq -0x108(%rbp), %rax
movb $0x1, -0x91(%rbp)
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x91(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x2adf0
jmp 0x2a921
movl $0x1, -0x7c(%rbp)
jmp 0x2ac31
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2acd0
cmpq $0x0, (%rax)
jne 0x2a97a
movb $0x0, -0xa1(%rbp)
movq $0x0, -0xb0(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xa1(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0x2ad80
jmp 0x2a96e
movl $0x1, -0x7c(%rbp)
jmp 0x2ac31
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2acd0
movq (%rax), %rdi
callq 0x18420
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x121(%rbp)
jne 0x2a9bf
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2acd0
movq (%rax), %rdi
callq 0x18460
movb %al, -0x121(%rbp)
movb -0x121(%rbp), %al
testb $0x1, %al
jne 0x2a9cb
jmp 0x2a9cd
jmp 0x2a9ec
leaq 0x56d95(%rip), %rdi     # 0x81769
leaq 0x54166(%rip), %rsi     # 0x7eb41
movl $0x131d, %edx           # imm = 0x131D
leaq 0x56caa(%rip), %rcx     # 0x81691
callq 0x6350
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2acd0
movq (%rax), %rdi
callq 0x18420
testb $0x1, %al
jne 0x2aa0a
jmp 0x2aa7b
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2acd0
movq (%rax), %rax
movq 0x8(%rax), %rdi
leaq -0x58(%rbp), %rsi
callq 0x18320
jmp 0x2aa2c
movq -0x108(%rbp), %rdi
movb $0x1, -0xb1(%rbp)
addq $0x8, %rdi
callq 0x2acd0
movq (%rax), %rax
movq 0x8(%rax), %rdi
callq 0x147d0
movq %rax, -0xc0(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xb1(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x2adf0
jmp 0x2aa6f
movl $0x1, -0x7c(%rbp)
jmp 0x2ac31
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x2acd0
movq (%rax), %rdi
callq 0x18460
testb $0x1, %al
jne 0x2aa99
jmp 0x2aa9b
jmp 0x2aaba
leaq 0x56ce7(%rip), %rdi     # 0x81789
leaq 0x54098(%rip), %rsi     # 0x7eb41
movl $0x1327, %edx           # imm = 0x1327
leaq 0x56bdc(%rip), %rcx     # 0x81691
callq 0x6350
movq -0x108(%rbp), %rdi
addq $0x48, %rdi
callq 0x2a5c0
xorb $-0x1, %al
testb $0x1, %al
jne 0x2aad2
jmp 0x2aad4
jmp 0x2aaf3
leaq 0x56ccc(%rip), %rdi     # 0x817a7
leaq 0x5405f(%rip), %rsi     # 0x7eb41
movl $0x1329, %edx           # imm = 0x1329
leaq 0x56ba3(%rip), %rcx     # 0x81691
callq 0x6350
movq -0x108(%rbp), %rdi
addq $0x48, %rdi
callq 0x2a640
movq %rdx, -0x138(%rbp)
movq %rax, -0x130(%rbp)
jmp 0x2ab13
movq -0x138(%rbp), %rax
movq -0x130(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movq %rax, -0xd0(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x28960
movq -0x108(%rbp), %rdi
movb %al, -0xc1(%rbp)
addq $0x48, %rdi
callq 0x2a6b0
jmp 0x2ab53
testb $0x1, -0xc1(%rbp)
jne 0x2ab93
movb $0x0, -0xd9(%rbp)
movq $0x0, -0xe8(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xd9(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0x2ad80
jmp 0x2ab87
movl $0x1, -0x7c(%rbp)
jmp 0x2ac31
movq -0x108(%rbp), %rax
cmpq $0x0, 0x70(%rax)
je 0x2aba3
jmp 0x2abc2
leaq 0x56c18(%rip), %rdi     # 0x817c2
leaq 0x53f90(%rip), %rsi     # 0x7eb41
movl $0x1332, %edx           # imm = 0x1332
leaq 0x56ad4(%rip), %rcx     # 0x81691
callq 0x6350
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x148(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x18380
movq -0x108(%rbp), %rax
movq -0x148(%rbp), %rsi
movq %rax, %rcx
addq $0x70, %rcx
movq %rcx, -0x140(%rbp)
movq 0x70(%rax), %rdi
callq 0xb0a0
movq -0x148(%rbp), %rdi
callq 0xb110
movq -0x140(%rbp), %rdx
movb $0x1, -0xf9(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xf9(%rbp), %rsi
callq 0x2ae20
jmp 0x2ac2a
movl $0x1, -0x7c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb110
movb -0x10(%rbp), %al
movq -0x8(%rbp), %rdx
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x6890
nopw %cs:(%rax,%rax)
nopl (%rax)