// File: /workspace/github_c_makefile_star2_O3/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 0xb47c(%rip), %rax      # 0x13eb4
movslq (%rax), %rcx
leaq 0xb47e(%rip), %rax      # 0x13ec0
cmpl $0x0, (%rax,%rcx,4)
je 0x8a49
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 0xda11(%rip), %rax      # 0x16480
movq %rax, -0x48(%rbp)
movq 0xda16(%rip), %r14      # 0x16490
testq %r14, %r14
je 0x8a9e
movq %r14, %rbx
movq (%rbx), %rsi
movq %r12, %rdi
callq 0x4140
testl %eax, %eax
je 0x8dc4
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
jne 0x8a82
leaq 0xb40b(%rip), %r15      # 0x13eb0
cmpl $0x2, (%r15)
jge 0x8d89
movl $0x10, %edi
callq 0x4a8a
movq %rax, %r14
movq %r12, %rdi
callq 0x40a0
leal 0x1(%rax), %edi
callq 0x4a8a
movq %rax, (%r14)
movq %rax, %rdi
movq %r12, %rsi
callq 0x4070
movq 0xd9af(%rip), %rax      # 0x16490
movq %rax, 0x8(%r14)
movq %r14, 0xd9a4(%rip)      # 0x16490
incl 0xd99a(%rip)            # 0x1648c
leaq 0x5da7(%rip), %rsi      # 0xe8a0
movq %r12, %rdi
callq 0x4140
testl %eax, %eax
je 0x8b2e
leaq 0x3968(%rip), %rsi      # 0xc474
movq %r12, %rdi
callq 0x4170
movq %rax, 0xd965(%rip)      # 0x16480
testq %rax, %rax
jne 0x8b3f
leaq 0x66aa(%rip), %rdi      # 0xf1d1
callq 0x4a2c
jmp 0x8b3f
movq 0x94a3(%rip), %rax      # 0x11fd8
movq (%rax), %rax
movq %rax, 0xd941(%rip)      # 0x16480
leaq 0x95ca(%rip), %rax      # 0x12110
movq %r12, (%rax)
leaq 0xa340(%rip), %rcx      # 0x12e90
xorl %eax, %eax
movl %eax, (%rcx)
leaq 0xb795(%rip), %rcx      # 0x142f0
movl %eax, (%rcx)
leaq 0x667a(%rip), %rdi      # 0xf1de
movq %r12, -0x38(%rbp)
movq %r12, %rsi
xorl %eax, %eax
callq 0x40c0
movq 0xd907(%rip), %rdx      # 0x16480
leaq 0xc900(%rip), %r12      # 0x15480
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4120
testq %rax, %rax
je 0x8cb8
leaq 0xa303(%rip), %rbx      # 0x12ea0
leaq 0x659b(%rip), %r13      # 0xf13f
movl 0xd8de(%rip), %eax      # 0x16488
leaq 0xa2df(%rip), %rdx      # 0x12e90
movl (%rdx), %ecx
addl %ecx, %eax
incl %eax
movl %eax, (%rdx)
movl $0x0, 0xd8c5(%rip)      # 0x16488
movq %r12, (%rbx)
callq 0x871a
cmpl $0x2, %eax
jl 0x8c2c
movl %eax, %r14d
addl $-0x2, %r14d
cmpb $0x5c, (%r14,%r12)
jne 0x8c2c
addq %r12, %r14
movb $0x0, (%r14)
movq 0xd894(%rip), %rdx      # 0x16480
movq %r14, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4120
testq %rax, %rax
jne 0x8c06
movq %r13, %rdi
callq 0x4a2c
incl 0xd87c(%rip)            # 0x16488
callq 0x871a
movl %eax, %r14d
cmpl $0x2, (%r15)
jge 0x8c22
cmpl $0x1, %r14d
jg 0x8bd3
jmp 0x8c2c
movl %r14d, %edi
callq 0x4676
jmp 0x8c1a
callq 0x4c5b
leaq 0xb6a0(%rip), %rax      # 0x142d8
cmpl $0x0, (%rax)
jne 0x8c6c
movq (%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, (%rbx)
cmpb $0x23, (%rax)
jne 0x8c6c
callq 0x4c5b
movq (%rbx), %r14
movl $0x7, %edx
movq %r14, %rdi
leaq 0x66cd(%rip), %rsi      # 0xf330
callq 0x4060
testl %eax, %eax
je 0x8c90
callq 0x4ee4
movq 0xd808(%rip), %rdx      # 0x16480
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4120
testq %rax, %rax
jne 0x8ba4
jmp 0x8cb8
movzbl 0x7(%r14), %eax
cmpl $0x20, %eax
je 0x8c9f
cmpl $0x9, %eax
jne 0x8c6c
addq $0x7, %r14
movq %r14, (%rbx)
movl -0x2c(%rbp), %edi
movq -0x38(%rbp), %rsi
callq 0x8785
testl %eax, %eax
jne 0x8c71
jmp 0x8c6c
leaq 0xb635(%rip), %rax      # 0x142f4
cmpl $0x0, (%rax)
jne 0x8dba
leaq 0xa1c5(%rip), %rax      # 0x12e94
cmpl $0x0, (%rax)
movq -0x38(%rbp), %r14
je 0x8cfd
leaq 0xb1d5(%rip), %rax      # 0x13eb4
movq -0x40(%rbp), %rcx
cmpl (%rax), %ecx
je 0x8cfd
leaq 0x6535(%rip), %rdx      # 0xf223
movl $0x13, %edi
movl $0x11, %esi
callq 0xa2f8
movq -0x50(%rbp), %rax
leaq 0x9408(%rip), %rcx      # 0x12110
movq %rax, (%rcx)
movl -0x2c(%rbp), %eax
leaq 0xa17b(%rip), %rcx      # 0x12e90
movl %eax, (%rcx)
movq 0xd762(%rip), %rdi      # 0x16480
callq 0x4090
movq -0x48(%rbp), %rax
movq %rax, 0xd752(%rip)      # 0x16480
leaq 0xb5bb(%rip), %rax      # 0x142f0
movl $0x0, (%rax)
movq 0xd74e(%rip), %rbx      # 0x16490
testq %rbx, %rbx
je 0x8d56
movq (%rbx), %rdi
movq %r14, %rsi
callq 0x4140
testl %eax, %eax
je 0x8d69
leaq 0x65db(%rip), %rdi      # 0xf338
callq 0x4a2c
movq 0xd727(%rip), %rbx      # 0x16490
movq 0x8(%rbx), %rax
movq %rax, 0xd71c(%rip)      # 0x16490
decl 0xd712(%rip)            # 0x1648c
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xd700(%rip), %rdi      # 0x16490
testq %rdi, %rdi
je 0x8d9a
callq 0x4625
movq 0x9257(%rip), %rax      # 0x11ff8
movq (%rax), %rdi
leaq 0x6000(%rip), %rsi      # 0xedab
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
jmp 0x8aaf
callq 0x46b4
jmp 0x8cc8
leaq 0xb0e5(%rip), %rax      # 0x13eb0
cmpl $0x2, (%rax)
jl 0x8dd8
movq %r14, %rdi
callq 0x45d4
leaq 0xa0b5(%rip), %rax      # 0x12e94
cmpl $0x0, (%rax)
je 0x8dfa
leaq 0x64cd(%rip), %rdx      # 0xf2b8
movl $0x13, %edi
movl $0xf, %esi
callq 0xa2f8
movq 0x91f7(%rip), %rax      # 0x11ff8
movq (%rax), %rdi
movl 0xd682(%rip), %ecx      # 0x1648c
leaq 0x64c4(%rip), %rsi      # 0xf2d5
movq %r12, %rdx
xorl %eax, %eax
callq 0x4150
cmpl $0x401, 0xd667(%rip)    # imm = 0x401
jl 0x8a9e
leaq 0x64d8(%rip), %rdi      # 0xf30a
callq 0x4a2c
jmp 0x8a9e