// File: /workspace/github_cpp_makefile_star2_O1/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 %rbx
movq %rsi, %rbx
addq $0x60, %rdi
movl $0x60, %esi
callq 0x25d52
xorl %ecx, %ecx
movq %rcx, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x7, 0x28(%rax)
movq %rcx, 0x30(%rax)
movq %rcx, 0x40(%rax)
movq (%rbx), %rcx
movq $-0x1, %rdx
leaq 0xb5d18(%rip), %rsi     # 0xdb2b0
movzbl 0x1(%rcx,%rdx), %edi
incq %rdx
cmpb $0x0, (%rdi,%rsi)
jne 0x25598
leaq (%rcx,%rdx), %rsi
movq %rsi, (%rbx)
testq %rdx, %rdx
je 0x2567d
movq %rcx, (%rax)
movq %rdx, 0x10(%rax)
movq (%rbx), %rcx
decq %rcx
leaq 0xb5be6(%rip), %rdx     # 0xdb1b0
movzbl 0x1(%rcx), %esi
incq %rcx
cmpb $0x0, (%rsi,%rdx)
jne 0x255ca
xorl %edx, %edx
leaq (%rcx,%rdx), %rsi
movq %rsi, (%rbx)
movzbl (%rcx,%rdx), %esi
cmpl $0x3f, %esi
je 0x255ef
testl %esi, %esi
jne 0x255fb
jmp 0x25641
cmpb $0x3e, 0x1(%rcx,%rdx)
je 0x25600
testb %sil, %sil
je 0x25641
incq %rdx
jmp 0x255d9
movq %rcx, 0x8(%rax)
movq %rdx, 0x18(%rax)
movq (%rax), %rsi
leaq 0xffeef(%rip), %rcx     # 0x125501
testq %rsi, %rsi
je 0x25620
movq %rsi, %rdi
movq 0x10(%rax), %rsi
jmp 0x25623
movq %rcx, %rdi
xorl %edx, %edx
movb %dl, (%rdi,%rsi)
movq 0x8(%rax), %rsi
testq %rsi, %rsi
je 0x25638
movq %rsi, %rcx
movq 0x18(%rax), %rsi
movb %dl, (%rcx,%rsi)
addq $0x2, (%rbx)
popq %rbx
retq
movl $0x18, %edi
callq 0x2cb60
movq (%rbx), %rcx
leaq 0xf7c8b(%rip), %rdx     # 0x11d2e0
movq %rdx, (%rax)
leaq 0xb4ef6(%rip), %rdx     # 0xda555
movq %rdx, 0x8(%rax)
movq %rcx, 0x10(%rax)
leaq 0xf7c4a(%rip), %rsi     # 0x11d2b8
leaq 0x779b(%rip), %rdx      # 0x2ce10
movq %rax, %rdi
callq 0x2dbb0
movl $0x18, %edi
callq 0x2cb60
movq (%rbx), %rcx
leaq 0xf7c4f(%rip), %rdx     # 0x11d2e0
movq %rdx, (%rax)
leaq 0xb5019(%rip), %rdx     # 0xda6b4
jmp 0x2565f
nop