// File: /workspace/github_c_makefile_star2_O0/Oric4ever[P]lcc65/6502/build/../src/expr.c
// Function: postfix
static Tree postfix(p) Tree p; {
	Tree q;
	Type ty;

	for (;;)
		switch (t) {
		case INCR: case DECR:
			p = tree(RIGHT, p->type,
				tree(RIGHT, p->type, p, root(incr(t, p, constnode(1, inttype)))),
				p);
			t = gettok();
			continue;
		case '[':
			t = gettok();
			q = expr(']');
			if (YYnull)
				if (isptr(p->type))
					p = nullcheck(p);
				else if (isptr(q->type))
					q = nullcheck(q);
			q = pointer(q);
			p = (*opnode['+'])(ADD, pointer(p), q);
			if (isptr(p->type) && isarray(p->type->type))
				p = retype(p, p->type->type);
			else
				p = rvalue(p);
			continue;
		case '(': {
			Coordinate pt;
			p = pointer(p);
			if (isptr(p->type) && isfunc(p->type->type))
				ty = p->type->type;
			else {
				error("found `%t' expected a function\n", p->type);
				ty = func(voidtype, 0);
			}
			pt = src;
			t = gettok();
			p = call(p, ty, pt);
			continue;
			}
		case '.':
			t = gettok();
			if (t == ID) {
				if (isstruct(p->type)) {
					q = addrof(p);
					p = field(q, token);	/* refme */
					q = rightkid(q);
					if (isaddrop(q->op) && q->u.sym->temporary) {
						p = tree(RIGHT, p->type, p, 0);
						p->u.sym = q->u.sym;
					}
				} else
					error("left operand of . has incompatible type `%t'\n",
						p->type);
				t = gettok();
			} else
				error("field name expected\n");
			continue;
		case DEREF:
			t = gettok();
			p = pointer(p);
			if (t == ID) {
				if (isptr(p->type))
					ty = deref(p->type);
				if (isptr(p->type) && isstruct(ty)) {
					if (YYnull)
						p = nullcheck(p);
					p = field(p, token);	/* refme */
				} else
					error("left operand of -> has incompatible type `%t'\n",
						p->type);
				t = gettok();
			} else
				error("field name expected\n");
			continue;
		default:
			return p;
		}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x2c3ba(%rip), %rax     # 0x3db80
movl (%rax), %eax
addl $-0x27, %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x34, %eax
ja 0x11e3d
movq -0x30(%rbp), %rax
leaq 0x1e793(%rip), %rcx     # 0x2ff78
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq 0x2c36b(%rip), %rax     # 0x3db80
movl (%rax), %eax
movl %eax, -0x54(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq 0x329cf(%rip), %rax     # 0x441f8
movq (%rax), %rsi
movl $0x1, %edi
callq 0xc7b0
movl -0x54(%rbp), %edi
movq -0x50(%rbp), %rsi
movq %rax, %rdx
callq 0x10150
movq %rax, %rdi
callq 0x25a90
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
movl $0x2a0, %edi            # imm = 0x2A0
callq 0x256f0
movq -0x38(%rbp), %rsi
movq %rax, %rdx
movq -0x8(%rbp), %rcx
movl $0x2a0, %edi            # imm = 0x2A0
callq 0x256f0
movq %rax, -0x8(%rbp)
callq 0x15170
movl %eax, %ecx
leaq 0x2c2f7(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
jmp 0x117bf
callq 0x15170
movl %eax, %ecx
leaq 0x2c2e2(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
movl $0x5d, %edi
callq 0xfc70
movq %rax, -0x10(%rbp)
leaq 0x2c37b(%rip), %rax     # 0x3dc30
cmpq $0x0, (%rax)
je 0x11947
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x118de
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x118ea
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x11902
movq -0x8(%rbp), %rdi
callq 0x11670
movq %rax, -0x8(%rbp)
jmp 0x11945
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11921
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x1192d
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x11943
movq -0x10(%rbp), %rdi
callq 0x11670
movq %rax, -0x10(%rbp)
jmp 0x11945
jmp 0x11947
movq -0x10(%rbp), %rdi
callq 0xf9f0
movq %rax, -0x10(%rbp)
leaq 0x277f5(%rip), %rax     # 0x39150
movq 0x158(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rdi
callq 0xf9f0
movq %rax, %rsi
movq -0x70(%rbp), %rax
movq -0x10(%rbp), %rdx
movl $0x130, %edi            # imm = 0x130
callq *%rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x119a4
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x78(%rbp)
jmp 0x119b0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x11a14
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
cmpl $0xf, (%rax)
jb 0x119e0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
jmp 0x119f0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
cmpl $0xc, (%rax)
jne 0x11a14
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
callq 0x25a20
movq %rax, -0x8(%rbp)
jmp 0x11a21
movq -0x8(%rbp), %rdi
callq 0xf780
movq %rax, -0x8(%rbp)
jmp 0x117bf
movq -0x8(%rbp), %rdi
callq 0xf9f0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11a55
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x88(%rbp)
jmp 0x11a64
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x11acb
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11a9a
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x90(%rbp)
jmp 0x11aad
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
cmpl $0xb, (%rax)
jne 0x11acb
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x11af8
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x1e7ed(%rip), %rdi     # 0x302c7
movb $0x0, %al
callq 0xd530
leaq 0x32758(%rip), %rax     # 0x44240
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x27c60
movq %rax, -0x18(%rbp)
leaq 0x2bfd9(%rip), %rax     # 0x3dad8
movq (%rax), %rcx
movq %rcx, -0x28(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
callq 0x15170
movl %eax, %ecx
leaq 0x2c064(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x12350
movq %rax, -0x8(%rbp)
jmp 0x117bf
callq 0x15170
movl %eax, %ecx
leaq 0x2c036(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
leaq 0x2c02d(%rip), %rax     # 0x3db80
cmpl $0x20, (%rax)
jne 0x11c9e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11b7e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x98(%rbp)
jmp 0x11b8d
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpl $0x9, (%rax)
je 0x11bda
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11bbb
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa0(%rbp)
jmp 0x11bca
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
cmpl $0xa, (%rax)
jne 0x11c76
movq -0x8(%rbp), %rdi
callq 0xdc70
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x2bef6(%rip), %rax     # 0x3dae8
movq (%rax), %rsi
callq 0x101b0
movq %rax, -0x8(%rbp)
movq -0x10(%rbp), %rdi
callq 0xf920
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x107, (%rax)          # imm = 0x107
je 0x11c2f
movq -0x10(%rbp), %rax
cmpl $0x127, (%rax)          # imm = 0x127
je 0x11c2f
movq -0x10(%rbp), %rax
cmpl $0x117, (%rax)          # imm = 0x117
jne 0x11c74
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movb 0x1b(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x11c74
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rdx
movl $0x2a0, %edi            # imm = 0x2A0
xorl %eax, %eax
movl %eax, %ecx
callq 0x256f0
movq %rax, -0x8(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x28(%rax)
jmp 0x11c8c
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x1e662(%rip), %rdi     # 0x302e7
movb $0x0, %al
callq 0xd530
callq 0x15170
movl %eax, %ecx
leaq 0x2bee6(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
jmp 0x11cac
leaq 0x1e670(%rip), %rdi     # 0x30315
movb $0x0, %al
callq 0xd530
jmp 0x117bf
callq 0x15170
movl %eax, %ecx
leaq 0x2bec1(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
movq -0x8(%rbp), %rdi
callq 0xf9f0
movq %rax, -0x8(%rbp)
leaq 0x2beab(%rip), %rax     # 0x3db80
cmpl $0x20, (%rax)
jne 0x11e2a
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11d00
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa8(%rbp)
jmp 0x11d0f
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x11d2c
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x27ec0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xf, (%rax)
jb 0x11d4e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
jmp 0x11d5d
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x11e02
movq -0x18(%rbp), %rax
cmpl $0xf, (%rax)
jb 0x11d87
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xb8(%rbp)
jmp 0x11d92
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
cmpl $0x9, (%rax)
je 0x11dcf
movq -0x18(%rbp), %rax
cmpl $0xf, (%rax)
jb 0x11db8
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xc0(%rbp)
jmp 0x11dc3
movq -0x18(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
cmpl $0xa, (%rax)
jne 0x11e02
leaq 0x2be5a(%rip), %rax     # 0x3dc30
cmpq $0x0, (%rax)
je 0x11de9
movq -0x8(%rbp), %rdi
callq 0x11670
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x2bcf4(%rip), %rax     # 0x3dae8
movq (%rax), %rsi
callq 0x101b0
movq %rax, -0x8(%rbp)
jmp 0x11e18
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x1e519(%rip), %rdi     # 0x3032a
movb $0x0, %al
callq 0xd530
callq 0x15170
movl %eax, %ecx
leaq 0x2bd5a(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
jmp 0x11e38
leaq 0x1e4e4(%rip), %rdi     # 0x30315
movb $0x0, %al
callq 0xd530
jmp 0x117bf
movq -0x8(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
nopw (%rax,%rax)