// File: /workspace/github_c_makefile_star2_O0/Oric4ever[P]lcc65/6502/build/../src/enode.c
// Function: addnode
static Tree addnode(int op, Tree l, Tree r) {
	int n;
	Type ty = inttype;

	if (isarith(l->type) && isarith(r->type)) {
		ty = binary(l->type, r->type);
		l = cast(l, ty);
		r = cast(r, ty);
	} else if (isptr(l->type) && isint(r->type))
		return addnode(ADD, r, l);
	else if (isptr(r->type) && isint(l->type)) {
		ty = unqual(r->type);
		if ((n = ty->type->size) == 0)
			error("unknown size of type `%t'\n", ty->type);
		l = cast(l, promote(l->type));
		if (n > 1)
			l = mulnode(MUL, constnode(n, inttype), l);
		return simplify(ADD+P, ty, l, r);
	} else
		typeerror(op, l, r);
	return simplify(op, ty, l, r);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl %edi, -0xc(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
leaq 0x3915b(%rip), %rax     # 0x441f8
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb0c3
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0xb0cf
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
cmpl $0x6, (%rax)
ja 0xb14c
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb0f7
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0xb103
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpl $0x6, (%rax)
ja 0xb14c
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xc840
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xe9b0
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xe9b0
movq %rax, -0x20(%rbp)
jmp 0xb38d
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb16b
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0xb177
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpl $0x7, (%rax)
jne 0xb207
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb1a3
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0xb1af
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x3, (%rax)
jb 0xb207
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb1d7
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0xb1e3
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpl $0x6, (%rax)
ja 0xb207
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl $0x130, %edi            # imm = 0x130
callq 0xb080
movq %rax, -0x8(%rbp)
jmp 0xb3a5
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb226
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0xb232
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpl $0x7, (%rax)
jne 0xb379
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb25e
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0xb26a
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
cmpl $0x3, (%rax)
jb 0xb379
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb296
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0xb2a2
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpl $0x6, (%rax)
ja 0xb379
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0xb2ce
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x78(%rbp)
jmp 0xb2da
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
jne 0xb30b
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
leaq 0x24a3e(%rip), %rdi     # 0x2fd42
movb $0x0, %al
callq 0xd530
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xfae0
movq -0x80(%rbp), %rdi
movq %rax, %rsi
callq 0xe9b0
movq %rax, -0x18(%rbp)
cmpl $0x1, -0x24(%rbp)
jle 0xb35d
movl -0x24(%rbp), %edi
leaq 0x38eb8(%rip), %rax     # 0x441f8
movq (%rax), %rsi
callq 0xc7b0
movq %rax, %rsi
movq -0x18(%rbp), %rdx
movl $0x1d0, %edi            # imm = 0x1D0
callq 0xb3c0
movq %rax, -0x18(%rbp)
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0x137, %edi            # imm = 0x137
callq 0x1c390
movq %rax, -0x8(%rbp)
jmp 0xb3a5
movl -0xc(%rbp), %edi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xc6a0
jmp 0xb38b
jmp 0xb38d
movl -0xc(%rbp), %edi
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x1c390
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)