// File: /workspace/github_c_makefile_star2_O0/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
subq $0x20, %rsp
movl 0xcc3a(%rip), %eax      # 0x189a8
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
movl %eax, -0x8(%rbp)
subl $0x1, %eax
je 0xbd9d
jmp 0xbd7e
movl -0x8(%rbp), %eax
subl $0x2, %eax
je 0xbf83
jmp 0xbd8c
movl -0x8(%rbp), %eax
subl $0x4, %eax
je 0xbf60
jmp 0xc08c
leaq 0xa644(%rip), %rax      # 0x163e8
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0xbdb4
jmp 0xc08e
leaq 0xa62d(%rip), %rax      # 0x163e8
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x27, %eax
je 0xbdfa
leaq 0x91c7(%rip), %rax      # 0x14f94
cmpl $0x0, (%rax)
je 0xbde8
movl $0x13, %edi
movl $0xb, %esi
leaq 0x59a4(%rip), %rdx      # 0x11787
callq 0xca50
leaq 0xa609(%rip), %rax      # 0x163f8
movl $0x0, (%rax)
jmp 0xbf5e
leaq 0xa5e7(%rip), %rax      # 0x163e8
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x5c, %eax
jne 0xbf45
leaq 0xa5d0(%rip), %rax      # 0x163e8
movq (%rax), %rax
movsbl 0x2(%rax), %eax
addl $-0x58, %eax
movl %eax, %ecx
movq %rcx, -0x10(%rbp)
subl $0x20, %eax
ja 0xbee3
movq -0x10(%rbp), %rax
leaq 0x5788(%rip), %rcx      # 0x115c4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xa5ac(%rip), %rax      # 0x163f8
movl $0xa, (%rax)
jmp 0xbf43
leaq 0xa59a(%rip), %rax      # 0x163f8
movl $0xd, (%rax)
jmp 0xbf43
leaq 0xa588(%rip), %rax      # 0x163f8
movl $0xc, (%rax)
jmp 0xbf43
leaq 0xa576(%rip), %rax      # 0x163f8
movl $0x9, (%rax)
jmp 0xbf43
leaq 0xa564(%rip), %rax      # 0x163f8
movl $0xb, (%rax)
jmp 0xbf43
leaq 0xa552(%rip), %rax      # 0x163f8
movl $0x8, (%rax)
jmp 0xbf43
leaq 0xa540(%rip), %rax      # 0x163f8
movl $0x7, (%rax)
jmp 0xbf43
leaq 0xa51e(%rip), %rax      # 0x163e8
movq (%rax), %rdi
addq $0x3, %rdi
callq 0xaef0
movl %eax, %ecx
leaq 0xa519(%rip), %rax      # 0x163f8
movl %ecx, (%rax)
jmp 0xbf43
callq 0x41a0
movq (%rax), %rax
leaq 0xa4f6(%rip), %rcx      # 0x163e8
movq (%rcx), %rcx
movsbl 0x2(%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xbf2a
leaq 0xa4d7(%rip), %rax      # 0x163e8
movq (%rax), %rdi
addq $0x2, %rdi
callq 0xb000
movl %eax, %ecx
leaq 0xa4d2(%rip), %rax      # 0x163f8
movl %ecx, (%rax)
jmp 0xbf41
leaq 0xa4b7(%rip), %rax      # 0x163e8
movq (%rax), %rax
movsbl 0x2(%rax), %ecx
leaq 0xa4b9(%rip), %rax      # 0x163f8
movl %ecx, (%rax)
jmp 0xbf43
jmp 0xbf5c
leaq 0xa49c(%rip), %rax      # 0x163e8
movq (%rax), %rax
movsbl 0x1(%rax), %ecx
leaq 0xa49e(%rip), %rax      # 0x163f8
movl %ecx, (%rax)
jmp 0xbf5e
jmp 0xbf60
leaq 0xa491(%rip), %rax      # 0x163f8
movl (%rax), %esi
movl $0x4, %edi
callq 0xc0f0
callq 0xb270
movl %eax, 0xca2a(%rip)      # 0x189a8
jmp 0xc0dc
leaq 0xa45a(%rip), %rax      # 0x163e4
movsbl (%rax), %eax
movl %eax, -0x14(%rbp)
subl $0x21, %eax
je 0xc020
jmp 0xbf9b
movl -0x14(%rbp), %eax
subl $0x28, %eax
je 0xbfc6
jmp 0xbfa5
movl -0x14(%rbp), %eax
subl $0x2b, %eax
je 0xc005
jmp 0xbfaf
movl -0x14(%rbp), %eax
subl $0x2d, %eax
je 0xc00e
jmp 0xbfb9
movl -0x14(%rbp), %eax
subl $0x7e, %eax
je 0xc017
jmp 0xc06a
callq 0xb270
movl %eax, 0xc9d7(%rip)      # 0x189a8
movl $0x4, %edi
callq 0xb2f0
cmpl $0x2, 0xc9c6(%rip)      # 0x189a8
jne 0xbff3
leaq 0xa3f9(%rip), %rax      # 0x163e4
movsbl (%rax), %eax
cmpl $0x29, %eax
je 0xbff5
jmp 0xc06a
callq 0xb270
movl %eax, 0xc9a8(%rip)      # 0x189a8
jmp 0xc0dc
movl $0x15, -0x4(%rbp)
jmp 0xc027
movl $0x14, -0x4(%rbp)
jmp 0xc027
movl $0x12, -0x4(%rbp)
jmp 0xc027
movl $0x13, -0x4(%rbp)
callq 0xb270
movl %eax, 0xc976(%rip)      # 0x189a8
callq 0xbd60
cmpl $0x2, -0x4(%rbp)
je 0xc03f
jmp 0xc05e
leaq 0x5756(%rip), %rdi      # 0x1179c
leaq 0x56d6(%rip), %rsi      # 0x11723
movl $0xc5, %edx
leaq 0x574d(%rip), %rcx      # 0x117a6
callq 0x40c0
movl -0x4(%rbp), %edi
xorl %esi, %esi
callq 0xc0f0
jmp 0xc0dc
movq 0x7f87(%rip), %rax      # 0x13ff8
movq (%rax), %rdi
leaq 0xa369(%rip), %rax      # 0x163e4
movsbl (%rax), %edx
leaq 0x5736(%rip), %rsi      # 0x117bb
movb $0x0, %al
callq 0x4110
jmp 0xc08e
movq 0x7f63(%rip), %rax      # 0x13ff8
movq (%rax), %rdi
leaq 0x4a1c(%rip), %rsi      # 0x10abb
movb $0x0, %al
callq 0x4110
movl -0x4(%rbp), %edi
movq 0x7f48(%rip), %rax      # 0x13ff8
movq (%rax), %rsi
callq 0x4370
movq 0x7f39(%rip), %rax      # 0x13ff8
movq (%rax), %rdi
leaq 0x4f4d(%rip), %rsi      # 0x11016
movb $0x0, %al
callq 0x4110
leaq 0x56f0(%rip), %rdi      # 0x117c7
callq 0xb8c0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)