// File: /workspace/github_cpp_makefile_star2_O3/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 0x2e137
movq %rsi, %r14
movq (%rsi), %rax
cmpb $0x2f, (%rax)
jne 0x2e1ad
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 0x2e0ed
movq 0x8(%rsp), %rcx
cmpb $0x7e, (%rcx,%rax)
jne 0x2e202
movq 0x10(%rsp), %rdx
decq %rdx
cmpq %rdx, %rax
je 0x2e149
movb 0x1(%rcx,%rax), %cl
andb $-0x2, %cl
cmpb $0x30, %cl
jne 0x2e149
incq %rax
movq %r12, %rdi
movl $0x7e, %esi
movq %rax, %rdx
jmp 0x2e0aa
movq %r12, %rdi
callq 0x2e8b6
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1682e
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2e117
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 0x2e08c
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), %r12
movq %r12, -0x10(%r12)
leaq 0x2a58d(%rip), %rsi     # 0x586f4
leaq 0x2a5bb(%rip), %rdx     # 0x58729
leaq 0x28(%rsp), %rdi
callq 0x126d8
movb $0x1, %r13b
leaq 0x28(%rsp), %rcx
movq %r15, %rdi
movl $0x6c, %esi
xorl %edx, %edx
callq 0x2e344
xorl %r13d, %r13d
leaq 0x48eb7(%rip), %rsi     # 0x77050
leaq -0x404a(%rip), %rdx     # 0x2a156
movq %r15, %rdi
callq 0x9750
jmp 0x2e277
movl $0x28, %edi
callq 0x91f0
movq %rax, %r15
leaq 0x2a44d(%rip), %rsi     # 0x5860e
leaq 0x28(%rsp), %rdi
movq %r14, %rdx
callq 0x1254c
leaq 0x29cb1(%rip), %rsi     # 0x57e86
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 0x2e221
movups (%rdx), %xmm0
movups %xmm0, (%r12)
jmp 0x2e22e
leaq 0x2a43b(%rip), %rdi     # 0x58644
leaq 0x27ad1(%rip), %rsi     # 0x55ce1
leaq 0x2a449(%rip), %rcx     # 0x58660
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 0x2e344
xorl %ebp, %ebp
leaq 0x48de8(%rip), %rsi     # 0x77050
leaq -0x4119(%rip), %rdx     # 0x2a156
movq %r15, %rdi
callq 0x9750
movq %rax, %r14
jmp 0x2e333
movq %rax, %r14
jmp 0x2e31c
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2e2a1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x93c0
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e2bc
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x93c0
testb %bpl, %bpl
jne 0x2e2e6
jmp 0x2e333
movq %rax, %r14
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e2e6
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x93c0
jmp 0x2e2e6
movq %rax, %r14
movq %r15, %rdi
callq 0x92e0
jmp 0x2e333
movq %rax, %r14
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x2e30a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x93c0
testb %r13b, %r13b
jne 0x2e314
jmp 0x2e31c
movq %rax, %r14
movq %r15, %rdi
callq 0x92e0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2e333
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x93c0
movq %rbx, %rdi
callq 0xe924
movq %r14, %rdi
callq 0x9790
nop