// File: CobaltXII[P]cxcc/./parser/parser.hpp
// Function: parser_t::parse_shift_term()
expression_t* parse_shift_term() {
		expression_t* node = parse_additive_term();
		token_t token;
		while (input.peek().type == tk_bi_binary_left_shift ||
			   input.peek().type == tk_bi_binary_right_shift)
		{
			token = input.peek();
			binary_operator_t binary_operator = bi_error;
			if (token.type == tk_bi_binary_left_shift) {
				expect(tk_bi_binary_left_shift);
				binary_operator = bi_binary_left_shift;
			} else if (token.type == tk_bi_binary_right_shift) {
				expect(tk_bi_binary_right_shift);
				binary_operator = bi_binary_right_shift;
			}
			node = new expression_t((binary_expression_t){node, parse_additive_term(), binary_operator}, EXPRESSION_DEBUG);
		}
		return node;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x14cc0
movq %rax, -0x10(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x8e00
movq -0x1a0(%rbp), %rsi
addq $0x20, %rsi
movb $0x0, -0xc9(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xd3a0
jmp 0x14a59
movb $0x1, %al
cmpl $0x29, -0x80(%rbp)
movb %al, -0x1a1(%rbp)
je 0x14a97
movq -0x1a0(%rbp), %rsi
addq $0x20, %rsi
leaq -0xc8(%rbp), %rdi
callq 0xd3a0
jmp 0x14a80
movb $0x1, -0xc9(%rbp)
cmpl $0x2a, -0xc8(%rbp)
sete %al
movb %al, -0x1a1(%rbp)
movb -0x1a1(%rbp), %al
movb %al, -0x1a2(%rbp)
testb $0x1, -0xc9(%rbp)
jne 0x14aae
jmp 0x14aba
leaq -0xc8(%rbp), %rdi
callq 0xb430
leaq -0x80(%rbp), %rdi
callq 0xb430
movb -0x1a2(%rbp), %al
testb $0x1, %al
jne 0x14ad2
jmp 0x14c79
movq -0x1a0(%rbp), %rsi
addq $0x20, %rsi
leaq -0x108(%rbp), %rdi
callq 0xd3a0
jmp 0x14aeb
leaq -0x48(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xb3e0
leaq -0x108(%rbp), %rdi
callq 0xb430
movl $0x1d, -0x10c(%rbp)
cmpl $0x29, -0x48(%rbp)
jne 0x14b80
movq -0x1a0(%rbp), %rsi
leaq -0x148(%rbp), %rdi
movl $0x29, %edx
callq 0xe580
jmp 0x14b31
leaq -0x148(%rbp), %rdi
callq 0xb430
movl $0x19, -0x10c(%rbp)
jmp 0x14bb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x14c9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xb430
jmp 0x14c9d
cmpl $0x2a, -0x48(%rbp)
jne 0x14bb6
movq -0x1a0(%rbp), %rsi
leaq -0x180(%rbp), %rdi
movl $0x2a, %edx
callq 0xe580
jmp 0x14ba0
leaq -0x180(%rbp), %rdi
callq 0xb430
movl $0x1a, -0x10c(%rbp)
jmp 0x14bb8
movl $0x118, %edi            # imm = 0x118
callq 0x32e0
movq %rax, -0x1b0(%rbp)
jmp 0x14bcb
movq -0x1a0(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x190(%rbp), %rax
movq %rax, -0x1c0(%rbp)
callq 0x14cc0
movq %rax, -0x1b8(%rbp)
jmp 0x14bf9
movq -0x1b0(%rbp), %rdi
movq -0x1c0(%rbp), %rax
movq -0x1b8(%rbp), %rcx
movq %rcx, (%rax)
movl -0x10c(%rbp), %eax
movl %eax, -0x188(%rbp)
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x188(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movups -0x198(%rbp), %xmm0
movups %xmm0, (%rax)
callq 0x13070
jmp 0x14c44
movq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x14a3c
movq -0x1b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x118, %esi            # imm = 0x118
callq 0x32f0
jmp 0x14c9d
movq -0x10(%rbp), %rax
movq %rax, -0x1c8(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xb430
movq -0x1c8(%rbp), %rax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0xb430
movq -0x88(%rbp), %rdi
callq 0x34c0
nopw %cs:(%rax,%rax)
nopl (%rax)