// File: jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: pugi::impl::(anonymous namespace)::xpath_ast_node::step_push(pugi::impl::(anonymous namespace)::xpath_node_set_raw&, pugi::xml_attribute_struct*, pugi::xml_node_struct*, pugi::impl::(anonymous namespace)::xpath_allocator*)
bool step_push(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_node_struct* parent, xpath_allocator* alloc)
		{
			assert(a);

			const char_t* name = a->name ? a->name + 0 : PUGIXML_TEXT("");

			switch (_test)
			{
			case nodetest_name:
				if (strequal(name, _data.nodetest) && is_xpath_attribute(name))
				{
					ns.push_back(xpath_node(xml_attribute(a), xml_node(parent)), alloc);
					return true;
				}
				break;

			case nodetest_type_node:
			case nodetest_all:
				if (is_xpath_attribute(name))
				{
					ns.push_back(xpath_node(xml_attribute(a), xml_node(parent)), alloc);
					return true;
				}
				break;

			case nodetest_all_in_namespace:
				if (starts_with(name, _data.nodetest) && is_xpath_attribute(name))
				{
					ns.push_back(xpath_node(xml_attribute(a), xml_node(parent)), alloc);
					return true;
				}
				break;

			default:
				;
			}

			return false;
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x65a63
jmp 0x65a82
leaq 0x404c(%rip), %rdi      # 0x69ab6
leaq 0x58e4(%rip), %rsi      # 0x6b355
movl $0x25ce, %edx           # imm = 0x25CE
leaq 0x91a2(%rip), %rcx      # 0x6ec1f
callq 0x7180
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x65a9e
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xa8(%rbp)
jmp 0x65aae
leaq 0x3664(%rip), %rax      # 0x69109
movq %rax, -0xa8(%rbp)
jmp 0x65aae
movq -0xa0(%rbp), %rax
movq -0xa8(%rbp), %rcx
movq %rcx, -0x38(%rbp)
movsbl 0x3(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0xb0(%rbp)
subl $0x7, %eax
ja 0x65c64
movq -0xb0(%rbp), %rax
leaq 0x5556(%rip), %rcx      # 0x6b03c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0xa0(%rbp), %rax
movq -0x38(%rbp), %rdi
movq 0x20(%rax), %rsi
callq 0x421f0
testb $0x1, %al
jne 0x65b09
jmp 0x65b6b
movq -0x38(%rbp), %rdi
callq 0x60920
testb $0x1, %al
jne 0x65b18
jmp 0x65b6b
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x40970
movq -0x28(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x41c10
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
leaq -0x58(%rbp), %rdx
callq 0x49620
movq -0xb8(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x48(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65c6a
jmp 0x65c66
movq -0x38(%rbp), %rdi
callq 0x60920
testb $0x1, %al
jne 0x65b7f
jmp 0x65bd2
movq -0x18(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x40970
movq -0x28(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x41c10
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x78(%rbp), %rdx
callq 0x49620
movq -0xc0(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x68(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65c6a
jmp 0x65c66
movq -0xa0(%rbp), %rax
movq -0x38(%rbp), %rdi
movq 0x20(%rax), %rsi
callq 0x60820
testb $0x1, %al
jne 0x65bf1
jmp 0x65c62
movq -0x38(%rbp), %rdi
callq 0x60920
testb $0x1, %al
jne 0x65c00
jmp 0x65c62
movq -0x18(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x40970
movq -0x28(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x41c10
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0x98(%rbp), %rdx
callq 0x49620
movq -0xc8(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x88(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65c6a
jmp 0x65c66
jmp 0x65c66
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xd0, %rsp
popq %rbp
retq
nopl (%rax,%rax)