// File: /workspace/github_cpp_makefile_star2_O3/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<double&>(double&, 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 %r12
pushq %rbx
subq $0x40, %rsp
movl %edx, %ebp
movq %rdi, %rbx
movq 0x30(%rdi), %rax
movl 0x38(%rdi), %ecx
cmpq %rax, 0x20(%rdi)
sete %dl
testl %ecx, %ecx
sete %dil
andb %dl, %dil
cmpb $0x1, %dil
je 0x1482b
movl %ecx, %ecx
movabsq $-0x8000000000000000, %r15 # imm = 0x8000000000000000
leaq -0x1(%rcx), %rdx
addq $0x3e, %rcx
testq %rdx, %rdx
cmovnsq %rdx, %rcx
sarq $0x6, %rcx
leaq (%rax,%rcx,8), %rax
leaq 0x3f(%r15), %rcx
andq %rdx, %rcx
xorl %edi, %edi
cmpq %r15, %rcx
setbe %dil
movq -0x8(%rax,%rdi,8), %rax
btq %rdx, %rax
jae 0x14654
movsd (%rsi), %xmm0
leaq 0x8(%rsp), %r14
movb $0x7, (%r14)
movsd %xmm0, 0x8(%r14)
movq %r14, %rdi
callq 0xd118
movq %r14, %rdi
callq 0xd118
testb %bpl, %bpl
jne 0x14601
movq 0x10(%rbx), %rax
subq 0x8(%rbx), %rax
shrq $0x3, %rax
movl %eax, 0x1c(%rsp)
movb $0x5, 0x7(%rsp)
cmpq $0x0, 0x90(%rbx)
je 0x1484a
leaq 0x80(%rbx), %rdi
leaq 0x1c(%rsp), %rsi
leaq 0x7(%rsp), %rdx
leaq 0x8(%rsp), %rcx
callq *0x98(%rbx)
testb %al, %al
je 0x147f5
movq 0x10(%rbx), %rax
cmpq %rax, 0x8(%rbx)
je 0x1465e
movq -0x8(%rax), %rax
testq %rax, %rax
je 0x147f5
movzbl (%rax), %ecx
cmpl $0x1, %ecx
je 0x146e6
cmpl $0x2, %ecx
jne 0x1484f
movq 0x8(%rax), %rdi
leaq 0x8(%rsp), %rsi
callq 0xd5e8
movq 0x10(%rbx), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %r14
addq $-0x10, %r14
jmp 0x147f1
xorl %ebx, %ebx
xorl %r14d, %r14d
jmp 0x14819
leaq 0x8(%rsp), %r15
movb (%r15), %al
leaq 0x38(%rsp), %r14
movb %al, -0x8(%r14)
movq 0x8(%r15), %rax
movq %rax, (%r14)
movq %r15, %rdi
callq 0xd118
movb $0x0, (%r15)
movq $0x0, 0x8(%r15)
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0xd118
movq (%rbx), %r12
movq %r15, %rdi
callq 0xd118
movb (%r12), %al
movb (%r15), %cl
movb %cl, (%r12)
movb %al, (%r15)
movq 0x8(%r12), %rax
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%r12)
movq %rax, 0x8(%r15)
movq %r12, %rdi
callq 0xd118
movq %r15, %rdi
callq 0xd118
movzbl (%r15), %esi
movq %r14, %rdi
callq 0xd1ba
movq (%rbx), %r14
jmp 0x147f1
movq 0x58(%rbx), %rax
movl 0x60(%rbx), %ecx
cmpq %rax, 0x48(%rbx)
sete %dl
testl %ecx, %ecx
sete %sil
andb %dl, %sil
cmpb $0x1, %sil
je 0x1486e
movl %ecx, %esi
leaq -0x1(%rsi), %rcx
movq %rsi, %rdx
addq $0x3e, %rdx
testq %rcx, %rcx
cmovnsq %rcx, %rdx
sarq $0x6, %rdx
leaq (%rax,%rdx,8), %rdi
leaq 0x3f(%r15), %rdx
andq %rcx, %rdx
xorl %r8d, %r8d
cmpq %r15, %rdx
setbe %r8b
movl $0x1, %edx
shlq %cl, %rdx
andq -0x8(%rdi,%r8,8), %rdx
subl $0x1, %esi
movl %esi, 0x60(%rbx)
jae 0x14758
movl $0x3f, 0x60(%rbx)
addq $-0x8, %rax
movq %rax, 0x58(%rbx)
testq %rdx, %rdx
je 0x147f5
cmpq $0x0, 0x70(%rbx)
je 0x1488d
leaq 0x8(%rsp), %r15
movb (%r15), %al
leaq 0x28(%rsp), %r14
movb %al, -0x8(%r14)
movq 0x8(%r15), %rax
movq %rax, (%r14)
movq %r15, %rdi
callq 0xd118
movb $0x0, (%r15)
movq $0x0, 0x8(%r15)
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0xd118
movq 0x70(%rbx), %r12
movq %r15, %rdi
callq 0xd118
movb (%r12), %al
movb (%r15), %cl
movb %cl, (%r12)
movb %al, (%r15)
movq 0x8(%r12), %rax
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%r12)
movq %rax, 0x8(%r15)
movq %r12, %rdi
callq 0xd118
movq %r15, %rdi
callq 0xd118
movzbl (%r15), %esi
movq %r14, %rdi
callq 0xd1ba
movq 0x70(%rbx), %r14
movb $0x1, %bl
jmp 0x147fa
xorl %ebx, %ebx
xorl %r14d, %r14d
leaq 0x10(%rsp), %r15
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0xd118
movzbl (%r12), %esi
movq %r15, %rdi
callq 0xd1ba
movl %ebx, %eax
movq %r14, %rdx
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x29eb4(%rip), %rdi     # 0x3e6e6
leaq 0x27fc1(%rip), %rsi     # 0x3c7fa
leaq 0x2a4d4(%rip), %rcx     # 0x3ed14
movl $0x12fa, %edx           # imm = 0x12FA
callq 0x5280
callq 0x51a0
leaq 0x29f7f(%rip), %rdi     # 0x3e7d5
leaq 0x27f9d(%rip), %rsi     # 0x3c7fa
leaq 0x2a4b0(%rip), %rcx     # 0x3ed14
movl $0x131d, %edx           # imm = 0x131D
callq 0x5280
leaq 0x29f9e(%rip), %rdi     # 0x3e813
leaq 0x27f7e(%rip), %rsi     # 0x3c7fa
leaq 0x2a491(%rip), %rcx     # 0x3ed14
movl $0x1329, %edx           # imm = 0x1329
callq 0x5280
leaq 0x29f9a(%rip), %rdi     # 0x3e82e
leaq 0x27f5f(%rip), %rsi     # 0x3c7fa
leaq 0x2a472(%rip), %rcx     # 0x3ed14
movl $0x1332, %edx           # imm = 0x1332
callq 0x5280
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x907c
movq %rbx, %rdi
callq 0x56e0
nop