// File: /workspace/github_c_makefile_star2_O1/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:
leaq 0xb42c(%rip), %rax      # 0x13eb4
movslq (%rax), %rcx
leaq 0xb42e(%rip), %rax      # 0x13ec0
cmpl $0x0, (%rax,%rcx,4)
je 0x8a99
retq
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %r12
movq %rcx, -0x40(%rbp)
movq %rdi, -0x50(%rbp)
movl %esi, -0x2c(%rbp)
movq 0xd9c1(%rip), %rax      # 0x16480
movq %rax, -0x48(%rbp)
movq 0xd9c6(%rip), %r14      # 0x16490
testq %r14, %r14
je 0x8aee
movq %r14, %rbx
movq (%rbx), %rsi
movq %r12, %rdi
callq 0x4140
testl %eax, %eax
je 0x8e14
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
jne 0x8ad2
leaq 0xb3bb(%rip), %r15      # 0x13eb0
cmpl $0x2, (%r15)
jge 0x8dd9
movl $0x10, %edi
callq 0x4afa
movq %rax, %r14
movq %r12, %rdi
callq 0x40a0
leal 0x1(%rax), %edi
callq 0x4afa
movq %rax, (%r14)
movq %rax, %rdi
movq %r12, %rsi
callq 0x4070
movq 0xd95f(%rip), %rax      # 0x16490
movq %rax, 0x8(%r14)
movq %r14, 0xd954(%rip)      # 0x16490
incl 0xd94a(%rip)            # 0x1648c
leaq 0x5d57(%rip), %rsi      # 0xe8a0
movq %r12, %rdi
callq 0x4140
testl %eax, %eax
je 0x8b7e
leaq 0x3918(%rip), %rsi      # 0xc474
movq %r12, %rdi
callq 0x4180
movq %rax, 0xd915(%rip)      # 0x16480
testq %rax, %rax
jne 0x8b8f
leaq 0x6661(%rip), %rdi      # 0xf1d8
callq 0x4a9c
jmp 0x8b8f
movq 0x9453(%rip), %rax      # 0x11fd8
movq (%rax), %rax
movq %rax, 0xd8f1(%rip)      # 0x16480
leaq 0x957a(%rip), %rax      # 0x12110
movq %r12, (%rax)
leaq 0xa2f0(%rip), %rcx      # 0x12e90
xorl %eax, %eax
movl %eax, (%rcx)
leaq 0xb745(%rip), %rcx      # 0x142f0
movl %eax, (%rcx)
leaq 0x6631(%rip), %rdi      # 0xf1e5
movq %r12, -0x38(%rbp)
movq %r12, %rsi
xorl %eax, %eax
callq 0x40c0
movq 0xd8b7(%rip), %rdx      # 0x16480
leaq 0xc8b0(%rip), %r12      # 0x15480
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4130
testq %rax, %rax
je 0x8d08
leaq 0xa2b3(%rip), %rbx      # 0x12ea0
leaq 0x6552(%rip), %r13      # 0xf146
movl 0xd88e(%rip), %eax      # 0x16488
leaq 0xa28f(%rip), %rdx      # 0x12e90
movl (%rdx), %ecx
addl %ecx, %eax
incl %eax
movl %eax, (%rdx)
movl $0x0, 0xd875(%rip)      # 0x16488
movq %r12, (%rbx)
callq 0x8792
cmpl $0x2, %eax
jl 0x8c7c
movl %eax, %r14d
addl $-0x2, %r14d
cmpb $0x5c, (%r14,%r12)
jne 0x8c7c
addq %r12, %r14
movb $0x0, (%r14)
movq 0xd844(%rip), %rdx      # 0x16480
movq %r14, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4130
testq %rax, %rax
jne 0x8c56
movq %r13, %rdi
callq 0x4a9c
incl 0xd82c(%rip)            # 0x16488
callq 0x8792
movl %eax, %r14d
cmpl $0x2, (%r15)
jge 0x8c72
cmpl $0x1, %r14d
jg 0x8c23
jmp 0x8c7c
movl %r14d, %edi
callq 0x4712
jmp 0x8c6a
callq 0x4cdc
leaq 0xb650(%rip), %rax      # 0x142d8
cmpl $0x0, (%rax)
jne 0x8cbc
movq (%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, (%rbx)
cmpb $0x23, (%rax)
jne 0x8cbc
callq 0x4cdc
movq (%rbx), %r14
movl $0x7, %edx
movq %r14, %rdi
leaq 0x6684(%rip), %rsi      # 0xf337
callq 0x4060
testl %eax, %eax
je 0x8ce0
callq 0x4f55
movq 0xd7b8(%rip), %rdx      # 0x16480
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4130
testq %rax, %rax
jne 0x8bf4
jmp 0x8d08
movzbl 0x7(%r14), %eax
cmpl $0x20, %eax
je 0x8cef
cmpl $0x9, %eax
jne 0x8cbc
addq $0x7, %r14
movq %r14, (%rbx)
movl -0x2c(%rbp), %edi
movq -0x38(%rbp), %rsi
callq 0x87fb
testl %eax, %eax
jne 0x8cc1
jmp 0x8cbc
leaq 0xb5e5(%rip), %rax      # 0x142f4
cmpl $0x0, (%rax)
jne 0x8e0a
leaq 0xa175(%rip), %rax      # 0x12e94
cmpl $0x0, (%rax)
movq -0x38(%rbp), %rbx
je 0x8d4d
leaq 0xb185(%rip), %rax      # 0x13eb4
movq -0x40(%rbp), %rcx
cmpl (%rax), %ecx
je 0x8d4d
leaq 0x64ec(%rip), %rdx      # 0xf22a
movl $0x13, %edi
movl $0x11, %esi
callq 0xa250
movq -0x50(%rbp), %rax
leaq 0x93b8(%rip), %rcx      # 0x12110
movq %rax, (%rcx)
movl -0x2c(%rbp), %eax
leaq 0xa12b(%rip), %rcx      # 0x12e90
movl %eax, (%rcx)
movq 0xd712(%rip), %rdi      # 0x16480
callq 0x4090
movq -0x48(%rbp), %rax
movq %rax, 0xd702(%rip)      # 0x16480
leaq 0xb56b(%rip), %rax      # 0x142f0
movl $0x0, (%rax)
movq 0xd6fe(%rip), %rax      # 0x16490
testq %rax, %rax
je 0x8da6
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x4140
testl %eax, %eax
je 0x8db2
leaq 0x6592(%rip), %rdi      # 0xf33f
callq 0x4a9c
movq 0xd6d7(%rip), %rax      # 0x16490
movq 0x8(%rax), %rax
movq %rax, 0xd6cc(%rip)      # 0x16490
decl 0xd6c2(%rip)            # 0x1648c
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xd6b0(%rip), %rdi      # 0x16490
testq %rdi, %rdi
je 0x8dea
callq 0x46c1
movq 0x9207(%rip), %rax      # 0x11ff8
movq (%rax), %rdi
leaq 0x5fb7(%rip), %rsi      # 0xedb2
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
jmp 0x8aff
callq 0x4750
jmp 0x8d18
leaq 0xb095(%rip), %rax      # 0x13eb0
cmpl $0x2, (%rax)
jl 0x8e28
movq %r14, %rdi
callq 0x4670
leaq 0xa065(%rip), %rax      # 0x12e94
cmpl $0x0, (%rax)
je 0x8e4a
leaq 0x6484(%rip), %rdx      # 0xf2bf
movl $0x13, %edi
movl $0xf, %esi
callq 0xa250
movq 0x91a7(%rip), %rax      # 0x11ff8
movq (%rax), %rdi
movl 0xd632(%rip), %ecx      # 0x1648c
leaq 0x647b(%rip), %rsi      # 0xf2dc
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
cmpl $0x401, 0xd617(%rip)    # imm = 0x401
jl 0x8aee
leaq 0x648f(%rip), %rdi      # 0xf311
callq 0x4a9c
jmp 0x8aee