// File: /workspace/github_c_makefile_star2_O2/nimble-code[P]gh_cpp/Src/gh_cpp2.c
// Function: do_file
void
do_file(char *from, int ln, char *to)
{	FILE *ofd = mfd;
	int len, olevel = level;

	if (not_printing[level])
		return;

	push_stacker(to);

	if (strcmp(to, "<stdin>") == 0)
		mfd = stdin;
	else if ((mfd = fopen(to, "r")) == NULL)
		fatal_error("no such file");

	filename = to;
	lineno = 0;
	sawcode = 0;
	printf("# 1 \"%s\"\n", to);

	while (fgets(ibuf, MAXIN, mfd) != NULL)
	{	lineno += 1+delta; delta = 0;
		nowc = ibuf;

		len = trimline(ibuf);
		while (len > 1 && ibuf[len-2] == '\\')	/* one before newline */
		{	len -= 2;
			ibuf[len] = '\0';	/* remove \\ */

			if (fgets(&ibuf[len], MAXIN, mfd) == NULL)
				fatal_error("unexpected eof");

			delta++;
			len = trimline(ibuf);

			if (verbose>1)
			{	fprintf(stderr, "len %d of ", len);
				fprintf(stderr, "expanded line: %s\n", ibuf);
			}
		}

		skipwhite();
		if (!no_includes && *nowc++ == '#')
		{	skipwhite();
			if (strncmp(nowc, "include", strlen("include")) == 0
			&&  ((*(nowc+strlen("include")) == ' ')
			||   (*(nowc+strlen("include")) == '\t')))
			{	nowc += strlen("include");
				if (do_include(ln, to) != 0)	/* can call do_file recursively */
					continue;
		}	}

		preprocess();	/* should really always do this before do_include */
	}
	if (incomment)
	{	fprintf(stderr, "%s,%d: unterminated comment\n", filename, lineno);
		incomment = 0;
	}
	if (misra_rules && olevel != level)
		m_rule(19, 17, "unbalanced #if/#ifdef/#else/#elif/#endif directives");

	filename = from;
	lineno = ln;	/* restore to previous file */
	fclose(mfd);
	mfd = ofd;
	sawcode = 0;

	pop_stacker(to);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
leaq 0xab32(%rip), %rax      # 0x12eb4
movslq (%rax), %rcx
leaq 0xab34(%rip), %rax      # 0x12ec0
cmpl $0x0, (%rax,%rcx,4)
jne 0x8766
movq %rdx, %r12
movq %rcx, -0x40(%rbp)
movq %rdi, -0x48(%rbp)
movl %esi, -0x2c(%rbp)
movq 0xd0d5(%rip), %rax      # 0x15480
movq %rax, -0x50(%rbp)
leaq 0xd0da(%rip), %rbx      # 0x15490
movq %rdx, -0x38(%rbp)
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x847d
movq (%rbx), %rsi
movq %r12, %rdi
callq 0x4140
addq $0x8, %rbx
testl %eax, %eax
jne 0x83ba
leaq 0xaad0(%rip), %rax      # 0x12eb0
cmpl $0x2, (%rax)
jl 0x8422
leaq 0xd0a4(%rip), %rbx      # 0x15490
movq 0x8c05(%rip), %r13      # 0x10ff8
leaq 0x5ebb(%rip), %r14      # 0xe2b5
pushq $0x2
popq %r15
pushq $0x1
popq %r12
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x8422
movq (%r13), %rcx
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x41c0
addq $0x8, %rbx
jmp 0x8402
leaq 0x9a6b(%rip), %rax      # 0x11e94
cmpl $0x0, (%rax)
je 0x8440
leaq 0x5e83(%rip), %rdx      # 0xe2b8
pushq $0x13
popq %rdi
pushq $0xf
popq %rsi
callq 0x9bc0
movq 0x8bb1(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movl 0xd03c(%rip), %ecx      # 0x1548c
leaq 0x5e7e(%rip), %rsi      # 0xe2d5
movq -0x38(%rbp), %r12
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
cmpl $0x401, 0xd01d(%rip)    # imm = 0x401
jl 0x847d
leaq 0x5e92(%rip), %rdi      # 0xe30a
callq 0x42ec
leaq 0xaa2c(%rip), %r14      # 0x12eb0
cmpl $0x2, (%r14)
jge 0x8775
pushq $0x10
popq %rdi
callq 0x4348
movq %rax, %r15
movq %r12, %rdi
callq 0x40a0
leal 0x1(%rax), %edi
callq 0x4348
movq %rax, (%r15)
movq %rax, %rdi
movq %r12, %rsi
callq 0x4070
movq 0xcfd2(%rip), %rax      # 0x15490
movq %rax, 0x8(%r15)
movq %r15, 0xcfc7(%rip)      # 0x15490
incl 0xcfbd(%rip)            # 0x1548c
leaq 0x53ca(%rip), %rsi      # 0xd8a0
movq %r12, %rdi
callq 0x4140
testl %eax, %eax
je 0x850b
leaq 0x2f8b(%rip), %rsi      # 0xb474
movq %r12, %rdi
callq 0x4170
movq %rax, 0xcf88(%rip)      # 0x15480
testq %rax, %rax
jne 0x851c
leaq 0x5ccd(%rip), %rdi      # 0xe1d1
callq 0x42ec
jmp 0x851c
movq 0x8ac6(%rip), %rax      # 0x10fd8
movq (%rax), %rax
movq %rax, 0xcf64(%rip)      # 0x15480
leaq 0x8bed(%rip), %rax      # 0x11110
movq %r12, (%rax)
leaq 0x9963(%rip), %rax      # 0x11e90
andl $0x0, (%rax)
leaq 0xadb9(%rip), %rax      # 0x132f0
andl $0x0, (%rax)
leaq 0x5c9d(%rip), %rdi      # 0xe1de
movq %r12, %rsi
xorl %eax, %eax
callq 0x40c0
leaq 0xbf2e(%rip), %r12      # 0x14480
leaq 0x5be6(%rip), %r13      # 0xe13f
movq 0xcf20(%rip), %rdx      # 0x15480
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4120
testq %rax, %rax
je 0x86ab
movl 0xcf0c(%rip), %eax      # 0x15488
leaq 0x990d(%rip), %rdx      # 0x11e90
movl (%rdx), %ecx
addl %ecx, %eax
incl %eax
movl %eax, (%rdx)
andl $0x0, 0xcef6(%rip)      # 0x15488
leaq 0x9907(%rip), %rax      # 0x11ea0
movq %r12, (%rax)
callq 0x803f
movl %eax, %r15d
cmpl $0x2, %r15d
jl 0x8622
addl $-0x2, %r15d
cmpb $0x5c, (%r15,%r12)
jne 0x8622
addq %r12, %r15
movb $0x0, (%r15)
movq 0xcebd(%rip), %rdx      # 0x15480
movq %r15, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4120
testq %rax, %rax
jne 0x85dd
movq %r13, %rdi
callq 0x42ec
incl 0xcea5(%rip)            # 0x15488
callq 0x803f
movl %eax, %r15d
cmpl $0x2, (%r14)
jl 0x85a4
movq 0x8a00(%rip), %rbx      # 0x10ff8
movq (%rbx), %rdi
leaq 0x5be6(%rip), %rsi      # 0xe1e8
movl %r15d, %edx
xorl %eax, %eax
callq 0x4150
movq (%rbx), %rdi
leaq 0x5bdd(%rip), %rsi      # 0xe1f3
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
jmp 0x85a4
callq 0x4544
leaq 0xacaa(%rip), %rax      # 0x132d8
cmpl $0x0, (%rax)
jne 0x866e
leaq 0x9866(%rip), %rdx      # 0x11ea0
movq (%rdx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, (%rdx)
cmpb $0x23, (%rax)
jne 0x866e
callq 0x4544
leaq 0x984b(%rip), %rax      # 0x11ea0
movq (%rax), %r15
movq %r15, %rdi
leaq 0x5cce(%rip), %rsi      # 0xe330
pushq $0x7
popq %rdx
callq 0x4060
testl %eax, %eax
je 0x8678
callq 0x480c
jmp 0x8559
movzbl 0x7(%r15), %eax
cmpl $0x20, %eax
je 0x8687
cmpl $0x9, %eax
jne 0x866e
addq $0x7, %r15
leaq 0x980e(%rip), %rax      # 0x11ea0
movq %r15, (%rax)
movl -0x2c(%rbp), %edi
movq -0x38(%rbp), %rsi
callq 0x80a1
testl %eax, %eax
jne 0x8559
jmp 0x866e
leaq 0xac42(%rip), %rbx      # 0x132f4
cmpl $0x0, (%rbx)
leaq 0x8a54(%rip), %r15      # 0x11110
jne 0x87af
leaq 0x97cb(%rip), %rax      # 0x11e94
cmpl $0x0, (%rax)
movq -0x38(%rbp), %r14
je 0x86f3
leaq 0xa7db(%rip), %rax      # 0x12eb4
movq -0x40(%rbp), %rcx
cmpl (%rax), %ecx
je 0x86f3
leaq 0x5b3b(%rip), %rdx      # 0xe223
pushq $0x13
popq %rdi
pushq $0x11
popq %rsi
callq 0x9bc0
movq -0x48(%rbp), %rax
movq %rax, (%r15)
movl -0x2c(%rbp), %eax
leaq 0x978c(%rip), %rcx      # 0x11e90
movl %eax, (%rcx)
movq 0xcd73(%rip), %rdi      # 0x15480
callq 0x4090
leaq 0xabd7(%rip), %rax      # 0x132f0
andl $0x0, (%rax)
movq -0x50(%rbp), %rax
movq %rax, 0xcd59(%rip)      # 0x15480
movq 0xcd62(%rip), %rbx      # 0x15490
testq %rbx, %rbx
je 0x8742
movq (%rbx), %rdi
movq %r14, %rsi
callq 0x4140
testl %eax, %eax
je 0x8755
leaq 0x5bef(%rip), %rdi      # 0xe338
callq 0x42ec
movq 0xcd3b(%rip), %rbx      # 0x15490
movq 0x8(%rbx), %rax
movq %rax, 0xcd30(%rip)      # 0x15490
decl 0xcd26(%rip)            # 0x1548c
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xcd14(%rip), %rbx      # 0x15490
movq 0x8875(%rip), %r13      # 0x10ff8
pushq $0x2
popq %r15
pushq $0x1
popq %r12
movq (%rbx), %rbx
movq (%r13), %rcx
testq %rbx, %rbx
je 0x87db
leaq 0x5f76(%rip), %rdi      # 0xe714
movq %r15, %rsi
movq %r12, %rdx
callq 0x41c0
addq $0x8, %rbx
jmp 0x878b
movq 0x8842(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq (%r15), %rdx
leaq 0x96cd(%rip), %rax      # 0x11e90
movl (%rax), %ecx
leaq 0x5a3a(%rip), %rsi      # 0xe206
xorl %eax, %eax
callq 0x4150
andl $0x0, (%rbx)
jmp 0x86c2
leaq 0x55c9(%rip), %rsi      # 0xddab
movq %rcx, %rdi
movq -0x38(%rbp), %r12
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
jmp 0x848e