// File: xelia-it[P]mustache/test/src/../../src/../third-party/json/single_include/nlohmann/json.hpp
// Function: std::pair<bool, 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>*> nlohmann::json_abi_v3_11_2::detail::json_sax_dom_callback_parser<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>>::handle_value<nlohmann::json_abi_v3_11_2::detail::value_t>(nlohmann::json_abi_v3_11_2::detail::value_t&&, bool)
std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
    {
        JSON_ASSERT(!keep_stack.empty());

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

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

        // check callback
        const bool keep = skip_callback || 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 (!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 (!ref_stack.back())
        {
            return {false, nullptr};
        }

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

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

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

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

        JSON_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 0x11ceb0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11d066
jmp 0x11d068
jmp 0x11d087
leaq 0x2984a(%rip), %rdi     # 0x1468b9
leaq 0x27870(%rip), %rsi     # 0x1448e6
movl $0x1be6, %edx           # imm = 0x1BE6
leaq 0x2984b(%rip), %rcx     # 0x1468cd
callq 0x524b0
movq -0x108(%rbp), %rdi
addq $0x20, %rdi
callq 0x11cf30
movq %rax, -0x38(%rbp)
movq %rdx, -0x30(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x11b1c0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11d0b0
jmp 0x11d0d2
movb $0x0, -0x39(%rbp)
movq $0x0, -0x48(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x39(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x11d9b0
jmp 0x11d52a
movq -0x20(%rbp), %rax
leaq -0x58(%rbp), %rdi
movzbl (%rax), %esi
callq 0x1185d0
movb $0x1, %al
testb $0x1, -0x21(%rbp)
movb %al, -0x109(%rbp)
jne 0x11d13b
movq -0x108(%rbp), %rdi
movq %rdi, %rax
subq $-0x80, %rax
movq %rax, -0x118(%rbp)
addq $0x8, %rdi
callq 0x11d010
movq -0x118(%rbp), %rdi
movl %eax, %esi
movl $0x5, %edx
leaq -0x58(%rbp), %rcx
callq 0x11cfc0
movb %al, -0x10a(%rbp)
jmp 0x11d12d
movb -0x10a(%rbp), %al
movb %al, -0x109(%rbp)
jmp 0x11d13b
movb -0x109(%rbp), %al
andb $0x1, %al
movb %al, -0x59(%rbp)
testb $0x1, -0x59(%rbp)
jne 0x11d191
movb $0x0, -0x6d(%rbp)
movq $0x0, -0x78(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x6d(%rbp), %rsi
leaq -0x78(%rbp), %rdx
callq 0x11d9b0
jmp 0x11d16b
movl $0x1, -0x7c(%rbp)
jmp 0x11d521
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x110640
jmp 0x11d53a
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d9e0
testb $0x1, %al
jne 0x11d1a7
jmp 0x11d21d
leaq -0x90(%rbp), %rdi
movq %rdi, -0x120(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x11da20
movq -0x120(%rbp), %rsi
movq -0x108(%rbp), %rax
movq (%rax), %rdi
callq 0x118610
movq -0x120(%rbp), %rdi
callq 0x110640
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 0x11daa0
jmp 0x11d211
movl $0x1, -0x7c(%rbp)
jmp 0x11d521
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
cmpq $0x0, (%rax)
jne 0x11d26a
movb $0x0, -0xa1(%rbp)
movq $0x0, -0xb0(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xa1(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0x11d9b0
jmp 0x11d25e
movl $0x1, -0x7c(%rbp)
jmp 0x11d521
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11dad0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x121(%rbp)
jne 0x11d2af
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11daf0
movb %al, -0x121(%rbp)
movb -0x121(%rbp), %al
testb $0x1, %al
jne 0x11d2bb
jmp 0x11d2bd
jmp 0x11d2dc
leaq 0x296e1(%rip), %rdi     # 0x1469a5
leaq 0x2761b(%rip), %rsi     # 0x1448e6
movl $0x1c09, %edx           # imm = 0x1C09
leaq 0x295f6(%rip), %rcx     # 0x1468cd
callq 0x524b0
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11dad0
testb $0x1, %al
jne 0x11d2fa
jmp 0x11d36b
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rax
movq 0x8(%rax), %rdi
leaq -0x58(%rbp), %rsi
callq 0x11db10
jmp 0x11d31c
movq -0x108(%rbp), %rdi
movb $0x1, -0xb1(%rbp)
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rax
movq 0x8(%rax), %rdi
callq 0x11db80
movq %rax, -0xc0(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xb1(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x11daa0
jmp 0x11d35f
movl $0x1, -0x7c(%rbp)
jmp 0x11d521
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11daf0
testb $0x1, %al
jne 0x11d389
jmp 0x11d38b
jmp 0x11d3aa
leaq 0x29633(%rip), %rdi     # 0x1469c5
leaq 0x2754d(%rip), %rsi     # 0x1448e6
movl $0x1c13, %edx           # imm = 0x1C13
leaq 0x29528(%rip), %rcx     # 0x1468cd
callq 0x524b0
movq -0x108(%rbp), %rdi
addq $0x48, %rdi
callq 0x11ceb0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11d3c2
jmp 0x11d3c4
jmp 0x11d3e3
leaq 0x29618(%rip), %rdi     # 0x1469e3
leaq 0x27514(%rip), %rsi     # 0x1448e6
movl $0x1c15, %edx           # imm = 0x1C15
leaq 0x294ef(%rip), %rcx     # 0x1468cd
callq 0x524b0
movq -0x108(%rbp), %rdi
addq $0x48, %rdi
callq 0x11cf30
movq %rdx, -0x138(%rbp)
movq %rax, -0x130(%rbp)
jmp 0x11d403
movq -0x138(%rbp), %rax
movq -0x130(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movq %rax, -0xd0(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x11b1c0
movq -0x108(%rbp), %rdi
movb %al, -0xc1(%rbp)
addq $0x48, %rdi
callq 0x11cfa0
jmp 0x11d443
testb $0x1, -0xc1(%rbp)
jne 0x11d483
movb $0x0, -0xd9(%rbp)
movq $0x0, -0xe8(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xd9(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0x11d9b0
jmp 0x11d477
movl $0x1, -0x7c(%rbp)
jmp 0x11d521
movq -0x108(%rbp), %rax
cmpq $0x0, 0x70(%rax)
je 0x11d493
jmp 0x11d4b2
leaq 0x29561(%rip), %rdi     # 0x1469fb
leaq 0x27445(%rip), %rsi     # 0x1448e6
movl $0x1c1e, %edx           # imm = 0x1C1E
leaq 0x29420(%rip), %rcx     # 0x1468cd
callq 0x524b0
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x148(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x11da20
movq -0x108(%rbp), %rax
movq -0x148(%rbp), %rsi
movq %rax, %rcx
addq $0x70, %rcx
movq %rcx, -0x140(%rbp)
movq 0x70(%rax), %rdi
callq 0x118610
movq -0x148(%rbp), %rdi
callq 0x110640
movq -0x140(%rbp), %rdx
movb $0x1, -0xf9(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0xf9(%rbp), %rsi
callq 0x11dbc0
jmp 0x11d51a
movl $0x1, -0x7c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x110640
movb -0x10(%rbp), %al
movq -0x8(%rbp), %rdx
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x52c90
nopw %cs:(%rax,%rax)
nopl (%rax)