// File: /workspace/github_c_makefile_star2_O1/nimble-code[P]Uno/Src/uno_local.c
// Function: process_input
void
process_input(char *f)
{	FILE *fp;

	if (!CPRE)		/* if not set by the user on the command line */
	{
#ifdef CPP
		CPRE = CPP;	/* optional default set at uno-compilation time */
#else
		CPRE = "gcc -E";
#endif
	}

	if (!f || strstr(f, ".c") == NULL)
	{	if (f) printf("saw: %s\n", f);
		Usage("uno_local");
	}

	split_filename(f);

	if (working_dir != NULL)
	{	cpp2 = (char *) emalloc(strlen(working_dir)+1+2+strlen(cur_file)+1);
		sprintf(cpp2, "%s/__%s", working_dir, cur_file);

		cpp1 = (char *) emalloc(strlen(working_dir)+1+1+strlen(cur_file)+1);
		sprintf(cpp1, "%s/_%s", working_dir, cur_file);
	} else
	{	cpp2 = (char *) emalloc(strlen(cur_dir)+3+strlen(cur_file)+1);
		sprintf(cpp2, "%s/__%s", cur_dir, cur_file);

		cpp1 = (char *) emalloc(strlen(cur_dir)+2+strlen(cur_file)+1);
		sprintf(cpp1, "%s/_%s", cur_dir, cur_file);
	}

	cpp_cmd = (char *) emalloc(sizeof(char)*
			(strlen(CPRE)+
			(preproc_info?strlen(preproc_info):0)+
			strlen(f)+
			strlen(cpp2)+
			strlen("-I. ")+		/* just in case */
			32 ) );

	if (nopre)
	{	FILE *f1, *f2;
		char *x, buf[4096];

		if ((f1 = fopen(f, "r")) == NULL
		||  (f2 = fopen(cpp2, "w")) == NULL)
		{	fprintf(stderr, "uno: no file '%s', or cannot create '%s'\n", f, cpp2);
			exit(1);
		}
		add_pieces(f2, (char *) 0);
		fprintf(f2, "#line 1 \"%s\"\n", f);
		while (fgets(buf, sizeof(buf), f1))
		{	for (x = buf; *x == ' ' || *x == '\t'; x++)
				;
			if (strncmp(x, "#include", strlen("#include")) != 0) /* not an include */
				fprintf(f2, "%s", buf);
			else
				fprintf(f2, "\n");	/* maintain line count */
		}
		if (never) add_never(f2);

		fclose(f1);
		fclose(f2);
	} else
	{	if ((fp = fopen(cpp2, "w")) == NULL)
		{	fprintf(stderr, "uno: cannot create '%s'\n", cpp2);
			exit(1);
		}
		add_pieces(fp, f);
		fclose(fp);
	}

	if (working_dir != NULL)
		sprintf(cpp_cmd, "%s %s -I. %s >%s",
		CPRE, preproc_info?preproc_info:"", cpp2, cpp1);
	else
		sprintf(cpp_cmd, "%s %s %s >%s",
		CPRE, preproc_info?preproc_info:"", cpp2, cpp1);

	if (Verbose>1) printf("%s\n", cpp_cmd);

	if (system(cpp_cmd) != 0)
	{	fprintf(stderr, "preprocessing command '%s' failed\n", cpp_cmd);
		goto done;
	}

	if ((fp = fopen(cpp1, "r")) == NULL)
	{	fprintf(stderr, "uno: cannot open '%s'\n", cpp2);
		goto done;
	}

	init_nmetab();
	ParseStack = new_treestk();
	DoneStack  = new_treestk();
	contxt     = new_context();
	ParseStack->contxt = contxt;
	handle_new_file(ParseStack, fp, file_name);
	enter_scope(contxt);
	tree_parse(ParseStack, 0);	/* gram.y */
	name_scope(ParseStack->contxt, current_filename(), NONE_T);
	parse_tree = (top_of_stack(DoneStack))->parse_tree;
	fclose(fp);

	if (!parse_tree)
		fprintf(stderr, "uno: no parsetree for %s\n", f);
	else if (do_dflow)
	{	dflow_reset();
		walk_tree(parse_tree, 0);	/* dflow.c */

		if (viewtree)
		{	if (xrepro)
			{	print_recur(parse_tree, stdout);
			}
		} else
		{	if (xrepro)
			{	explore(f, parse_tree);
	}	}	}
done:
	clean_tmps();

	exit_scope(contxt);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1000, %rsp           # imm = 0x1000
movq %rdi, %rbx
cmpq $0x0, 0x33087(%rip)     # 0x38218
jne 0x51a1
leaq 0x1a8ea(%rip), %rax     # 0x1fa84
movq %rax, 0x33077(%rip)     # 0x38218
testq %rbx, %rbx
je 0x56a0
leaq 0x1ab2c(%rip), %rsi     # 0x1fcdd
movq %rbx, %rdi
callq 0x3270
testq %rax, %rax
je 0x568f
movq %rbx, %rdi
callq 0x30d0
leaq 0x1(%rax), %rdi
callq 0x61a1
movq %rax, 0x330a6(%rip)     # 0x38280
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3090
movq %rbx, %rdi
movl $0x2f, %esi
callq 0x3120
testq %rax, %rax
je 0x5227
movq %rax, %r15
subq %rbx, %r15
leaq 0x1(%r15), %r14
movq %r14, %rdi
callq 0x61a1
movq %rax, 0x32f58(%rip)     # 0x38168
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x3070
addq 0x3305b(%rip), %r14     # 0x38280
jmp 0x523c
leaq 0x1b001(%rip), %rax     # 0x2022f
movq %rax, 0x32f33(%rip)     # 0x38168
movq 0x33044(%rip), %r14     # 0x38280
movq %r14, 0x32fb5(%rip)     # 0x381f8
cmpl $0x2, 0x32fde(%rip)     # 0x38228
jge 0x561a
movq 0x32f81(%rip), %rdi     # 0x381d8
testq %rdi, %rdi
jne 0x526c
leaq 0x32f05(%rip), %r12     # 0x38168
movq 0x32efe(%rip), %rdi     # 0x38168
jmp 0x5273
leaq 0x32f65(%rip), %r12     # 0x381d8
callq 0x30d0
movq %rax, %r14
movq 0x32f76(%rip), %rdi     # 0x381f8
callq 0x30d0
leaq (%r14,%rax), %rdi
addq $0x4, %rdi
callq 0x61a1
movq %rax, 0x32f6d(%rip)     # 0x38208
movq (%r12), %rdx
movq 0x32f52(%rip), %rcx     # 0x381f8
leaq 0x1a7f1(%rip), %rsi     # 0x1fa9e
xorl %r14d, %r14d
movq %rax, %rdi
xorl %eax, %eax
callq 0x3240
movq (%r12), %rdi
callq 0x30d0
movq %rax, %r15
movq 0x32f2b(%rip), %rdi     # 0x381f8
callq 0x30d0
leaq (%r15,%rax), %rdi
addq $0x3, %rdi
callq 0x61a1
movq %rax, 0x32f2a(%rip)     # 0x38210
movq (%r12), %rdx
movq 0x32f07(%rip), %rcx     # 0x381f8
leaq 0x1a7ae(%rip), %rsi     # 0x1faa6
movq %rax, %rdi
xorl %eax, %eax
callq 0x3240
movq 0x32f0f(%rip), %rdi     # 0x38218
callq 0x30d0
movq %rax, %r15
movq 0x32e68(%rip), %rdi     # 0x38180
testq %rdi, %rdi
je 0x5325
callq 0x30d0
movq %rax, %r14
movq %rbx, %rdi
callq 0x30d0
movq %rax, %r12
movq 0x32ed1(%rip), %rdi     # 0x38208
callq 0x30d0
addq %r14, %r12
addq %r12, %r15
leaq (%rax,%r15), %rdi
addq $0x24, %rdi
callq 0x61a1
movq %rax, 0x32eca(%rip)     # 0x38220
cmpb $0x1, 0x32e93(%rip)     # 0x381f0
jne 0x5451
leaq 0x2a5e5(%rip), %rsi     # 0x2f94f
movq %rbx, %rdi
callq 0x3210
testq %rax, %rax
je 0x56ac
movq %rax, %r14
movq 0x32e83(%rip), %rdi     # 0x38208
leaq 0x1a882(%rip), %rsi     # 0x1fc0e
callq 0x3210
testq %rax, %rax
je 0x56ac
movq %rax, %r15
movq %rax, %rdi
xorl %esi, %esi
callq 0x4ea4
leaq 0x1a50b(%rip), %rsi     # 0x1f8b9
movq %r15, %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x3190
movq %rsp, %r12
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
movq %r14, %rdx
callq 0x3170
testq %rax, %rax
je 0x5432
leaq 0x1a6fd(%rip), %r13     # 0x1fad7
movq %r12, %rdi
movzbl (%rdi), %eax
cmpl $0x20, %eax
je 0x53ea
cmpl $0x9, %eax
jne 0x53ef
incq %rdi
jmp 0x53dd
movl $0x8, %edx
movq %r13, %rsi
callq 0x3080
testl %eax, %eax
je 0x540d
movq %r12, %rdi
movq %r15, %rsi
callq 0x3140
jmp 0x541a
movl $0xa, %edi
movq %r15, %rsi
callq 0x3160
movq %r12, %rdi
movl $0x1000, %esi           # imm = 0x1000
movq %r14, %rdx
callq 0x3170
movq %r12, %rdi
testq %rax, %rax
jne 0x53dd
cmpq $0x0, 0x32dae(%rip)     # 0x381e8
je 0x5444
movq %r15, %rdi
callq 0x4a17
movq %r14, %rdi
callq 0x30c0
movq %r15, %rdi
jmp 0x547e
movq 0x32db0(%rip), %rdi     # 0x38208
leaq 0x1a7af(%rip), %rsi     # 0x1fc0e
callq 0x3210
testq %rax, %rax
je 0x56b4
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4ea4
movq %r14, %rdi
callq 0x30c0
movq 0x32cf6(%rip), %rax     # 0x38180
testq %rax, %rax
leaq 0x1a927(%rip), %rcx     # 0x1fdbb
cmovneq %rax, %rcx
cmpq $0x0, 0x32d38(%rip)     # 0x381d8
movq 0x32d79(%rip), %rdi     # 0x38220
movq 0x32d6a(%rip), %rdx     # 0x38218
movq 0x32d53(%rip), %r8      # 0x38208
movq 0x32d54(%rip), %r9      # 0x38210
leaq 0x1a647(%rip), %rax     # 0x1fb0a
leaq 0x1a62f(%rip), %rsi     # 0x1faf9
cmoveq %rax, %rsi
xorl %eax, %eax
callq 0x3240
cmpl $0x2, 0x32d4c(%rip)     # 0x38228
jl 0x54ea
movq 0x32d3b(%rip), %rdi     # 0x38220
callq 0x30a0
movq 0x32d2f(%rip), %rdi     # 0x38220
callq 0x30e0
testl %eax, %eax
jne 0x5644
movq 0x32d0b(%rip), %rdi     # 0x38210
leaq 0x2a443(%rip), %rsi     # 0x2f94f
callq 0x3210
testq %rax, %rax
je 0x564b
movq %rax, %r14
callq 0x6089
callq 0x7f01
movq %rax, 0x32c92(%rip)     # 0x381c0
callq 0x7f01
movq %rax, 0x32c96(%rip)     # 0x381d0
callq 0x7073
movq %rax, 0x32c9a(%rip)     # 0x381e0
movq 0x32c73(%rip), %rdi     # 0x381c0
movq %rax, 0x10(%rdi)
movq 0x32c60(%rip), %rdx     # 0x381b8
movq %r14, %rsi
callq 0x8144
movq 0x32c79(%rip), %rdi     # 0x381e0
callq 0x711c
movq 0x32c4d(%rip), %rdi     # 0x381c0
xorl %esi, %esi
callq 0x7fec
movq 0x32c3f(%rip), %rax     # 0x381c0
movq 0x10(%rax), %r15
callq 0x1014a
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x6e56
movq 0x32c32(%rip), %rdi     # 0x381d0
callq 0x7f7b
movq (%rax), %rax
movq %rax, 0x32c83(%rip)     # 0x38230
movq %r14, %rdi
callq 0x30c0
cmpq $0x0, 0x32c73(%rip)     # 0x38230
je 0x5652
callq 0x10b54
movq 0x32c61(%rip), %rdi     # 0x38230
xorl %esi, %esi
callq 0x1119f
cmpl $0x0, 0x32c5b(%rip)     # 0x38238
movl 0x32c59(%rip), %eax     # 0x3823c
je 0x5605
testl %eax, %eax
je 0x566d
movq 0x32c3c(%rip), %rdi     # 0x38230
movq 0x329d5(%rip), %rax     # 0x37fd0
movq (%rax), %rsi
callq 0x13c4b
jmp 0x566d
testl %eax, %eax
je 0x566d
movq 0x32c20(%rip), %rsi     # 0x38230
movq %rbx, %rdi
callq 0x19c58
jmp 0x566d
movq 0x329d7(%rip), %rax     # 0x37ff8
movq (%rax), %rdi
movq 0x32b3d(%rip), %rcx     # 0x38168
leaq 0x1a63c(%rip), %rsi     # 0x1fc6e
movq %rbx, %rdx
movq %r14, %r8
xorl %eax, %eax
callq 0x3190
jmp 0x5250
callq 0x32e7
jmp 0x566d
callq 0x330c
jmp 0x566d
movq 0x3299f(%rip), %rax     # 0x37ff8
movq (%rax), %rdi
leaq 0x1a4ee(%rip), %rsi     # 0x1fb51
movq %rbx, %rdx
xorl %eax, %eax
callq 0x3190
callq 0x5152
movq 0x32b67(%rip), %rdi     # 0x381e0
callq 0x713e
addq $0x1000, %rsp           # imm = 0x1000
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x1a3f5(%rip), %rdi     # 0x1fa8b
movq %rbx, %rsi
xorl %eax, %eax
callq 0x3100
leaq 0x1a3ed(%rip), %rdi     # 0x1fa94
callq 0x46cc
movq %rbx, %rdi
callq 0x3331
callq 0x32bf