// 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_node_struct*, pugi::impl::(anonymous namespace)::xpath_allocator*)
bool step_push(xpath_node_set_raw& ns, xml_node_struct* n, xpath_allocator* alloc)
		{
			assert(n);

			xml_node_type type = PUGI__NODETYPE(n);

			switch (_test)
			{
			case nodetest_name:
				if (type == node_element && n->name && strequal(n->name, _data.nodetest))
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			case nodetest_type_node:
				ns.push_back(xml_node(n), alloc);
				return true;

			case nodetest_type_comment:
				if (type == node_comment)
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			case nodetest_type_text:
				if (type == node_pcdata || type == node_cdata)
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			case nodetest_type_pi:
				if (type == node_pi)
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			case nodetest_pi:
				if (type == node_pi && n->name && strequal(n->name, _data.nodetest))
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			case nodetest_all:
				if (type == node_element)
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			case nodetest_all_in_namespace:
				if (type == node_element && n->name && starts_with(n->name, _data.nodetest))
				{
					ns.push_back(xml_node(n), alloc);
					return true;
				}
				break;

			default:
				assert(false && "Unknown axis"); // unreachable
			}

			return false;
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xf8(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x653af
jmp 0x653ce
leaq 0x8454(%rip), %rdi      # 0x6d80a
leaq 0x5f98(%rip), %rsi      # 0x6b355
movl $0x25f6, %edx           # imm = 0x25F6
leaq 0x97d8(%rip), %rcx      # 0x6eba1
callq 0x7180
movq -0xf8(%rbp), %rax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
andl $0xf, %ecx
movl %ecx, -0x2c(%rbp)
movsbl 0x3(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x100(%rbp)
subl $0x7, %eax
ja 0x65724
movq -0x100(%rbp), %rax
leaq 0x5c15(%rip), %rcx      # 0x6b01c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x2, -0x2c(%rbp)
jne 0x65481
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x65481
movq -0xf8(%rbp), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rdi
movq 0x20(%rax), %rsi
callq 0x421f0
testb $0x1, %al
jne 0x6543f
jmp 0x65481
movq -0x18(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x41c10
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x495f0
movq -0x108(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0x40(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
movq -0x18(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x41c10
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x495f0
movq -0x110(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0x58(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
cmpl $0x5, -0x2c(%rbp)
jne 0x65510
movq -0x18(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x41c10
leaq -0x70(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x495f0
movq -0x118(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0x70(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
cmpl $0x3, -0x2c(%rbp)
je 0x65521
cmpl $0x4, -0x2c(%rbp)
jne 0x6556f
movq -0x18(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x41c10
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x495f0
movq -0x120(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0x88(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
cmpl $0x6, -0x2c(%rbp)
jne 0x655c8
movq -0x18(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x20(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x41c10
leaq -0xa0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x495f0
movq -0x128(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0xa0(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
cmpl $0x6, -0x2c(%rbp)
jne 0x6564a
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x6564a
movq -0xf8(%rbp), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rdi
movq 0x20(%rax), %rsi
callq 0x421f0
testb $0x1, %al
jne 0x655fc
jmp 0x6564a
movq -0x18(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x20(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x41c10
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x495f0
movq -0x130(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0xb8(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
cmpl $0x2, -0x2c(%rbp)
jne 0x656a3
movq -0x18(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x20(%rbp), %rsi
leaq -0xd8(%rbp), %rdi
callq 0x41c10
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x495f0
movq -0x138(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0xd0(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
cmpl $0x2, -0x2c(%rbp)
jne 0x65722
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x65722
movq -0xf8(%rbp), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rdi
movq 0x20(%rax), %rsi
callq 0x60820
testb $0x1, %al
jne 0x656d7
jmp 0x65722
movq -0x18(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x20(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x41c10
leaq -0xe8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x495f0
movq -0x140(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0xe8(%rbp), %rsi
callq 0x644c0
movb $0x1, -0x1(%rbp)
jmp 0x65747
jmp 0x65743
leaq 0x9031(%rip), %rdi      # 0x6e75c
leaq 0x5c23(%rip), %rsi      # 0x6b355
movl $0x2639, %edx           # imm = 0x2639
leaq 0x9463(%rip), %rcx      # 0x6eba1
callq 0x7180
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopw %cs:(%rax,%rax)