// File: /workspace/github_cpp_makefile_star2_O2/Matlock42[P]Jeopardy/./RapidXml/rapidxml.hpp
// Function: void rapidxml::xml_document<char>::parse_node_contents<0>(char*&, rapidxml::xml_node<char>*)
void parse_node_contents(Ch *&text, xml_node<Ch> *node)
        {
            // For all children and text
            while (1)
            {
                // Skip whitespace between > and node contents
                Ch *contents_start = text;      // Store start of node contents before whitespace is skipped
                skip<whitespace_pred, Flags>(text);
                Ch next_char = *text;

            // After data nodes, instead of continuing the loop, control jumps here.
            // This is because zero termination inside parse_and_append_data() function
            // would wreak havoc with the above code.
            // Also, skipping whitespace after data nodes is unnecessary.
            after_data_node:    
                
                // Determine what comes next: node closing, child node, data node, or 0?
                switch (next_char)
                {
                
                // Node closing or child node
                case Ch('<'):
                    if (text[1] == Ch('/'))
                    {
                        // Node closing
                        text += 2;      // Skip '</'
                        if (Flags & parse_validate_closing_tags)
                        {
                            // Skip and validate closing tag name
                            Ch *closing_name = text;
                            skip<node_name_pred, Flags>(text);
                            if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true))
                                RAPIDXML_PARSE_ERROR("invalid closing tag name", text);
                        }
                        else
                        {
                            // No validation, just skip name
                            skip<node_name_pred, Flags>(text);
                        }
                        // Skip remaining whitespace after node name
                        skip<whitespace_pred, Flags>(text);
                        if (*text != Ch('>'))
                            RAPIDXML_PARSE_ERROR("expected >", text);
                        ++text;     // Skip '>'
                        return;     // Node closed, finished parsing contents
                    }
                    else
                    {
                        // Child node
                        ++text;     // Skip '<'
                        if (xml_node<Ch> *child = parse_node<Flags>(text))
                            node->append_node(child);
                    }
                    break;

                // End of data - error
                case Ch('\0'):
                    RAPIDXML_PARSE_ERROR("unexpected end of data", text);

                // Data node
                default:
                    next_char = parse_and_append_data<Flags>(node, text, contents_start);
                    goto after_data_node;   // Bypass regular processing after data nodes

                }
            }
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %r15
movq (%rbx), %r12
movq %rbx, %rdi
callq 0x41bc
movq (%rbx), %rax
movb (%rax), %al
cmpb $0x3c, %al
je 0x4a72
movzbl %al, %eax
testl %eax, %eax
je 0x4acc
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq 0x522e
jmp 0x4a54
movq (%rbx), %rax
cmpb $0x2f, 0x1(%rax)
je 0x4a9e
incq %rax
movq %rax, (%rbx)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x41e0
testq %rax, %rax
je 0x4a44
movq %r14, %rdi
movq %rax, %rsi
callq 0x43a6
jmp 0x4a44
addq $0x2, %rax
movq %rax, (%rbx)
movq %rbx, %rdi
callq 0x4850
movq %rbx, %rdi
callq 0x41bc
movq (%rbx), %rax
cmpb $0x3e, (%rax)
jne 0x4b06
incq %rax
movq %rax, (%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
pushq $0x18
popq %rdi
callq 0x20e0
movq (%rbx), %rcx
leaq 0x52a2(%rip), %rdx      # 0x9d80
movq %rdx, (%rax)
leaq 0x18e2(%rip), %rdx      # 0x63ca
movq %rdx, 0x8(%rax)
movq %rcx, 0x10(%rax)
leaq 0x5261(%rip), %rsi      # 0x9d58
movq 0x54da(%rip), %rdx      # 0x9fd8
movq %rax, %rdi
callq 0x2360
pushq $0x18
popq %rdi
callq 0x20e0
movq (%rbx), %rcx
leaq 0x5268(%rip), %rdx      # 0x9d80
movq %rdx, (%rax)
leaq 0x18d5(%rip), %rdx      # 0x63f7
jmp 0x4ae8