// File: /workspace/github_cpp_makefile_star2_O3/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 %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
testq %rcx, %rcx
je 0x2f00c
movq %rcx, %r15
movzbl %dil, %ecx
decl %ecx
cmpl $0x7, %ecx
ja 0x2f02b
movq %r8, %rbx
movq %rdx, %r14
movl (%r15), %eax
andl $0xf, %eax
leaq 0x2cb7(%rip), %rdx      # 0x31c08
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
cmpl $0x2, %eax
je 0x2efa6
jmp 0x2efb8
addl $-0x3, %eax
cmpl $0x1, %eax
ja 0x2efb8
jmp 0x2efc1
cmpl $0x5, %eax
jne 0x2efb8
jmp 0x2efc1
cmpl $0x6, %eax
jne 0x2efb8
jmp 0x2efc1
cmpl $0x2, %eax
jne 0x2efb8
movq 0x8(%r15), %rax
testq %rax, %rax
je 0x2efb8
movb (%rsi), %cl
testb %cl, %cl
je 0x2efc1
xorl %edx, %edx
cmpb %cl, (%rax,%rdx)
jne 0x2efb8
movb 0x1(%rsi,%rdx), %cl
incq %rdx
testb %cl, %cl
jne 0x2ef8f
jmp 0x2efc1
cmpl $0x6, %eax
jne 0x2efb8
movq 0x8(%r15), %rdi
testq %rdi, %rdi
je 0x2efb8
callq 0x1d7f1
testb %al, %al
jne 0x2efc1
xorl %eax, %eax
jmp 0x2f002
cmpl $0x2, %eax
jne 0x2efb8
movq %r15, (%rsp)
movq $0x0, 0x8(%rsp)
movq 0x10(%r14), %rax
cmpq 0x18(%r14), %rax
je 0x2eff2
leaq 0x10(%rax), %rcx
movq %rcx, 0x10(%r14)
movq (%rsp), %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x2f000
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x2f806
movb $0x1, %al
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
leaq 0x4db1(%rip), %rdi      # 0x33dc4
leaq 0x2f0b(%rip), %rsi      # 0x31f25
leaq 0x5fd4(%rip), %rcx      # 0x34ff5
movl $0x25f6, %edx           # imm = 0x25F6
callq 0x6120
leaq 0x5ba3(%rip), %rdi      # 0x34bd5
leaq 0x2eec(%rip), %rsi      # 0x31f25
leaq 0x5fb5(%rip), %rcx      # 0x34ff5
movl $0x2639, %edx           # imm = 0x2639
callq 0x6120