// File: /workspace/github_c_makefile_star2_O0/mist64[P]cbm6502asm/src/express.c
// Function: do_oper
void do_oper() { /* perform binary operations */

	long l = stack[vsp++];
	char c = opstk[osp++];
	if (vsp > MAXESTK) {
		vsp = MAXESTK;
		display_error(error = 'C');
	}
	if (osp > MAXESTK) {
		osp = MAXESTK;
		display_error(error = 'C');
	}
	lastval = TRUE;
	switch (c) {
		case '+':
			stack[vsp] += l;
			break;
		case '-':
			stack[vsp] -= l;
			break;
		case '*':
			stack[vsp] *= l;
			break;
		case '^':
			stack[vsp] ^= l;
			break;
		case '&':
			stack[vsp] &= l;
			break;
		case '|':
			stack[vsp] |= l;
			break;
		case '/':
			if (l)
				stack[vsp] /= l; /* divide by 0? */
			else
				display_error(error = 'E');
			break;
		default:
			display_error(error = 'C');
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl 0xb102(%rip), %eax      # 0x11460
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xb0f7(%rip)      # 0x11460
movslq %eax, %rcx
leaq 0xaf5d(%rip), %rax      # 0x112d0
movq (%rax,%rcx,8), %rax
movq %rax, -0x8(%rbp)
movl 0xb0e3(%rip), %eax      # 0x11464
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xb0d8(%rip)      # 0x11464
movslq %eax, %rcx
leaq 0xb0da(%rip), %rax      # 0x11470
movb (%rax,%rcx), %al
movb %al, -0x9(%rbp)
cmpl $0x32, 0xb0bd(%rip)     # 0x11460
jle 0x63c3
movl $0x32, 0xb0b1(%rip)     # 0x11460
leaq 0xaa2a(%rip), %rax      # 0x10de0
movb $0x43, (%rax)
movl $0x43, %edi
callq 0x2350
cmpl $0x32, 0xb09a(%rip)     # 0x11464
jle 0x63ea
movl $0x32, 0xb08e(%rip)     # 0x11464
leaq 0xaa03(%rip), %rax      # 0x10de0
movb $0x43, (%rax)
movl $0x43, %edi
callq 0x2350
movl $0x1, 0xb074(%rip)      # 0x11468
movsbl -0x9(%rbp), %eax
movl %eax, -0x10(%rbp)
subl $0x26, %eax
je 0x64f1
jmp 0x6406
movl -0x10(%rbp), %eax
subl $0x2a, %eax
je 0x64a4
jmp 0x6414
movl -0x10(%rbp), %eax
subl $0x2b, %eax
je 0x6455
jmp 0x641e
movl -0x10(%rbp), %eax
subl $0x2d, %eax
je 0x647b
jmp 0x6428
movl -0x10(%rbp), %eax
subl $0x2f, %eax
je 0x6537
jmp 0x6436
movl -0x10(%rbp), %eax
subl $0x5e, %eax
je 0x64cb
jmp 0x6444
movl -0x10(%rbp), %eax
subl $0x7c, %eax
je 0x6514
jmp 0x657f
movq -0x8(%rbp), %rdx
movslq 0xb000(%rip), %rcx      # 0x11460
leaq 0xae69(%rip), %rax      # 0x112d0
addq (%rax,%rcx,8), %rdx
leaq 0xae5e(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x6593
movq -0x8(%rbp), %rax
movslq 0xafda(%rip), %rcx      # 0x11460
leaq 0xae43(%rip), %rdx      # 0x112d0
movq (%rdx,%rcx,8), %rdx
subq %rax, %rdx
leaq 0xae35(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x6593
movq -0x8(%rbp), %rdx
movslq 0xafb1(%rip), %rcx      # 0x11460
leaq 0xae1a(%rip), %rax      # 0x112d0
imulq (%rax,%rcx,8), %rdx
leaq 0xae0e(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x6593
movq -0x8(%rbp), %rdx
movslq 0xaf8a(%rip), %rcx      # 0x11460
leaq 0xadf3(%rip), %rax      # 0x112d0
xorq (%rax,%rcx,8), %rdx
leaq 0xade8(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x6593
movq -0x8(%rbp), %rdx
movslq 0xaf64(%rip), %rcx      # 0x11460
leaq 0xadcd(%rip), %rax      # 0x112d0
andq (%rax,%rcx,8), %rdx
leaq 0xadc2(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x6593
movq -0x8(%rbp), %rdx
movslq 0xaf41(%rip), %rcx      # 0x11460
leaq 0xadaa(%rip), %rax      # 0x112d0
orq (%rax,%rcx,8), %rdx
leaq 0xad9f(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x6593
cmpq $0x0, -0x8(%rbp)
je 0x6569
movq -0x8(%rbp), %rsi
movslq 0xaf17(%rip), %rcx      # 0x11460
leaq 0xad80(%rip), %rax      # 0x112d0
movq (%rax,%rcx,8), %rax
cqto
idivq %rsi
movq %rax, %rdx
leaq 0xad6d(%rip), %rax      # 0x112d0
movq %rdx, (%rax,%rcx,8)
jmp 0x657d
leaq 0xa870(%rip), %rax      # 0x10de0
movb $0x45, (%rax)
movl $0x45, %edi
callq 0x2350
jmp 0x6593
leaq 0xa85a(%rip), %rax      # 0x10de0
movb $0x43, (%rax)
movl $0x43, %edi
callq 0x2350
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)