// File: /workspace/github_c_makefile_star2_O0/been-jamming[P]MinimalCC/expression.c
// Function: get_operation
operation get_operation(char **c){
	operation output;

	skip_whitespace(c);
	switch(**c){
		case '+':
			output = operation_add;
			break;
		case '-':
			output = operation_subtract;
			break;
		case '*':
			output = operation_multiply;
			break;
		case '/':
			output = operation_divide;
			break;
		case '%':
			output = operation_modulo;
			break;
		case '=':
			if((*c)[1] == '='){
				output = operation_equals;
				++*c;
			} else {
				output = operation_assign;
			}
			break;
		case '!':
			if((*c)[1] == '='){
				output = operation_not_equals;
				++*c;
			} else {
				output = operation_none;
			}
			break;
		case '>':
			if((*c)[1] == '>'){
				output = operation_shift_right;
				++*c;
			} else if((*c)[1] == '='){
				output = operation_greater_than_or_equal;
				++*c;
			} else {
				output = operation_greater_than;
			}
			break;
		case '<':
			if((*c)[1] == '<'){
				output = operation_shift_left;
				++*c;
			} else if((*c)[1] == '='){
				output = operation_less_than_or_equal;
				++*c;
			} else {
				output = operation_less_than;
			}
			break;
		case '&':
			if((*c)[1] == '&'){
				output = operation_logical_and;
				++*c;
			} else {
				output = operation_and;
			}
			break;
		case '|':
			if((*c)[1] == '|'){
				output = operation_logical_or;
				++*c;
			} else {
				output = operation_or;
			}
			break;
		default:
			output = operation_none;
			break;
	}
	++*c;
	return output;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xbb70
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
addl $-0x21, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x5b, %eax
ja 0x773e
movq (%rsp), %rax
leaq 0x5c61(%rip), %rcx      # 0xd1bc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x1, 0xc(%rsp)
jmp 0x7746
movl $0x2, 0xc(%rsp)
jmp 0x7746
movl $0x3, 0xc(%rsp)
jmp 0x7746
movl $0x4, 0xc(%rsp)
jmp 0x7746
movl $0xe, 0xc(%rsp)
jmp 0x7746
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3d, %eax
jne 0x75cf
movl $0xa, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x75d7
movl $0x5, 0xc(%rsp)
jmp 0x7746
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3d, %eax
jne 0x7606
movl $0xb, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x760e
movl $0x0, 0xc(%rsp)
jmp 0x7746
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3e, %eax
jne 0x763d
movl $0x12, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x7671
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3d, %eax
jne 0x7667
movl $0x9, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x766f
movl $0x7, 0xc(%rsp)
jmp 0x7671
jmp 0x7746
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3c, %eax
jne 0x76a0
movl $0x11, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x76d4
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3d, %eax
jne 0x76ca
movl $0x8, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x76d2
movl $0x6, 0xc(%rsp)
jmp 0x76d4
jmp 0x7746
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x26, %eax
jne 0x7700
movl $0xf, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x7708
movl $0xc, 0xc(%rsp)
jmp 0x7746
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x7c, %eax
jne 0x7734
movl $0x10, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x773c
movl $0xd, 0xc(%rsp)
jmp 0x7746
movl $0x0, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movl 0xc(%rsp), %eax
addq $0x18, %rsp
retq
nop