// File: jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: bool pugi::impl::(anonymous namespace)::xpath_ast_node::compare_rel<pugi::impl::(anonymous namespace)::less>(pugi::impl::(anonymous namespace)::xpath_ast_node*, pugi::impl::(anonymous namespace)::xpath_ast_node*, pugi::impl::(anonymous namespace)::xpath_context const&, pugi::impl::(anonymous namespace)::xpath_stack const&, pugi::impl::(anonymous namespace)::less const&)
static bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp)
		{
			xpath_value_type lt = lhs->rettype(), rt = rhs->rettype();

			if (lt != xpath_type_node_set && rt != xpath_type_node_set)
				return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack));
			else if (lt == xpath_type_node_set && rt == xpath_type_node_set)
			{
				xpath_allocator_capture cr(stack.result);

				xpath_node_set_raw ls = lhs->eval_node_set(c, stack, nodeset_eval_all);
				xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all);

				for (const xpath_node* li = ls.begin(); li != ls.end(); ++li)
				{
					xpath_allocator_capture cri(stack.result);

					double l = convert_string_to_number(string_value(*li, stack.result).c_str());

					for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri)
					{
						xpath_allocator_capture crii(stack.result);

						if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str())))
							return true;
					}
				}

				return false;
			}
			else if (lt != xpath_type_node_set && rt == xpath_type_node_set)
			{
				xpath_allocator_capture cr(stack.result);

				double l = lhs->eval_number(c, stack);
				xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all);

				for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri)
				{
					xpath_allocator_capture cri(stack.result);

					if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str())))
						return true;
				}

				return false;
			}
			else if (lt == xpath_type_node_set && rt != xpath_type_node_set)
			{
				xpath_allocator_capture cr(stack.result);

				xpath_node_set_raw ls = lhs->eval_node_set(c, stack, nodeset_eval_all);
				double r = rhs->eval_number(c, stack);

				for (const xpath_node* li = ls.begin(); li != ls.end(); ++li)
				{
					xpath_allocator_capture cri(stack.result);

					if (comp(convert_string_to_number(string_value(*li, stack.result).c_str()), r))
						return true;
				}

				return false;
			}
			else
			{
				assert(false && "Wrong types"); // unreachable
				return false;
			}
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4b490
movl %eax, -0x34(%rbp)
movq -0x18(%rbp), %rdi
callq 0x4b490
movl %eax, -0x38(%rbp)
cmpl $0x1, -0x34(%rbp)
je 0x5f7f8
cmpl $0x1, -0x38(%rbp)
je 0x5f7f8
movq -0x30(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x4c1a0
movsd %xmm0, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x4c1a0
movq -0x278(%rbp), %rdi
movsd %xmm0, -0x48(%rbp)
leaq -0x40(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x61280
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x5ff86
cmpl $0x1, -0x34(%rbp)
jne 0x5fb2d
cmpl $0x1, -0x38(%rbp)
jne 0x5fb2d
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x68(%rbp), %rdi
callq 0x607e0
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0x88(%rbp), %rdi
xorl %r8d, %r8d
callq 0x4e6d0
jmp 0x5f839
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0xb8(%rbp), %rdi
xorl %r8d, %r8d
callq 0x4e6d0
jmp 0x5f856
leaq -0x88(%rbp), %rdi
callq 0x4ed40
movq %rax, -0x280(%rbp)
jmp 0x5f86b
movq -0x280(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0x290(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x4ed60
movq %rax, -0x288(%rbp)
jmp 0x5f89c
movq -0x290(%rbp), %rax
movq -0x288(%rbp), %rcx
cmpq %rcx, %rax
je 0x5fb03
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x607e0
jmp 0x5f8c8
movq -0xc0(%rbp), %rsi
movq -0x28(%rbp), %rax
movq (%rax), %rdx
leaq -0x100(%rbp), %rdi
callq 0x60a90
jmp 0x5f8e4
leaq -0x100(%rbp), %rdi
callq 0x4e1e0
movq %rax, -0x298(%rbp)
jmp 0x5f8f9
movq -0x298(%rbp), %rdi
callq 0x5cfa0
movsd %xmm0, -0x2a0(%rbp)
jmp 0x5f90f
movsd -0x2a0(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x4ed40
movq %rax, -0x2a8(%rbp)
jmp 0x5f934
movq -0x2a8(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x2b8(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x4ed60
movq %rax, -0x2b0(%rbp)
jmp 0x5f965
movq -0x2b8(%rbp), %rax
movq -0x2b0(%rbp), %rcx
cmpq %rcx, %rax
je 0x5faba
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x128(%rbp), %rdi
callq 0x607e0
jmp 0x5f991
movq -0x30(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movq -0x108(%rbp), %rsi
movq -0x28(%rbp), %rax
movq (%rax), %rdx
leaq -0x148(%rbp), %rdi
callq 0x60a90
jmp 0x5f9b8
leaq -0x148(%rbp), %rdi
callq 0x4e1e0
movq %rax, -0x2c8(%rbp)
jmp 0x5f9cd
movq -0x2c8(%rbp), %rdi
callq 0x5cfa0
movsd %xmm0, -0x2d0(%rbp)
jmp 0x5f9e3
movq -0x2c0(%rbp), %rdi
movsd -0x2d0(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
leaq -0xe8(%rbp), %rsi
leaq -0x130(%rbp), %rdx
callq 0x61280
movb %al, -0x2d1(%rbp)
jmp 0x5fa15
movb -0x2d1(%rbp), %al
testb $0x1, %al
jne 0x5fa21
jmp 0x5fa7f
movb $0x1, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
jmp 0x5fa89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5fb1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5faf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x60890
jmp 0x5faf5
movl $0x0, -0x14c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x60890
movl -0x14c(%rbp), %eax
testl %eax, %eax
jne 0x5fac4
jmp 0x5faa1
jmp 0x5faa3
movq -0x108(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x108(%rbp)
jmp 0x5f942
movl $0x0, -0x14c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x60890
movl -0x14c(%rbp), %eax
testl %eax, %eax
jne 0x5fb11
jmp 0x5fadc
jmp 0x5fade
movq -0xc0(%rbp), %rax
addq $0x10, %rax
movq %rax, -0xc0(%rbp)
jmp 0x5f879
leaq -0xe0(%rbp), %rdi
callq 0x60890
jmp 0x5fb1f
movb $0x0, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x60890
jmp 0x5ff86
leaq -0x68(%rbp), %rdi
callq 0x60890
jmp 0x5ff94
cmpl $0x1, -0x34(%rbp)
je 0x5fd4d
cmpl $0x1, -0x38(%rbp)
jne 0x5fd4d
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x170(%rbp), %rdi
callq 0x607e0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x4c1a0
movsd %xmm0, -0x2e0(%rbp)
jmp 0x5fb6f
movsd -0x2e0(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0x198(%rbp), %rdi
xorl %r8d, %r8d
callq 0x4e6d0
jmp 0x5fb9c
leaq -0x198(%rbp), %rdi
callq 0x4ed40
movq %rax, -0x2e8(%rbp)
jmp 0x5fbb1
movq -0x2e8(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x4ed60
movq %rax, -0x2f0(%rbp)
jmp 0x5fbe2
movq -0x2f8(%rbp), %rax
movq -0x2f0(%rbp), %rcx
cmpq %rcx, %rax
je 0x5fd1d
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x607e0
jmp 0x5fc0e
movq -0x30(%rbp), %rax
movq %rax, -0x300(%rbp)
movq -0x1a0(%rbp), %rsi
movq -0x28(%rbp), %rax
movq (%rax), %rdx
leaq -0x1e0(%rbp), %rdi
callq 0x60a90
jmp 0x5fc35
leaq -0x1e0(%rbp), %rdi
callq 0x4e1e0
movq %rax, -0x308(%rbp)
jmp 0x5fc4a
movq -0x308(%rbp), %rdi
callq 0x5cfa0
movsd %xmm0, -0x310(%rbp)
jmp 0x5fc60
movq -0x300(%rbp), %rdi
movsd -0x310(%rbp), %xmm0
movsd %xmm0, -0x1c8(%rbp)
leaq -0x178(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
callq 0x61280
movb %al, -0x311(%rbp)
jmp 0x5fc92
movb -0x311(%rbp), %al
testb $0x1, %al
jne 0x5fc9e
jmp 0x5fce2
movb $0x1, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
jmp 0x5fcec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5fd3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x60890
jmp 0x5fd3c
movl $0x0, -0x14c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x60890
movl -0x14c(%rbp), %eax
testl %eax, %eax
jne 0x5fd2b
jmp 0x5fd04
jmp 0x5fd06
movq -0x1a0(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x1a0(%rbp)
jmp 0x5fbbf
movb $0x0, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x60890
jmp 0x5ff86
leaq -0x170(%rbp), %rdi
callq 0x60890
jmp 0x5ff94
cmpl $0x1, -0x34(%rbp)
jne 0x5ff67
cmpl $0x1, -0x38(%rbp)
je 0x5ff67
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x200(%rbp), %rdi
callq 0x607e0
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0x220(%rbp), %rdi
xorl %r8d, %r8d
callq 0x4e6d0
jmp 0x5fd91
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x4c1a0
movsd %xmm0, -0x320(%rbp)
jmp 0x5fdac
movsd -0x320(%rbp), %xmm0
movsd %xmm0, -0x228(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x4ed40
movq %rax, -0x328(%rbp)
jmp 0x5fdd1
movq -0x328(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rax
movq %rax, -0x338(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x4ed60
movq %rax, -0x330(%rbp)
jmp 0x5fe02
movq -0x338(%rbp), %rax
movq -0x330(%rbp), %rcx
cmpq %rcx, %rax
je 0x5ff3d
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x250(%rbp), %rdi
callq 0x607e0
jmp 0x5fe2e
movq -0x30(%rbp), %rax
movq %rax, -0x340(%rbp)
movq -0x230(%rbp), %rsi
movq -0x28(%rbp), %rax
movq (%rax), %rdx
leaq -0x270(%rbp), %rdi
callq 0x60a90
jmp 0x5fe55
leaq -0x270(%rbp), %rdi
callq 0x4e1e0
movq %rax, -0x348(%rbp)
jmp 0x5fe6a
movq -0x348(%rbp), %rdi
callq 0x5cfa0
movsd %xmm0, -0x350(%rbp)
jmp 0x5fe80
movq -0x340(%rbp), %rdi
movsd -0x350(%rbp), %xmm0
movsd %xmm0, -0x258(%rbp)
leaq -0x258(%rbp), %rsi
leaq -0x228(%rbp), %rdx
callq 0x61280
movb %al, -0x351(%rbp)
jmp 0x5feb2
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x5febe
jmp 0x5ff02
movb $0x1, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
jmp 0x5ff0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5ff59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x60890
jmp 0x5ff59
movl $0x0, -0x14c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x60890
movl -0x14c(%rbp), %eax
testl %eax, %eax
jne 0x5ff4b
jmp 0x5ff24
jmp 0x5ff26
movq -0x230(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x230(%rbp)
jmp 0x5fddf
movb $0x0, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x60890
jmp 0x5ff86
leaq -0x200(%rbp), %rdi
callq 0x60890
jmp 0x5ff94
leaq 0xde68(%rip), %rdi      # 0x6ddd6
leaq 0xb3e0(%rip), %rsi      # 0x6b355
movl $0x255f, %edx           # imm = 0x255F
leaq 0xe10d(%rip), %rcx      # 0x6e08e
callq 0x7180
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x7600