// File: xelia-it[P]mustache/test/src/../../src/../third-party/json/single_include/nlohmann/json.hpp
// Function: bool nlohmann::json_abi_v3_11_2::detail::iter_impl<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>>::operator==<nlohmann::json_abi_v3_11_2::detail::iter_impl<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>>, nullptr>(nlohmann::json_abi_v3_11_2::detail::iter_impl<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>> const&) const
bool operator==(const IterImpl& other) const
    {
        // if objects are not the same, the comparison is undefined
        if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
        {
            JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object));
        }

        JSON_ASSERT(m_object != nullptr);

        switch (m_object->m_type)
        {
            case value_t::object:
                return (m_it.object_iterator == other.m_it.object_iterator);

            case value_t::array:
                return (m_it.array_iterator == other.m_it.array_iterator);

            case value_t::null:
            case value_t::string:
            case value_t::boolean:
            case value_t::number_integer:
            case value_t::number_unsigned:
            case value_t::number_float:
            case value_t::binary:
            case value_t::discarded:
            default:
                return (m_it.primitive_iterator == other.m_it.primitive_iterator);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1233b5
jmp 0x123467
movb $0x1, -0x4d(%rbp)
movl $0x20, %edi
callq 0x52380
movq %rax, -0x78(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x52ca0
movq -0x70(%rbp), %rdx
leaq 0x23f9e(%rip), %rsi     # 0x14737d
leaq -0x38(%rbp), %rdi
callq 0x529e0
jmp 0x1233ea
movq -0x78(%rbp), %rdi
movq -0x68(%rbp), %rax
movq (%rax), %rcx
movl $0xd4, %esi
leaq -0x38(%rbp), %rdx
callq 0x123540
jmp 0x123405
movq -0x78(%rbp), %rdi
movb $0x0, -0x4d(%rbp)
leaq 0x9d624(%rip), %rsi     # 0x1c0a38
leaq 0x2d5(%rip), %rdx       # 0x1236f0
callq 0x52c20
jmp 0x12353d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x123448
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x52e58
leaq -0x39(%rbp), %rdi
callq 0x527d0
testb $0x1, -0x4d(%rbp)
jne 0x123459
jmp 0x123462
movq -0x78(%rbp), %rdi
callq 0x52540
jmp 0x123534
movq -0x68(%rbp), %rax
cmpq $0x0, (%rax)
je 0x123473
jmp 0x123492
leaq 0x23e0f(%rip), %rdi     # 0x147289
leaq 0x21465(%rip), %rsi     # 0x1448e6
movl $0x33d3, %edx           # imm = 0x33D3
leaq 0x23f21(%rip), %rcx     # 0x1473ae
callq 0x524b0
movq -0x68(%rbp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
movq %rax, -0x80(%rbp)
subq $0x9, %rax
ja 0x1234fc
movq -0x80(%rbp), %rax
leaq 0x2107b(%rip), %rcx     # 0x14452c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x68(%rbp), %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
addq $0x8, %rsi
callq 0x123710
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x123526
movq -0x68(%rbp), %rdi
addq $0x8, %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
addq $0x8, %rsi
addq $0x8, %rsi
callq 0x123740
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x123526
jmp 0x1234fc
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x123780
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x52c90
nopl (%rax)