// File: /workspace/github_cpp_makefile_star2_O3/Matlock42[P]Jeopardy/./RapidXml/rapidxml.hpp
// Function: rapidxml::xml_node<char>* rapidxml::xml_document<char>::parse_node<0>(char*&)
xml_node<Ch> *parse_node(Ch *&text)
        {
            // Parse proper node type
            switch (text[0])
            {

            // <...
            default: 
                // Parse and append element node
                return parse_element<Flags>(text);

            // <?...
            case Ch('?'): 
                ++text;     // Skip ?
                if ((text[0] == Ch('x') || text[0] == Ch('X')) &&
                    (text[1] == Ch('m') || text[1] == Ch('M')) && 
                    (text[2] == Ch('l') || text[2] == Ch('L')) &&
                    whitespace_pred::test(text[3]))
                {
                    // '<?xml ' - xml declaration
                    text += 4;      // Skip 'xml '
                    return parse_xml_declaration<Flags>(text);
                }
                else
                {
                    // Parse PI
                    return parse_pi<Flags>(text);
                }
            
            // <!...
            case Ch('!'): 

                // Parse proper subset of <! node
                switch (text[1])    
                {
                
                // <!-
                case Ch('-'):
                    if (text[2] == Ch('-'))
                    {
                        // '<!--' - xml comment
                        text += 3;     // Skip '!--'
                        return parse_comment<Flags>(text);
                    }
                    break;

                // <![
                case Ch('['):
                    if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') && 
                        text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('['))
                    {
                        // '<![CDATA[' - cdata
                        text += 8;     // Skip '![CDATA['
                        return parse_cdata<Flags>(text);
                    }
                    break;

                // <!D
                case Ch('D'):
                    if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') && 
                        text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') && 
                        whitespace_pred::test(text[8]))
                    {
                        // '<!DOCTYPE ' - doctype
                        text += 9;      // skip '!DOCTYPE '
                        return parse_doctype<Flags>(text);
                    }

                }   // switch

                // Attempt to skip other, unrecognized node types starting with <!
                ++text;     // Skip !
                while (*text != Ch('>'))
                {
                    if (*text == 0)
                        RAPIDXML_PARSE_ERROR("unexpected end of data", text);
                    ++text;
                }
                ++text;     // Skip '>'
                return 0;   // No node recognized

            }
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq (%rsi), %rax
movzbl (%rax), %ecx
cmpl $0x21, %ecx
je 0x46c4
cmpl $0x3f, %ecx
jne 0x4730
leaq 0x1(%rax), %rcx
movq %rcx, (%rbx)
movzbl 0x1(%rax), %ecx
orl $0x20, %ecx
cmpl $0x78, %ecx
jne 0x473e
movzbl 0x2(%rax), %ecx
orl $0x20, %ecx
cmpl $0x6d, %ecx
jne 0x473e
movzbl 0x3(%rax), %ecx
orl $0x20, %ecx
cmpl $0x6c, %ecx
jne 0x473e
movzbl 0x4(%rax), %ecx
leaq 0x1f8b(%rip), %rdx      # 0x6630
cmpb $0x0, (%rcx,%rdx)
je 0x473e
addq $0x5, %rax
movq %rax, (%rbx)
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x49d6
movzbl 0x1(%rax), %ecx
cmpl $0x2d, %ecx
je 0x4796
cmpl $0x44, %ecx
je 0x474c
cmpl $0x5b, %ecx
jne 0x47b1
cmpb $0x43, 0x2(%rax)
jne 0x47b1
cmpb $0x44, 0x3(%rax)
jne 0x47b1
cmpb $0x41, 0x4(%rax)
jne 0x47b1
cmpb $0x54, 0x5(%rax)
jne 0x47b1
cmpb $0x41, 0x6(%rax)
jne 0x47b1
cmpb $0x5b, 0x7(%rax)
jne 0x47b1
addq $0x8, %rax
movq %rax, (%rbx)
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4b38
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4876
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4a4a
cmpb $0x4f, 0x2(%rax)
jne 0x47b1
cmpb $0x43, 0x3(%rax)
jne 0x47b1
cmpb $0x54, 0x4(%rax)
jne 0x47b1
cmpb $0x59, 0x5(%rax)
jne 0x47b1
cmpb $0x50, 0x6(%rax)
jne 0x47b1
cmpb $0x45, 0x7(%rax)
jne 0x47b1
movzbl 0x8(%rax), %ecx
leaq 0x1eb5(%rip), %rdx      # 0x6630
cmpb $0x0, (%rcx,%rdx)
je 0x47b1
addq $0x9, %rax
movq %rax, (%rbx)
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4bee
cmpb $0x2d, 0x2(%rax)
jne 0x47b1
addq $0x3, %rax
movq %rax, (%rbx)
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4abe
incq %rax
movq %rax, (%rbx)
movzbl (%rax), %ecx
incq %rax
cmpl $0x3e, %ecx
je 0x4802
testl %ecx, %ecx
jne 0x47b4
movl $0x18, %edi
callq 0x20d0
movq (%rbx), %rcx
leaq 0x45a6(%rip), %rdx      # 0x8d80
movq %rdx, (%rax)
leaq 0x1be6(%rip), %rdx      # 0x63ca
movq %rdx, 0x8(%rax)
movq %rcx, 0x10(%rax)
leaq 0x4565(%rip), %rsi      # 0x8d58
movq 0x47de(%rip), %rdx      # 0x8fd8
movq %rax, %rdi
callq 0x2330
movq %rax, (%rbx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq