// File: /workspace/github_cpp_makefile_star2_O2/tdv[P]boss/boss/include/other/rapidxml-1.13/rapidxml.hpp
// Function: rapidxml::xml_node<char>* rapidxml::xml_document<char>::parse_pi<992>(char*&)
xml_node<Ch> *parse_pi(Ch *&text)
        {
            // If creation of PI nodes is enabled
            if (Flags & parse_pi_nodes)
            {
                // Create pi node
                xml_node<Ch> *pi = this->allocate_node(node_pi);

                // Extract PI target name
                Ch *name = text;
                skip<node_name_pred, Flags>(text);
                if (text == name)
                    RAPIDXML_PARSE_ERROR("expected PI target", text);
                pi->name(name, text - name);
                
                // Skip whitespace between pi target and pi
                skip<whitespace_pred, Flags>(text);

                // Remember start of pi
                Ch *value = text;
                
                // Skip to '?>'
                while (text[0] != Ch('?') || text[1] != Ch('>'))
                {
                    if (*text == Ch('\0'))
                        RAPIDXML_PARSE_ERROR("unexpected end of data", text);
                    ++text;
                }

                // Set pi value (verbatim, no entity expansion or whitespace normalization)
                pi->value(value, text - value);     
                
                // Place zero terminator after name and value
                if (!(Flags & parse_no_string_terminators))
                {
                    pi->name()[pi->name_size()] = Ch('\0');
                    pi->value()[pi->value_size()] = Ch('\0');
                }
                
                text += 2;                          // Skip '?>'
                return pi;
            }
            else
            {
                // Skip to '?>'
                while (text[0] != Ch('?') || text[1] != Ch('>'))
                {
                    if (*text == Ch('\0'))
                        RAPIDXML_PARSE_ERROR("unexpected end of data", text);
                    ++text;
                }
                text += 2;    // Skip '?>'
                return 0;
            }
        }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
addq $0x60, %rdi
pushq $0x7
popq %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x228ec
movq %rax, %r14
movq (%rbx), %r15
movq %rbx, %rdi
callq 0x22978
movq (%rbx), %rax
subq %r15, %rax
je 0x226c8
movq %r15, (%r14)
movq %rax, 0x10(%r14)
movq %rbx, %rdi
callq 0x22136
movq (%rbx), %rax
pushq $0x1
popq %rcx
movzbl -0x1(%rax,%rcx), %edx
cmpl $0x3f, %edx
je 0x22631
testl %edx, %edx
jne 0x22637
jmp 0x2268e
cmpb $0x3e, (%rax,%rcx)
je 0x22643
leaq (%rax,%rcx), %rdx
movq %rdx, (%rbx)
incq %rcx
jmp 0x22621
decq %rcx
movq %rax, 0x8(%r14)
movq %rcx, 0x18(%r14)
movq (%r14), %rdx
leaq 0xffea9(%rip), %rax     # 0x122501
testq %rdx, %rdx
je 0x22666
movq %rdx, %rsi
movq 0x10(%r14), %rdx
jmp 0x22669
movq %rax, %rsi
xorl %ecx, %ecx
movb %cl, (%rsi,%rdx)
movq 0x8(%r14), %rdx
testq %rdx, %rdx
je 0x2267e
movq %rdx, %rax
movq 0x18(%r14), %rdx
movb %cl, (%rax,%rdx)
addq $0x2, (%rbx)
movq %r14, %rax
popq %rbx
popq %r14
popq %r15
retq
pushq $0x18
popq %rdi
callq 0x28b50
movq (%rbx), %rcx
leaq 0xf8220(%rip), %rdx     # 0x11a8c0
movq %rdx, (%rax)
leaq 0xb4eab(%rip), %rdx     # 0xd7555
movq %rdx, 0x8(%rax)
movq %rcx, 0x10(%rax)
leaq 0xf81df(%rip), %rsi     # 0x11a898
leaq 0x6740(%rip), %rdx      # 0x28e00
movq %rax, %rdi
callq 0x29ba0
pushq $0x18
popq %rdi
callq 0x28b50
movq (%rbx), %rcx
leaq 0xf81e6(%rip), %rdx     # 0x11a8c0
movq %rdx, (%rax)
leaq 0xb4fe8(%rip), %rdx     # 0xd76cc
jmp 0x226aa