// File: /workspace/github_cpp_makefile_star2_O1/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 %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
cmpq %rdx, %rsi
je 0x480d
movl $0x1, %esi
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movabsq $0x100000000, %rcx      # imm = 0x100000000
movq %r15, %rdx
movb (%rdx), %dil
movq %rsi, %r8
sarq $0x20, %r8
cmpb (%r15,%r8), %dil
sete %dil
andb %sil, %dil
andq %rax, %rsi
movzbl %dil, %r8d
orq %rsi, %r8
addq %rcx, %r8
incq %rdx
movq %r8, %rsi
cmpq %r14, %rdx
jne 0x47d7
testb %dil, %dil
je 0x48b5
subq %r15, %r14
je 0x4878
movl $0x28, %edi
callq 0x3210
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0x142c7(%rip), %rcx     # 0x18af8
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x14366(%rip), %rdx     # 0x18ba8
movq %rdx, 0x10(%rax)
movq %r15, 0x18(%rax)
addq %r15, %r14
testq %r15, %r15
cmoveq %r15, %r14
movq %r14, 0x20(%rax)
movq %rcx, (%rbx)
movq 0x8(%rbx), %rdi
movq %rax, 0x8(%rbx)
testq %rdi, %rdi
je 0x4872
popq %rbx
popq %r14
popq %r15
jmp 0x50f2
popq %rbx
popq %r14
popq %r15
retq
movl $0x28, %edi
callq 0x3210
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0x14261(%rip), %rcx     # 0x18af8
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x14300(%rip), %rdx     # 0x18ba8
movq %rdx, 0x10(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rax)
jmp 0x4858
leaq 0xbea2(%rip), %rdi      # 0x1075e
leaq 0xbea9(%rip), %rsi      # 0x1076c
leaq 0xbeb3(%rip), %rcx      # 0x1077d
movl $0x10a5, %edx           # imm = 0x10A5
callq 0x3180
jmp 0x48d6
movq %rax, %r14
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x48e7
callq 0x50f2
movq %r14, %rdi
callq 0x33b0
nop