// File: /workspace/github_c_makefile_star2_O3/nimble-code[P]gh_cpp/Src/gh_cpp3.c
// Function: push_term
static void
push_term(void)	/* (x), -x, ~x, !x, 9, NAME -- push onto evaluation stack */
{	Tokvals n = lat;

	switch (n) {
	case NAME:
		if (myname[0] == '"')	/* string */
			goto bad;
		if (myname[0] != '\'')	/* undefined macro name */
		{	if (misra_rules)
				m_rule(19, 11, "undefined macro name");
			myval = 0;
		} else	/* char constant, tokenized as a name */
		{	if (myname[1] == '\\')
			{	switch (myname[2]) {
				case 'n': myval = '\n'; break;
				case 'r': myval = '\r'; break;
				case 'f': myval = '\f'; break;
				case 't': myval = '\t'; break;
				case 'v': myval = '\v'; break;
				case 'b': myval = '\b'; break;
				case 'a': myval = '\a'; break;
				case 'x': case 'X':
					myval = hexa(&myname[3]);
					break;
				default:
					if (isdigit(myname[2]))
						myval = octal(&myname[2]);
					else
						myval = (int) myname[2];
					break;
			}	}
			else
			{	myval = myname[1];
		}	}
		/* fall thru */
	case VAL:
		emit(VAL, myval);
		lat = nxt_token();
		return;
	case CHAR:
		switch (mychar) {
		case '(':
			lat = nxt_token();
			push_expr(4);
			if (lat != CHAR || mychar != ')') break;
			lat = nxt_token();
			return;

		case '+': n = UPLUS; goto same;
		case '-': n = UMIN;  goto same;
		case '~': n = TILDE; goto same;
		case '!': n = LNOT;
same:			lat = nxt_token();
			push_term();
			assert(n != CHAR);
			emit(n, 0);
			return;
		}
		/* fall thru */
		fprintf(stderr, "CHAR: '%c'\n", mychar);
	default:
bad:		fprintf(stderr, "saw: "); tokname(n, stderr); fprintf(stderr, "\n");
		syntax_error("#if or #elif directive");
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movl 0xcf16(%rip), %ebx      # 0x168a8
cmpl $0x1, %ebx
je 0x99ee
cmpl $0x2, %ebx
je 0x99b3
cmpl $0x4, %ebx
jne 0x9cb5
leaq 0xa94c(%rip), %rax      # 0x142f8
movl (%rax), %ebx
jmp 0x9c40
leaq 0xa92a(%rip), %r14      # 0x142e4
movb (%r14), %al
movzbl %al, %ecx
cmpl $0x2a, %ecx
jle 0x9a8f
cmpl $0x2b, %ecx
je 0x9b4e
cmpl $0x2d, %ecx
je 0x9b5c
cmpl $0x7e, %ecx
jne 0x9c9a
movl $0x12, %ebx
jmp 0x9b61
leaq 0xa8f3(%rip), %rax      # 0x142e8
movq (%rax), %r14
movzbl (%r14), %eax
cmpl $0x27, %eax
je 0x9a40
cmpl $0x22, %eax
je 0x9cb5
leaq 0x9483(%rip), %rax      # 0x12e94
cmpl $0x0, (%rax)
je 0x9a2c
leaq 0x5af8(%rip), %rdx      # 0xf515
movl $0x13, %edi
movl $0xb, %esi
callq 0xa2f8
leaq 0xa8c5(%rip), %rax      # 0x142f8
movl $0x0, (%rax)
xorl %ebx, %ebx
jmp 0x9c40
movsbl 0x1(%r14), %ebx
cmpl $0x5c, %ebx
jne 0x9c37
movzbl 0x2(%r14), %eax
cmpl $0x65, %eax
jle 0x9bb6
leal -0x6e(%rax), %ecx
cmpl $0xa, %ecx
ja 0x9bfb
leaq 0x5965(%rip), %rdx      # 0xf3d4
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0xa879(%rip), %rax      # 0x142f8
movl $0xa, (%rax)
movl $0xa, %ebx
jmp 0x9c40
cmpl $0x21, %ecx
je 0x9b55
cmpl $0x28, %ecx
jne 0x9c9a
movq 0xcdf8(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9ade
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9ade
movq %rcx, 0xcde1(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
leaq 0xa82f(%rip), %rdx      # 0x142f8
movl %eax, (%rdx)
movb %al, (%r14)
movq 0x8(%rcx), %rax
leaq 0xa80f(%rip), %rdx      # 0x142e8
movq %rax, (%rdx)
movl (%rcx), %eax
movl %eax, 0xcdc4(%rip)      # 0x168a8
movl $0x4, %edi
callq 0x9235
cmpl $0x2, 0xcdb3(%rip)      # 0x168a8
movb (%r14), %al
jne 0x9c9a
cmpb $0x29, %al
jne 0x9c9a
movq 0xcd93(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9b43
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9b43
movq %rcx, 0xcd7c(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
leaq 0xa7ca(%rip), %rdx      # 0x142f8
movl %eax, (%rdx)
movb %al, (%r14)
movq 0x8(%rcx), %rax
leaq 0xa7aa(%rip), %rdx      # 0x142e8
movq %rax, (%rdx)
movl (%rcx), %eax
movl %eax, 0xcd5f(%rip)      # 0x168a8
jmp 0x9c95
movl $0x15, %ebx
jmp 0x9b61
movl $0x13, %ebx
jmp 0x9b61
movl $0x14, %ebx
movq 0xcd38(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9b9e
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9b9e
movq %rcx, 0xcd21(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
leaq 0xa76f(%rip), %rdx      # 0x142f8
movl %eax, (%rdx)
movb %al, (%r14)
movq 0x8(%rcx), %rax
leaq 0xa74f(%rip), %rdx      # 0x142e8
movq %rax, (%rdx)
movl (%rcx), %eax
movl %eax, 0xcd04(%rip)      # 0x168a8
callq 0x9985
movl %ebx, %edi
xorl %esi, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x9d01
cmpl $0x58, %eax
je 0x9bd9
cmpl $0x61, %eax
je 0x9be7
cmpl $0x62, %eax
jne 0x9c14
leaq 0xa72c(%rip), %rax      # 0x142f8
movl $0x8, (%rax)
movl $0x8, %ebx
jmp 0x9c40
addq $0x3, %r14
movq %r14, %rdi
callq 0x8fd0
jmp 0x9c35
leaq 0xa70a(%rip), %rax      # 0x142f8
movl $0x7, (%rax)
movl $0x7, %ebx
jmp 0x9c40
cmpl $0x66, %eax
jne 0x9c14
leaq 0xa6f1(%rip), %rax      # 0x142f8
movl $0xc, (%rax)
movl $0xc, %ebx
jmp 0x9c40
movsbl %al, %ebx
callq 0x41e0
movq (%rax), %rax
movslq %ebx, %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x9c37
addq $0x2, %r14
movq %r14, %rdi
callq 0x907d
movl %eax, %ebx
leaq 0xa6ba(%rip), %rax      # 0x142f8
movl %ebx, (%rax)
movl $0x4, %edi
movl %ebx, %esi
callq 0x9d01
movq 0xcc4d(%rip), %rax      # 0x168a0
xorl %ecx, %ecx
testq %rax, %rax
je 0x9c8f
movq 0x28(%rax), %rax
testq %rax, %rax
je 0x9c8f
movq %rax, 0xcc36(%rip)      # 0x168a0
movl 0x4(%rax), %ecx
leaq 0xa684(%rip), %rdx      # 0x142f8
movl %ecx, (%rdx)
leaq 0xa667(%rip), %rdx      # 0x142e4
movb %cl, (%rdx)
movq 0x8(%rax), %rcx
leaq 0xa65e(%rip), %rdx      # 0x142e8
movq %rcx, (%rdx)
movl (%rax), %ecx
movl %ecx, 0xcc13(%rip)      # 0x168a8
popq %rbx
popq %r14
popq %rbp
retq
movq 0x8357(%rip), %rcx      # 0x11ff8
movq (%rcx), %rdi
movsbl %al, %edx
leaq 0x5886(%rip), %rsi      # 0xf534
xorl %eax, %eax
callq 0x4150
movl %ebx, %edi
callq 0x477a
leaq 0xa635(%rip), %rax      # 0x142f8
movl $0xd, (%rax)
movl $0xd, %ebx
jmp 0x9c40
leaq 0xa61e(%rip), %rax      # 0x142f8
movl $0xb, (%rax)
movl $0xb, %ebx
jmp 0x9c40
leaq 0xa607(%rip), %rax      # 0x142f8
movl $0x9, (%rax)
movl $0x9, %ebx
jmp 0x9c40