// File: linuxmao-org[P]VL1-emulator/utils/sources/json.hpp
// Function: nlohmann::detail::input_adapter::input_adapter<char*, 0>(char*, char*)
input_adapter(IteratorType first, IteratorType last)
    {
#ifndef NDEBUG
        // assertion to check that the iterator range is indeed contiguous,
        // see http://stackoverflow.com/a/35008842/266378 for more discussion
        const auto is_contiguous = std::accumulate(
                                       first, last, std::pair<bool, int>(true, 0),
                                       [&first](std::pair<bool, int> res, decltype(*first) val)
        {
            res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
            return res;
        }).first;
        assert(is_contiguous);
#endif

        // assertion to check that each element is 1 byte long
        static_assert(
            sizeof(typename iterator_traits<IteratorType>::value_type) == 1,
            "each element in the iterator range must have the size of 1 byte");

        const auto len = static_cast<size_t>(std::distance(first, last));
        if (JSON_HEDLEY_LIKELY(len > 0))
        {
            // there is at least one element: use the address of first
            ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len);
        }
        else
        {
            // the address of first cannot be used: use nullptr
            ia = std::make_shared<input_buffer_adapter>(nullptr, len);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
movq %rdi, %rax
movq %rax, -0xa0(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x6d60
movq -0x10(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
movb $0x1, -0x2d(%rbp)
movl $0x0, -0x34(%rbp)
leaq -0x2c(%rbp), %rdi
leaq -0x2d(%rbp), %rsi
leaq -0x34(%rbp), %rdx
callq 0x6df0
jmp 0x6369
movq -0x90(%rbp), %rsi
movq -0x98(%rbp), %rdi
leaq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x2c(%rbp), %rdx
movq -0x50(%rbp), %rcx
callq 0x6d80
movq %rax, -0xb0(%rbp)
jmp 0x6395
movq -0xb0(%rbp), %rax
movq %rax, -0x24(%rbp)
movb -0x24(%rbp), %al
andb $0x1, %al
movb %al, -0x19(%rbp)
testb $0x1, -0x19(%rbp)
je 0x63b0
jmp 0x63ec
leaq 0x1f763(%rip), %rdi     # 0x25b1a
leaq 0x1f76a(%rip), %rsi     # 0x25b28
movl $0x10a5, %edx           # imm = 0x10A5
leaq 0x1f76f(%rip), %rcx     # 0x25b39
callq 0x4220
movq -0xa8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
callq 0x6d20
jmp 0x6498
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x6e20
movq %rax, -0xb8(%rbp)
jmp 0x6402
movq -0xb8(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
seta %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x641f
jmp 0x6455
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x58(%rbp), %rdx
callq 0x6e60
jmp 0x643a
movq -0xa0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x6ee0
leaq -0x68(%rbp), %rdi
callq 0x6f10
jmp 0x648f
movq $0x0, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0x58(%rbp), %rdx
callq 0x6f30
jmp 0x6476
movq -0xa0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x6ee0
leaq -0x80(%rbp), %rdi
callq 0x6f10
addq $0xc0, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x4550
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)