// File: /workspace/github_c_makefile_star2_O3/nimble-code[P]gh_cpp/Src/gh_cpp3.c
// Function: interpret
static int
interpret(void)
{	int v, w;

	switch (valstack[--valptr].tok) {
	case VAL:	valptr++; break;
	case UMIN:	One_Arg(-(v)); break;
	case UPLUS:	One_Arg(+(v)); break;
	case TILDE:	One_Arg(~(v)); break;
	case LNOT:	One_Arg(!(v)); break;
	case TIMES:	Two_Args(v * w); break;
	case DIVIDE:	do_division(); break;
	case MOD:	Two_Args(v % w); break;
	case PLUS:	Two_Args(v + w); break;
	case MINUS:	Two_Args(v - w); break;
	case BAND:	Two_Args(v & w); break;
	case BOR:	Two_Args(v | w); break;
	case XOR:	Two_Args(v ^ w); break;
	case GT:	Two_Args(v > w); break;
	case LT:	Two_Args(v < w); break;
	case EQ:	Two_Args(v == w); break;
	case NE:	Two_Args(v != w); break;
	case GE:	Two_Args(v >= w); break;
	case LE:	Two_Args(v <= w); break;
	case LOR:	emit(VAL, do_bool(LOR)); break;
	case LAND:	emit(VAL, do_bool(LAND)); break;
	case LS:	emit(VAL, do_shift(LS)); break;
	case RS:	emit(VAL, do_shift(RS)); break;
	case QUEST:	syntax_error("internal error1"); break;
	case COLON:	do_colon(); break;
	default:	syntax_error("internal error2"); break;
	}

	if (verbose>1) dump_stack("now");

	assert(valstack[valptr-1].tok == VAL);
	return valstack[--valptr].val;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movslq 0xd1c2(%rip), %rax      # 0x168ac
leaq -0x1(%rax), %rcx
movl %ecx, 0xd1b8(%rip)      # 0x168ac
leaq 0xd1b5(%rip), %r14      # 0x168b0
movl -0x4(%r14,%rax,8), %ecx
addl $-0x4, %ecx
cmpl $0x1b, %ecx
ja 0x9979
leaq 0x5c51(%rip), %rdx      # 0xf364
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl %eax, 0xd18a(%rip)      # 0x168ac
jmp 0x98cb
callq 0x96dc
notl %eax
jmp 0x98bf
movl $0x1b, %edi
jmp 0x9758
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %esi, %esi
cmpl %ebx, %eax
setg %sil
jmp 0x98ae
movl $0x1a, %edi
callq 0x9d76
jmp 0x98bf
callq 0x96dc
xorl %esi, %esi
testl %eax, %eax
jmp 0x9856
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %esi, %esi
cmpl %ebx, %eax
setl %sil
jmp 0x98ae
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
orl %eax, %ebx
jmp 0x9881
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %eax, %ebx
jmp 0x9881
callq 0x96dc
testl %eax, %eax
je 0x9906
movl %eax, %ebx
callq 0x96dc
cltd
idivl %ebx
jmp 0x98bf
callq 0x96dc
negl %eax
jmp 0x98bf
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %esi, %esi
cmpl %ebx, %eax
setge %sil
jmp 0x98ae
movl $0x1c, %edi
jmp 0x98ba
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
cltd
idivl %ebx
movl $0x4, %edi
movl %edx, %esi
jmp 0x98c6
callq 0x96dc
jmp 0x98bf
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %esi, %esi
cmpl %ebx, %eax
setne %sil
jmp 0x98ae
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
imull %eax, %ebx
jmp 0x9881
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %esi, %esi
cmpl %ebx, %eax
sete %sil
jmp 0x98ae
callq 0x9ede
jmp 0x98cb
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
addl %eax, %ebx
jmp 0x9881
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
andl %eax, %ebx
movl $0x4, %edi
movl %ebx, %esi
jmp 0x98c6
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
subl %ebx, %eax
jmp 0x98bf
callq 0x96dc
movl %eax, %ebx
callq 0x96dc
xorl %esi, %esi
cmpl %ebx, %eax
setle %sil
movl $0x4, %edi
jmp 0x98c6
movl $0x1d, %edi
callq 0x9e0d
movl $0x4, %edi
movl %eax, %esi
callq 0x9d01
leaq 0xa5de(%rip), %rax      # 0x13eb0
cmpl $0x2, (%rax)
jl 0x98e3
leaq 0x5d11(%rip), %rdi      # 0xf5ef
callq 0x959b
movslq 0xcfc2(%rip), %rax      # 0x168ac
cmpl $0x4, -0x4(%r14,%rax,8)
jne 0x994e
leaq -0x1(%rax), %rcx
movl %ecx, 0xcfb0(%rip)      # 0x168ac
movl -0x8(%r14,%rax,8), %eax
popq %rbx
popq %r14
popq %rbp
retq
movabsq $0x6f72657a207962, %rax # imm = 0x6F72657A207962
movq %rax, 0xcb90(%rip)      # 0x164a7
movabsq $0x6220656469766964, %rax # imm = 0x6220656469766964
movq %rax, 0xcb78(%rip)      # 0x164a0
cmpl $0x0, 0xd781(%rip)      # 0x170b0
jne 0x993d
leaq 0x5cfc(%rip), %rdi      # 0xf634
callq 0x4a2c
callq 0x96dc
movl $0x4, %edi
xorl %esi, %esi
jmp 0x98c6
leaq 0x5c9e(%rip), %rdi      # 0xf5f3
leaq 0x5b7f(%rip), %rsi      # 0xf4db
leaq 0x5cae(%rip), %rcx      # 0xf611
movl $0x19f, %edx            # imm = 0x19F
callq 0x40e0
leaq 0x5c5b(%rip), %rdi      # 0xf5cf
callq 0x964d
leaq 0x5c5f(%rip), %rdi      # 0xf5df
callq 0x964d