// File: jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: pugi::impl::(anonymous namespace)::xpath_parser::binary_op_t::parse(pugi::impl::(anonymous namespace)::xpath_lexer&)
static binary_op_t parse(xpath_lexer& lexer)
			{
				switch (lexer.current())
				{
				case lex_string:
					if (lexer.contents() == PUGIXML_TEXT("or"))
						return binary_op_t(ast_op_or, xpath_type_boolean, 1);
					else if (lexer.contents() == PUGIXML_TEXT("and"))
						return binary_op_t(ast_op_and, xpath_type_boolean, 2);
					else if (lexer.contents() == PUGIXML_TEXT("div"))
						return binary_op_t(ast_op_divide, xpath_type_number, 6);
					else if (lexer.contents() == PUGIXML_TEXT("mod"))
						return binary_op_t(ast_op_mod, xpath_type_number, 6);
					else
						return binary_op_t();

				case lex_equal:
					return binary_op_t(ast_op_equal, xpath_type_boolean, 3);

				case lex_not_equal:
					return binary_op_t(ast_op_not_equal, xpath_type_boolean, 3);

				case lex_less:
					return binary_op_t(ast_op_less, xpath_type_boolean, 4);

				case lex_greater:
					return binary_op_t(ast_op_greater, xpath_type_boolean, 4);

				case lex_less_or_equal:
					return binary_op_t(ast_op_less_or_equal, xpath_type_boolean, 4);

				case lex_greater_or_equal:
					return binary_op_t(ast_op_greater_or_equal, xpath_type_boolean, 4);

				case lex_plus:
					return binary_op_t(ast_op_add, xpath_type_number, 5);

				case lex_minus:
					return binary_op_t(ast_op_subtract, xpath_type_number, 5);

				case lex_multiply:
					return binary_op_t(ast_op_multiply, xpath_type_number, 6);

				case lex_union:
					return binary_op_t(ast_op_union, xpath_type_node_set, 7);

				default:
					return binary_op_t();
				}
			}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5af60
decl %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x13, %eax
ja 0x5de9f
movq -0x30(%rbp), %rax
leaq 0xd283(%rip), %rcx      # 0x6af24
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rdi
callq 0x5b700
movq %rax, %rdi
leaq 0xfb8a(%rip), %rsi      # 0x6d847
callq 0x5baa0
testb $0x1, %al
jne 0x5dcc8
jmp 0x5dce2
leaq -0xc(%rbp), %rdi
movl $0x1, %ecx
movl $0x4, %edx
movl %ecx, %esi
callq 0x5ded0
jmp 0x5dea8
movq -0x18(%rbp), %rdi
callq 0x5b700
movq %rax, %rdi
leaq 0xbfcc(%rip), %rsi      # 0x69cc1
callq 0x5baa0
testb $0x1, %al
jne 0x5dd00
jmp 0x5dd1a
leaq -0xc(%rbp), %rdi
movl $0x2, %ecx
movl $0x4, %edx
movl %ecx, %esi
callq 0x5ded0
jmp 0x5dea8
movq -0x18(%rbp), %rdi
callq 0x5b700
movq %rax, %rdi
leaq 0xfee1(%rip), %rsi      # 0x6dc0e
callq 0x5baa0
testb $0x1, %al
jne 0x5dd38
jmp 0x5dd55
leaq -0xc(%rbp), %rdi
movl $0xc, %esi
movl $0x2, %edx
movl $0x6, %ecx
callq 0x5ded0
jmp 0x5dea8
movq -0x18(%rbp), %rdi
callq 0x5b700
movq %rax, %rdi
leaq 0xfeaa(%rip), %rsi      # 0x6dc12
callq 0x5baa0
testb $0x1, %al
jne 0x5dd73
jmp 0x5dd90
leaq -0xc(%rbp), %rdi
movl $0xd, %esi
movl $0x2, %edx
movl $0x6, %ecx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
callq 0x5df00
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x3, %ecx
movl $0x4, %edx
movl %ecx, %esi
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x4, %edx
movl $0x3, %ecx
movl %edx, %esi
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x5, %esi
movl $0x4, %ecx
movl %ecx, %edx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x6, %esi
movl $0x4, %ecx
movl %ecx, %edx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x7, %esi
movl $0x4, %ecx
movl %ecx, %edx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x8, %esi
movl $0x4, %ecx
movl %ecx, %edx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0x9, %esi
movl $0x2, %edx
movl $0x5, %ecx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0xa, %esi
movl $0x2, %edx
movl $0x5, %ecx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0xb, %esi
movl $0x2, %edx
movl $0x6, %ecx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
movl $0xf, %esi
movl $0x1, %edx
movl $0x7, %ecx
callq 0x5ded0
jmp 0x5dea8
leaq -0xc(%rbp), %rdi
callq 0x5df00
movl -0x4(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0xc(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl -0x20(%rbp), %edx
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)