// File: /workspace/github_cpp_makefile_star2_O1/Falldog[P]dcinja/src/include/nlohmann/json.hpp
// Function: nlohmann::json_pointer<nlohmann::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::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>>>::split(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
static std::vector<std::string> split(const std::string& reference_string)
    {
        std::vector<std::string> result;

        // special case: empty reference string -> no reference tokens
        if (reference_string.empty())
        {
            return result;
        }

        // check if nonempty reference string begins with slash
        if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/'))
        {
            JSON_THROW(detail::parse_error::create(107, 1,
                                                   "JSON pointer must be empty or begin with '/' - was: '" +
                                                   reference_string + "'"));
        }

        // extract the reference tokens:
        // - slash: position of the last read slash (or end of string)
        // - start: position after the previous slash
        for (
            // search for the first slash after the first character
            std::size_t slash = reference_string.find_first_of('/', 1),
            // set the beginning of the first reference token
            start = 1;
            // we can stop if start == 0 (if slash == std::string::npos)
            start != 0;
            // set the beginning of the next reference token
            // (will eventually be 0 if slash == std::string::npos)
            start = (slash == std::string::npos) ? 0 : slash + 1,
            // find next slash
            slash = reference_string.find_first_of('/', start))
        {
            // use the text between the beginning of the reference token
            // (start) and the last slash (slash).
            auto reference_token = reference_string.substr(start, slash - start);

            // check reference tokens are properly escaped
            for (std::size_t pos = reference_token.find_first_of('~');
                    pos != std::string::npos;
                    pos = reference_token.find_first_of('~', pos + 1))
            {
                JSON_ASSERT(reference_token[pos] == '~');

                // ~ must be followed by 0 or 1
                if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 ||
                                         (reference_token[pos + 1] != '0' &&
                                          reference_token[pos + 1] != '1')))
                {
                    JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
                }
            }

            // finally, store the reference token
            unescape(reference_token);
            result.push_back(reference_token);
        }

        return result;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
cmpq $0x0, 0x8(%rsi)
je 0x2e72d
movq %rsi, %r14
movq (%rsi), %rax
cmpb $0x2f, (%rax)
jne 0x2e7a2
movl $0x1, %r13d
movl $0x1, %edx
movq %r14, %rdi
movl $0x2f, %esi
callq 0x9550
movq %rax, %r15
leaq 0x18(%rsp), %rbp
leaq 0x8(%rsp), %r12
movq %r15, %rcx
subq %r13, %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x9410
movq %r12, %rdi
movl $0x7e, %esi
xorl %edx, %edx
callq 0x9550
cmpq $-0x1, %rax
je 0x2e6e3
movq 0x8(%rsp), %rcx
cmpb $0x7e, (%rcx,%rax)
jne 0x2e7f7
movq 0x10(%rsp), %rdx
decq %rdx
cmpq %rdx, %rax
je 0x2e73f
movb 0x1(%rcx,%rax), %cl
andb $-0x2, %cl
cmpb $0x30, %cl
jne 0x2e73f
incq %rax
movq %r12, %rdi
movl $0x7e, %esi
movq %rax, %rdx
jmp 0x2e6a0
movq %r12, %rdi
callq 0x2eec0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x16792
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2e70d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x93c0
leaq 0x1(%r15), %rdx
movq %r14, %rdi
movl $0x2f, %esi
callq 0x9550
incq %r15
movq %r15, %r13
movq %rax, %r15
jne 0x2e682
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x28, %edi
callq 0x91f0
movq %rax, %r15
leaq 0x38(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2afa0(%rip), %rsi     # 0x596fc
leaq 0x2afce(%rip), %rdx     # 0x59731
leaq 0x28(%rsp), %rdi
callq 0x12646
movb $0x1, %r12b
leaq 0x28(%rsp), %rcx
movq %r15, %rdi
movl $0x6c, %esi
xorl %edx, %edx
callq 0x2e926
xorl %r12d, %r12d
leaq 0x498ca(%rip), %rsi     # 0x78058
leaq -0x413b(%rip), %rdx     # 0x2a65a
movq %r15, %rdi
callq 0x9750
jmp 0x2e86c
movl $0x28, %edi
callq 0x91f0
movq %rax, %r15
leaq 0x2ae60(%rip), %rsi     # 0x59616
leaq 0x28(%rsp), %rdi
movq %r14, %rdx
callq 0x124ba
leaq 0x2a6c4(%rip), %rsi     # 0x58e8e
leaq 0x28(%rsp), %rdi
callq 0x9820
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rcx
movq %rax, %rdx
addq $0x10, %rdx
cmpq %rdx, %rcx
jne 0x2e816
movups (%rdx), %xmm0
movups %xmm0, (%r12)
jmp 0x2e823
leaq 0x2ae4e(%rip), %rdi     # 0x5964c
leaq 0x284e4(%rip), %rsi     # 0x56ce9
leaq 0x2ae5c(%rip), %rcx     # 0x59668
movl $0x301f, %edx           # imm = 0x301F
callq 0x92a0
movq %rcx, 0x8(%rsp)
movq (%rdx), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rsi
leaq 0x8(%rsp), %rcx
movq %rsi, 0x8(%rcx)
movq %rdx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movl $0x1, %edx
movq %r15, %rdi
movl $0x6b, %esi
callq 0x2e926
xorl %ebp, %ebp
leaq 0x497fb(%rip), %rsi     # 0x78058
leaq -0x420a(%rip), %rdx     # 0x2a65a
movq %r15, %rdi
callq 0x9750
movq %rax, %r14
jmp 0x2e916
movq %rax, %r14
jmp 0x2e8ff
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2e89e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x93c0
jmp 0x2e89e
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e8c1
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x93c0
jmp 0x2e8c1
movq %rax, %r14
movb $0x1, %bpl
testb %bpl, %bpl
je 0x2e916
movq %r15, %rdi
callq 0x92e0
jmp 0x2e916
movq %rax, %r14
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x2e8f2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x93c0
jmp 0x2e8f2
movq %rax, %r14
movb $0x1, %r12b
testb %r12b, %r12b
je 0x2e8ff
movq %r15, %rdi
callq 0x92e0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2e916
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x93c0
movq %rbx, %rdi
callq 0xe788
movq %r14, %rdi
callq 0x9790