// File: 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
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
movl %eax, -0x28(%rbp)
subl $0x21, %eax
je 0x7e6a
jmp 0x7d90
movl -0x28(%rbp), %eax
subl $0x3f, %eax
je 0x7db0
jmp 0x7d9a
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x8240
movq %rax, -0x8(%rbp)
jmp 0x80a6
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x78, %eax
je 0x7ddc
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x58, %eax
jne 0x7e54
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6d, %eax
je 0x7dfc
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x4d, %eax
jne 0x7e54
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x2(%rax), %eax
cmpl $0x6c, %eax
je 0x7e1c
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x2(%rax), %eax
cmpl $0x4c, %eax
jne 0x7e54
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x3(%rax), %edi
callq 0x8220
cmpb $0x0, %al
je 0x7e54
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x4, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rsi
callq 0x8490
movq %rax, -0x8(%rbp)
jmp 0x80a6
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x8570
movq %rax, -0x8(%rbp)
jmp 0x80a6
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x34(%rbp)
subl $0x2d, %eax
je 0x7e9a
jmp 0x7e7f
movl -0x34(%rbp), %eax
subl $0x44, %eax
je 0x7f5c
jmp 0x7e8d
movl -0x34(%rbp), %eax
subl $0x5b, %eax
je 0x7ed3
jmp 0x7ffa
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x2(%rax), %eax
cmpl $0x2d, %eax
jne 0x7ece
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x3, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rsi
callq 0x8650
movq %rax, -0x8(%rbp)
jmp 0x80a6
jmp 0x7ffa
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x2(%rax), %eax
cmpl $0x43, %eax
jne 0x7f57
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x3(%rax), %eax
cmpl $0x44, %eax
jne 0x7f57
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x4(%rax), %eax
cmpl $0x41, %eax
jne 0x7f57
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x5(%rax), %eax
cmpl $0x54, %eax
jne 0x7f57
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x6(%rax), %eax
cmpl $0x41, %eax
jne 0x7f57
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x7(%rax), %eax
cmpl $0x5b, %eax
jne 0x7f57
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rsi
callq 0x8740
movq %rax, -0x8(%rbp)
jmp 0x80a6
jmp 0x7ffa
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x2(%rax), %eax
cmpl $0x4f, %eax
jne 0x7ff8
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x3(%rax), %eax
cmpl $0x43, %eax
jne 0x7ff8
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x4(%rax), %eax
cmpl $0x54, %eax
jne 0x7ff8
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x5(%rax), %eax
cmpl $0x59, %eax
jne 0x7ff8
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x6(%rax), %eax
cmpl $0x50, %eax
jne 0x7ff8
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x7(%rax), %eax
cmpl $0x45, %eax
jne 0x7ff8
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl 0x8(%rax), %edi
callq 0x8220
cmpb $0x0, %al
je 0x7ff8
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x9, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rsi
callq 0x8890
movq %rax, -0x8(%rbp)
jmp 0x80a6
jmp 0x7ffa
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3e, %eax
je 0x8090
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x807d
movl $0x18, %edi
callq 0x3120
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rdx
leaq 0x435e(%rip), %rsi      # 0xc3a6
callq 0x81b0
jmp 0x804f
movq -0x40(%rbp), %rdi
leaq 0x9cfe(%rip), %rsi      # 0x11d58
leaq 0x19f(%rip), %rdx       # 0x8200
callq 0x3470
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x31e0
jmp 0x80b0
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x8008
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x34a0
nopl (%rax)