// 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_array()
bool end_array()
    {
        bool keep = true;

        if (ref_stack.back())
        {
            keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
            if (keep)
            {
                ref_stack.back()->set_parents();
            }
            else
            {
                // discard array
                *ref_stack.back() = discarded;
            }
        }

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

        // remove discarded value
        if (!keep && !ref_stack.empty() && ref_stack.back()->is_array())
        {
            ref_stack.back()->m_value.array->pop_back();
        }

        return true;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
movb $0x1, -0x9(%rbp)
addq $0x8, %rdi
callq 0x11d5c0
cmpq $0x0, (%rax)
je 0x11c8e6
movq -0x28(%rbp), %rdi
movq %rdi, %rax
addq $0x80, %rax
movq %rax, -0x38(%rbp)
addq $0x8, %rdi
callq 0x11d010
movq -0x28(%rbp), %rdi
subl $0x1, %eax
movl %eax, -0x2c(%rbp)
addq $0x8, %rdi
callq 0x11d5c0
movq -0x38(%rbp), %rdi
movl -0x2c(%rbp), %esi
movq (%rax), %rcx
movl $0x3, %edx
callq 0x11cfc0
andb $0x1, %al
movb %al, -0x9(%rbp)
testb $0x1, -0x9(%rbp)
je 0x11c8ae
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11dcc0
jmp 0x11c8e4
movq -0x28(%rbp), %rsi
addq $0xa8, %rsi
leaq -0x20(%rbp), %rdi
callq 0x11f0c0
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
leaq -0x20(%rbp), %rsi
callq 0x118610
leaq -0x20(%rbp), %rdi
callq 0x110640
jmp 0x11c8e6
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d9e0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11c8fb
jmp 0x11c8fd
jmp 0x11c91c
leaq 0x2a113(%rip), %rdi     # 0x146a17
leaq 0x27fdb(%rip), %rsi     # 0x1448e6
movl $0x1bb3, %edx           # imm = 0x1BB3
leaq 0x2ade6(%rip), %rcx     # 0x1476fd
callq 0x524b0
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
callq 0x11ceb0
xorb $-0x1, %al
testb $0x1, %al
jne 0x11c931
jmp 0x11c933
jmp 0x11c952
leaq 0x29f7f(%rip), %rdi     # 0x1468b9
leaq 0x27fa5(%rip), %rsi     # 0x1448e6
movl $0x1bb4, %edx           # imm = 0x1BB4
leaq 0x2adb0(%rip), %rcx     # 0x1476fd
callq 0x524b0
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11f250
movq -0x28(%rbp), %rdi
addq $0x20, %rdi
callq 0x11cfa0
testb $0x1, -0x9(%rbp)
jne 0x11c9b7
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d9e0
testb $0x1, %al
jne 0x11c9b7
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rdi
callq 0x11dad0
testb $0x1, %al
jne 0x11c99e
jmp 0x11c9b7
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
callq 0x11d5c0
movq (%rax), %rax
movq 0x8(%rax), %rdi
callq 0x125110
movb $0x1, %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)