// File: xelia-it[P]mustache/test/src/../../src/../third-party/json/single_include/nlohmann/json.hpp
// Function: 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>>::end_object()
bool end_object()
    {
        if (ref_stack.back())
        {
            if (!callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
            {
                // discard object
                *ref_stack.back() = discarded;
            }
            else
            {
                ref_stack.back()->set_parents();
            }
        }

        JSON_ASSERT(!ref_stack.empty());
        JSON_ASSERT(!keep_stack.empty());
        ref_stack.pop_back();
        keep_stack.pop_back();

        if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured())
        {
            // remove discarded value
            for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
            {
                if (it->is_discarded())
                {
                    ref_stack.back()->erase(it);
                    break;
                }
            }
        }

        return true;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
addq $0x8, %rdi
callq 0x11d5c0
cmpq $0x0, (%rax)
je 0x11c2fc
movq -0xa0(%rbp), %rdi
movq %rdi, %rax
addq $0x80, %rax
movq %rax, -0xb0(%rbp)
addq $0x8, %rdi
callq 0x11d010
movq -0xa0(%rbp), %rdi
subl $0x1, %eax
movl %eax, -0xa4(%rbp)
addq $0x8, %rdi
callq 0x11d5c0
movq -0xb0(%rbp), %rdi
movl -0xa4(%rbp), %esi
movq (%rax), %rcx
movl $0x1, %edx
callq 0x11cfc0
testb $0x1, %al
jne 0x11c2e2
movq -0xa0(%rbp), %rsi
addq $0xa8, %rsi
leaq -0x18(%rbp), %rdi
callq 0x11f0c0
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
leaq -0x18(%rbp), %rsi
callq 0x118610
leaq -0x18(%rbp), %rdi
callq 0x110640
jmp 0x11c2fa
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11dcc0
jmp 0x11c2fc
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d9e0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11c314
jmp 0x11c316
jmp 0x11c335
leaq 0x2a6fa(%rip), %rdi     # 0x146a17
leaq 0x285c2(%rip), %rsi     # 0x1448e6
movl $0x1b7b, %edx           # imm = 0x1B7B
leaq 0x2a6fa(%rip), %rcx     # 0x146a2a
callq 0x524b0
movq -0xa0(%rbp), %rdi
addq $0x20, %rdi
callq 0x11ceb0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11c34d
jmp 0x11c34f
jmp 0x11c36e
leaq 0x2a563(%rip), %rdi     # 0x1468b9
leaq 0x28589(%rip), %rsi     # 0x1448e6
movl $0x1b7c, %edx           # imm = 0x1B7C
leaq 0x2a6c1(%rip), %rcx     # 0x146a2a
callq 0x524b0
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11f250
movq -0xa0(%rbp), %rdi
addq $0x20, %rdi
callq 0x11cfa0
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d9e0
testb $0x1, %al
jne 0x11c495
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
cmpq $0x0, (%rax)
je 0x11c495
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11f280
testb $0x1, %al
jne 0x11c3e1
jmp 0x11c495
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rsi
leaq -0x38(%rbp), %rdi
callq 0x11f2c0
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rsi
leaq -0x58(%rbp), %rdi
callq 0x11f330
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x11f300
testb $0x1, %al
jne 0x11c42c
jmp 0x11c493
leaq -0x38(%rbp), %rdi
callq 0x11f370
movq %rax, %rdi
callq 0x118690
testb $0x1, %al
jne 0x11c443
jmp 0x11c483
movq -0xa0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x11fac0
movq -0xb8(%rbp), %rsi
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0x11f5c0
jmp 0x11c493
jmp 0x11c485
leaq -0x38(%rbp), %rdi
callq 0x11fb00
jmp 0x11c3fd
jmp 0x11c495
movb $0x1, %al
andb $0x1, %al
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)