// File: /workspace/github_c_makefile_star2_O2/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 0xc58e(%rip), %ebx      # 0x158a8
cmpl $0x1, %ebx
je 0x93f2
cmpl $0x2, %ebx
je 0x933f
cmpl $0x4, %ebx
jne 0x93b5
leaq 0x9fc0(%rip), %rax      # 0x132f8
movl (%rax), %ebx
jmp 0x9564
leaq 0x9f9e(%rip), %r14      # 0x132e4
movzbl (%r14), %eax
cmpl $0x21, %eax
je 0x9480
cmpl $0x7e, %eax
je 0x9484
cmpl $0x2b, %eax
je 0x9478
cmpl $0x2d, %eax
je 0x947c
cmpl $0x28, %eax
jne 0x939a
callq 0x8bee
movl %eax, 0xc52a(%rip)      # 0x158a8
pushq $0x4
popq %rdi
callq 0x8c37
cmpl $0x2, 0xc51b(%rip)      # 0x158a8
movb (%r14), %al
jne 0x939a
cmpb $0x29, %al
je 0x956e
movq 0x7c57(%rip), %rcx      # 0x10ff8
movq (%rcx), %rdi
movsbl %al, %edx
leaq 0x5186(%rip), %rsi      # 0xe534
xorl %eax, %eax
callq 0x4150
movq 0x7c3c(%rip), %r14      # 0x10ff8
movq (%r14), %rcx
leaq 0x450a(%rip), %rdi      # 0xd8d0
pushq $0x5
popq %rsi
pushq $0x1
popq %rdx
callq 0x41c0
movq (%r14), %rsi
movl %ebx, %edi
callq 0x436a
movq (%r14), %rsi
pushq $0xa
popq %rdi
callq 0x4110
leaq 0x5153(%rip), %rdi      # 0xe540
callq 0x8fef
leaq 0x9eef(%rip), %rax      # 0x132e8
movq (%rax), %r14
movzbl (%r14), %eax
cmpl $0x27, %eax
je 0x9439
cmpl $0x22, %eax
je 0x93b5
leaq 0x8a83(%rip), %rax      # 0x11e94
cmpl $0x0, (%rax)
je 0x9428
leaq 0x50f8(%rip), %rdx      # 0xe515
pushq $0x13
popq %rdi
pushq $0xb
popq %rsi
callq 0x9bc0
leaq 0x9ec9(%rip), %rax      # 0x132f8
andl $0x0, (%rax)
xorl %ebx, %ebx
jmp 0x9564
movsbl 0x1(%r14), %ebx
cmpl $0x5c, %ebx
jne 0x9505
movzbl 0x2(%r14), %eax
leal -0x6e(%rax), %ecx
cmpl $0xa, %ecx
ja 0x94a4
leaq 0x4f79(%rip), %rdx      # 0xe3d4
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x9e8d(%rip), %rax      # 0x132f8
movl $0xa, (%rax)
pushq $0xa
jmp 0x9563
pushq $0x15
jmp 0x9486
pushq $0x14
jmp 0x9486
pushq $0x13
jmp 0x9486
pushq $0x12
popq %rbx
callq 0x8bee
movl %eax, 0xc416(%rip)      # 0x158a8
callq 0x930d
movl %ebx, %edi
xorl %esi, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x957e
cmpl $0x58, %eax
je 0x94d4
cmpl $0x61, %eax
je 0x9554
cmpl $0x62, %eax
je 0x9543
cmpl $0x66, %eax
jne 0x94e2
leaq 0x9e31(%rip), %rax      # 0x132f8
movl $0xc, (%rax)
pushq $0xc
jmp 0x9563
addq $0x3, %r14
movq %r14, %rdi
callq 0x8970
jmp 0x9503
movsbl %al, %ebx
callq 0x41e0
movq (%rax), %rax
movslq %ebx, %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x9505
addq $0x2, %r14
movq %r14, %rdi
callq 0x8a43
movl %eax, %ebx
leaq 0x9dec(%rip), %rax      # 0x132f8
movl %ebx, (%rax)
jmp 0x9564
leaq 0x9de1(%rip), %rax      # 0x132f8
movl $0xd, (%rax)
pushq $0xd
jmp 0x9563
leaq 0x9dd0(%rip), %rax      # 0x132f8
movl $0x9, (%rax)
pushq $0x9
jmp 0x9563
leaq 0x9dbf(%rip), %rax      # 0x132f8
movl $0xb, (%rax)
pushq $0xb
jmp 0x9563
leaq 0x9dae(%rip), %rax      # 0x132f8
movl $0x8, (%rax)
pushq $0x8
jmp 0x9563
leaq 0x9d9d(%rip), %rax      # 0x132f8
movl $0x7, (%rax)
pushq $0x7
popq %rbx
pushq $0x4
popq %rdi
movl %ebx, %esi
callq 0x957e
callq 0x8bee
movl %eax, 0xc32f(%rip)      # 0x158a8
popq %rbx
popq %r14
popq %rbp
retq