// File: Matlock42[P]Jeopardy/./RapidXml/rapidxml.hpp
// Function: void rapidxml::xml_document<char>::parse_node_attributes<0>(char*&, rapidxml::xml_node<char>*)
void parse_node_attributes(Ch *&text, xml_node<Ch> *node)
        {
            // For all attributes 
            while (attribute_name_pred::test(*text))
            {
                // Extract attribute name
                Ch *name = text;
                ++text;     // Skip first character of attribute name
                skip<attribute_name_pred, Flags>(text);
                if (text == name)
                    RAPIDXML_PARSE_ERROR("expected attribute name", name);

                // Create new attribute
                xml_attribute<Ch> *attribute = this->allocate_attribute();
                attribute->name(name, text - name);
                node->append_attribute(attribute);

                // Skip whitespace after attribute name
                skip<whitespace_pred, Flags>(text);

                // Skip =
                if (*text != Ch('='))
                    RAPIDXML_PARSE_ERROR("expected =", text);
                ++text;

                // Add terminating zero after name
                if (!(Flags & parse_no_string_terminators))
                    attribute->name()[attribute->name_size()] = 0;

                // Skip whitespace after =
                skip<whitespace_pred, Flags>(text);

                // Skip quote and remember if it was ' or "
                Ch quote = *text;
                if (quote != Ch('\'') && quote != Ch('"'))
                    RAPIDXML_PARSE_ERROR("expected ' or \"", text);
                ++text;

                // Extract attribute value and expand char refs in it
                Ch *value = text, *end;
                const int AttFlags = Flags & ~parse_normalize_whitespace;   // No whitespace normalization in attributes
                if (quote == Ch('\''))
                    end = skip_and_expand_character_refs<attribute_value_pred<Ch('\'')>, attribute_value_pure_pred<Ch('\'')>, AttFlags>(text);
                else
                    end = skip_and_expand_character_refs<attribute_value_pred<Ch('"')>, attribute_value_pure_pred<Ch('"')>, AttFlags>(text);
                
                // Set attribute value
                attribute->value(value, end - value);
                
                // Make sure that end quote is present
                if (*text != quote)
                    RAPIDXML_PARSE_ERROR("expected ' or \"", text);
                ++text;     // Skip quote

                // Add terminating zero after value
                if (!(Flags & parse_no_string_terminators))
                    attribute->value()[attribute->value_size()] = 0;

                // Skip whitespace after attribute value
                skip<whitespace_pred, Flags>(text);
            }
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x93d0
cmpb $0x0, %al
je 0x8eb7
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rdi
callq 0x93f0
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x8c3c
movl $0x18, %edi
callq 0x3120
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rdx
leaq 0x3826(%rip), %rsi      # 0xc42a
callq 0x81b0
jmp 0x8c0b
movq -0x68(%rbp), %rdi
leaq 0x9142(%rip), %rsi      # 0x11d58
leaq -0xa1d(%rip), %rdx      # 0x8200
callq 0x3470
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x31e0
jmp 0x8ec0
movq -0x60(%rbp), %rdi
addq $0x60, %rdi
xorl %eax, %eax
movl %eax, %r8d
movq %r8, %rsi
movq %r8, %rdx
movq %r8, %rcx
callq 0x9440
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
movq -0x20(%rbp), %rax
subq %rax, %rdx
callq 0x8b50
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x94f0
movq -0x10(%rbp), %rdi
callq 0x7d10
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x8cf5
movl $0x18, %edi
callq 0x3120
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x3785(%rip), %rsi      # 0xc442
callq 0x81b0
jmp 0x8cc4
movq -0x70(%rbp), %rdi
leaq 0x9089(%rip), %rsi      # 0x11d58
leaq -0xad6(%rip), %rdx      # 0x8200
callq 0x3470
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x31e0
jmp 0x8ec0
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x38(%rbp), %rdi
callq 0x90a0
movq %rax, -0x78(%rbp)
movq -0x38(%rbp), %rdi
callq 0x90e0
movq %rax, %rcx
movq -0x78(%rbp), %rax
movb $0x0, (%rax,%rcx)
movq -0x10(%rbp), %rdi
callq 0x7d10
movq -0x10(%rbp), %rax
movq (%rax), %rax
movb (%rax), %al
movb %al, -0x39(%rbp)
movsbl -0x39(%rbp), %eax
cmpl $0x27, %eax
je 0x8da5
movsbl -0x39(%rbp), %eax
cmpl $0x22, %eax
je 0x8da5
movl $0x18, %edi
callq 0x3120
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x36e0(%rip), %rsi      # 0xc44d
callq 0x81b0
jmp 0x8d74
movq -0x80(%rbp), %rdi
leaq 0x8fd9(%rip), %rsi      # 0x11d58
leaq -0xb86(%rip), %rdx      # 0x8200
callq 0x3470
movq -0x80(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x31e0
jmp 0x8ec0
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x54(%rbp)
movsbl -0x39(%rbp), %eax
cmpl $0x27, %eax
jne 0x8ddd
movq -0x10(%rbp), %rdi
callq 0x95d0
movq %rax, -0x50(%rbp)
jmp 0x8dea
movq -0x10(%rbp), %rdi
callq 0x9990
movq %rax, -0x50(%rbp)
movq -0x38(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x48(%rbp), %rax
subq %rax, %rdx
callq 0x9280
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
movsbl -0x39(%rbp), %ecx
cmpl %ecx, %eax
je 0x8e74
movl $0x18, %edi
callq 0x3120
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x3614(%rip), %rsi      # 0xc44d
callq 0x81b0
jmp 0x8e40
movq -0x88(%rbp), %rdi
leaq 0x8f0a(%rip), %rsi      # 0x11d58
leaq -0xc55(%rip), %rdx      # 0x8200
callq 0x3470
movq -0x88(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x31e0
jmp 0x8ec0
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x38(%rbp), %rdi
callq 0x5f00
movq %rax, -0x90(%rbp)
movq -0x38(%rbp), %rdi
callq 0x9d50
movq %rax, %rcx
movq -0x90(%rbp), %rax
movb $0x0, (%rax,%rcx)
movq -0x10(%rbp), %rdi
callq 0x7d10
jmp 0x8b9f
addq $0x90, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x34a0
nopl (%rax)