// File: jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: pugi::impl::(anonymous namespace)::xpath_ast_node::apply_predicate_number_const(pugi::impl::(anonymous namespace)::xpath_node_set_raw&, unsigned long, pugi::impl::(anonymous namespace)::xpath_ast_node*, pugi::impl::(anonymous namespace)::xpath_stack const&)
static void apply_predicate_number_const(xpath_node_set_raw& ns, size_t first, xpath_ast_node* expr, const xpath_stack& stack)
		{
			assert(ns.size() >= first);
			assert(expr->rettype() == xpath_type_number);

			size_t size = ns.size() - first;

			xpath_node* last = ns.begin() + first;

			xpath_context c(xpath_node(), 1, size);

			double er = expr->eval_number(c, stack);

			if (er >= 1.0 && er <= size)
			{
				size_t eri = static_cast<size_t>(er);

				if (er == eri)
				{
					xpath_node r = last[eri - 1];

					*last++ = r;
				}
			}

			ns.truncate(last);
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x61380
cmpq -0x10(%rbp), %rax
jb 0x64afc
jmp 0x64b1b
leaq 0x9ded(%rip), %rdi      # 0x6e8f0
leaq 0x684b(%rip), %rsi      # 0x6b355
movl $0x259a, %edx           # imm = 0x259A
leaq 0x9ded(%rip), %rcx      # 0x6e903
callq 0x7180
movq -0x18(%rbp), %rdi
callq 0x4b490
cmpl $0x2, %eax
jne 0x64b2b
jmp 0x64b4a
leaq 0x9e72(%rip), %rdi      # 0x6e9a4
leaq 0x681c(%rip), %rsi      # 0x6b355
movl $0x259b, %edx           # imm = 0x259B
leaq 0x9dbe(%rip), %rcx      # 0x6e903
callq 0x7180
movq -0x8(%rbp), %rdi
callq 0x61380
subq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4ed40
movq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x495c0
movq -0x28(%rbp), %rcx
leaq -0x50(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movl $0x1, %edx
callq 0x4b5d0
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0x50(%rbp), %rsi
callq 0x4c1a0
movsd %xmm0, -0x68(%rbp)
movsd -0x68(%rbp), %xmm0
movsd 0x676b(%rip), %xmm1     # 0x6b320
ucomisd %xmm1, %xmm0
jb 0x64c9a
movsd -0x68(%rbp), %xmm1
movaps 0x6735(%rip), %xmm2     # 0x6b300
movq -0x28(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0x6734(%rip), %xmm2     # 0x6b310
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0x64c9a
movsd -0x68(%rbp), %xmm0
movsd 0x6726(%rip), %xmm2     # 0x6b328
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
cvttsd2si %xmm0, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movsd -0x68(%rbp), %xmm0
movaps 0x66d0(%rip), %xmm2     # 0x6b300
movq -0x70(%rbp), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x66cf(%rip), %xmm2     # 0x6b310
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jne 0x64c98
jp 0x64c98
movq -0x30(%rbp), %rax
movq -0x70(%rbp), %rcx
subq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x80(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x30(%rbp), %rax
movq %rax, %rcx
addq $0x10, %rcx
movq %rcx, -0x30(%rbp)
movq -0x80(%rbp), %rcx
movq %rcx, (%rax)
movq -0x78(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x64c9a
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x64fb0
addq $0x80, %rsp
popq %rbp
retq