// File: /workspace/github_c_makefile_star2_O1/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 0xcf04(%rip), %ebx      # 0x168a8
cmpl $0x4, %ebx
je 0x9c17
cmpl $0x2, %ebx
je 0x9a04
cmpl $0x1, %ebx
jne 0x9bf4
leaq 0xa926(%rip), %rax      # 0x142e8
movq (%rax), %r14
movzbl (%r14), %eax
cmpl $0x27, %eax
je 0x9a39
cmpl $0x22, %eax
je 0x9bf4
leaq 0x94b6(%rip), %rax      # 0x12e94
xorl %ebx, %ebx
cmpl $0x0, (%rax)
je 0x9c0e
leaq 0x5b29(%rip), %rdx      # 0xf519
movl $0x13, %edi
movl $0xb, %esi
callq 0xa250
jmp 0x9c0e
leaq 0xa8d9(%rip), %r14      # 0x142e4
movzbl (%r14), %eax
cmpl $0x2a, %eax
jle 0x9a7b
cmpl $0x2b, %eax
je 0x9b2b
cmpl $0x2d, %eax
je 0x9b39
cmpl $0x7e, %eax
jne 0x9bef
movl $0x12, %ebx
jmp 0x9b3e
movsbl 0x1(%r14), %ebx
cmpl $0x5c, %ebx
jne 0x9c0e
movzbl 0x2(%r14), %eax
cmpl $0x65, %eax
jle 0x9b93
leal -0x6e(%rax), %ecx
cmpl $0xa, %ecx
ja 0x9bbe
leaq 0x5970(%rip), %rdx      # 0xf3d8
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl $0xa, %ebx
jmp 0x9c0e
cmpl $0x21, %eax
je 0x9b32
cmpl $0x28, %eax
jne 0x9bef
movq 0xce0c(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9aca
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9aca
movq %rcx, 0xcdf5(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
leaq 0xa843(%rip), %rdx      # 0x142f8
movl %eax, (%rdx)
movb %al, (%r14)
movq 0x8(%rcx), %rax
leaq 0xa823(%rip), %rdx      # 0x142e8
movq %rax, (%rdx)
movl (%rcx), %eax
movl %eax, 0xcdd8(%rip)      # 0x168a8
movl $0x4, %edi
callq 0x926c
cmpl $0x2, 0xcdc7(%rip)      # 0x168a8
jne 0x9bef
cmpb $0x29, (%r14)
jne 0x9bef
movq 0xcda8(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9c66
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9c66
movq %rcx, 0xcd89(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
leaq 0xa7d7(%rip), %rdx      # 0x142f8
movl %eax, (%rdx)
movb %al, (%r14)
jmp 0x9c56
movl $0x15, %ebx
jmp 0x9b3e
movl $0x13, %ebx
jmp 0x9b3e
movl $0x14, %ebx
movq 0xcd5b(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9b7b
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9b7b
movq %rcx, 0xcd44(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
leaq 0xa792(%rip), %rdx      # 0x142f8
movl %eax, (%rdx)
movb %al, (%r14)
movq 0x8(%rcx), %rax
leaq 0xa772(%rip), %rdx      # 0x142e8
movq %rax, (%rdx)
movl (%rcx), %eax
movl %eax, 0xcd27(%rip)      # 0x168a8
callq 0x9997
movl %ebx, %edi
xorl %esi, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x9c71
cmpl $0x58, %eax
je 0x9ba9
cmpl $0x61, %eax
je 0x9bb7
cmpl $0x62, %eax
jne 0x9bca
movl $0x8, %ebx
jmp 0x9c0e
addq $0x3, %r14
movq %r14, %rdi
callq 0x9020
jmp 0x9beb
movl $0x7, %ebx
jmp 0x9c0e
cmpl $0x66, %eax
jne 0x9bca
movl $0xc, %ebx
jmp 0x9c0e
movsbl %al, %ebx
callq 0x41f0
movq (%rax), %rax
movslq %ebx, %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x9c0e
addq $0x2, %r14
movq %r14, %rdi
callq 0x90cd
movl %eax, %ebx
jmp 0x9c0e
callq 0x4816
movl %ebx, %edi
callq 0x483d
movl $0xd, %ebx
jmp 0x9c0e
movl $0xb, %ebx
jmp 0x9c0e
movl $0x9, %ebx
leaq 0xa6e3(%rip), %rax      # 0x142f8
movl %ebx, (%rax)
leaq 0xa6da(%rip), %rbx      # 0x142f8
movl (%rbx), %esi
movl $0x4, %edi
callq 0x9c71
movq 0xcc6f(%rip), %rcx      # 0x168a0
xorl %eax, %eax
testq %rcx, %rcx
je 0x9c66
movq 0x28(%rcx), %rcx
testq %rcx, %rcx
je 0x9c66
movq %rcx, 0xcc58(%rip)      # 0x168a0
movl 0x4(%rcx), %eax
movl %eax, (%rbx)
leaq 0xa690(%rip), %rdx      # 0x142e4
movb %al, (%rdx)
movq 0x8(%rcx), %rax
leaq 0xa687(%rip), %rdx      # 0x142e8
movq %rax, (%rdx)
movl (%rcx), %eax
movl %eax, 0xcc3c(%rip)      # 0x168a8
popq %rbx
popq %r14
popq %rbp
retq