// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x10b0, %rsp           # imm = 0x10B0
movq %rdi, -0x8(%rbp)
cmpq $0x0, 0x4a631(%rip)     # 0x4e368
jne 0x3d47
leaq 0x30d44(%rip), %rax     # 0x34a84
movq %rax, 0x4a621(%rip)     # 0x4e368
cmpq $0x0, -0x8(%rbp)
je 0x3d64
movq -0x8(%rbp), %rdi
leaq 0x30f64(%rip), %rsi     # 0x34cbd
callq 0x3240
cmpq $0x0, %rax
jne 0x3d89
cmpq $0x0, -0x8(%rbp)
je 0x3d7d
movq -0x8(%rbp), %rsi
leaq 0x43a21(%rip), %rdi     # 0x47797
movb $0x0, %al
callq 0x30f0
leaq 0x30d07(%rip), %rdi     # 0x34a8b
callq 0x3360
movq -0x8(%rbp), %rdi
callq 0x4490
cmpq $0x0, 0x4a58e(%rip)     # 0x4e328
je 0x3e6d
movq 0x4a581(%rip), %rdi     # 0x4e328
callq 0x30c0
addq $0x1, %rax
addq $0x2, %rax
movq %rax, -0x1040(%rbp)
movq 0x4a586(%rip), %rdi     # 0x4e348
callq 0x30c0
movq -0x1040(%rbp), %rdi
addq %rax, %rdi
addq $0x1, %rdi
callq 0x54c0
movq %rax, 0x4a577(%rip)     # 0x4e358
movq 0x4a570(%rip), %rdi     # 0x4e358
movq 0x4a539(%rip), %rdx     # 0x4e328
movq 0x4a552(%rip), %rcx     # 0x4e348
leaq 0x30c98(%rip), %rsi     # 0x34a95
movb $0x0, %al
callq 0x3220
movq 0x4a51d(%rip), %rdi     # 0x4e328
callq 0x30c0
addq $0x1, %rax
addq $0x1, %rax
movq %rax, -0x1038(%rbp)
movq 0x4a522(%rip), %rdi     # 0x4e348
callq 0x30c0
movq -0x1038(%rbp), %rdi
addq %rax, %rdi
addq $0x1, %rdi
callq 0x54c0
movq %rax, 0x4a51b(%rip)     # 0x4e360
movq 0x4a514(%rip), %rdi     # 0x4e360
movq 0x4a4d5(%rip), %rdx     # 0x4e328
movq 0x4a4ee(%rip), %rcx     # 0x4e348
leaq 0x30c3c(%rip), %rsi     # 0x34a9d
movb $0x0, %al
callq 0x3220
jmp 0x3f2d
movq 0x4a2dc(%rip), %rdi     # 0x4e150
callq 0x30c0
addq $0x3, %rax
movq %rax, -0x1050(%rbp)
movq 0x4a4bd(%rip), %rdi     # 0x4e348
callq 0x30c0
movq -0x1050(%rbp), %rdi
addq %rax, %rdi
addq $0x1, %rdi
callq 0x54c0
movq %rax, 0x4a4ae(%rip)     # 0x4e358
movq 0x4a4a7(%rip), %rdi     # 0x4e358
movq 0x4a298(%rip), %rdx     # 0x4e150
movq 0x4a489(%rip), %rcx     # 0x4e348
leaq 0x30bcf(%rip), %rsi     # 0x34a95
movb $0x0, %al
callq 0x3220
movq 0x4a27c(%rip), %rdi     # 0x4e150
callq 0x30c0
addq $0x2, %rax
movq %rax, -0x1048(%rbp)
movq 0x4a45d(%rip), %rdi     # 0x4e348
callq 0x30c0
movq -0x1048(%rbp), %rdi
addq %rax, %rdi
addq $0x1, %rdi
callq 0x54c0
movq %rax, 0x4a456(%rip)     # 0x4e360
movq 0x4a44f(%rip), %rdi     # 0x4e360
movq 0x4a238(%rip), %rdx     # 0x4e150
movq 0x4a429(%rip), %rcx     # 0x4e348
leaq 0x30b77(%rip), %rsi     # 0x34a9d
movb $0x0, %al
callq 0x3220
movq 0x4a434(%rip), %rdi     # 0x4e368
callq 0x30c0
movq %rax, -0x1058(%rbp)
cmpq $0x0, 0x4a230(%rip)     # 0x4e178
je 0x3f5f
movq 0x4a227(%rip), %rdi     # 0x4e178
callq 0x30c0
movq %rax, -0x1060(%rbp)
jmp 0x3f6a
xorl %eax, %eax
movq %rax, -0x1060(%rbp)
jmp 0x3f6a
movq -0x1058(%rbp), %rax
movq -0x1060(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x1070(%rbp)
movq -0x8(%rbp), %rdi
callq 0x30c0
movq %rax, %rcx
movq -0x1070(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x1068(%rbp)
movq 0x4a3b2(%rip), %rdi     # 0x4e358
callq 0x30c0
movq -0x1068(%rbp), %rdi
addq %rax, %rdi
addq $0x4, %rdi
addq $0x20, %rdi
shlq $0x0, %rdi
callq 0x54c0
movq %rax, 0x4a3a3(%rip)     # 0x4e370
cmpl $0x0, 0x4a36c(%rip)     # 0x4e340
je 0x4141
movq -0x8(%rbp), %rdi
leaq 0x40c2a(%rip), %rsi     # 0x44c0f
callq 0x31f0
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
je 0x4011
movq 0x4a35d(%rip), %rdi     # 0x4e358
leaq 0x30c03(%rip), %rsi     # 0x34c05
callq 0x31f0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x403e
movq 0x49fe0(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq -0x8(%rbp), %rdx
movq 0x4a332(%rip), %rcx     # 0x4e358
leaq 0x30a77(%rip), %rsi     # 0x34aa4
movb $0x0, %al
callq 0x3170
movl $0x1, %edi
callq 0x3230
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3ac0
movq -0x20(%rbp), %rdi
movq -0x8(%rbp), %rdx
leaq 0x3085f(%rip), %rsi     # 0x348b9
movb $0x0, %al
callq 0x3170
leaq -0x1030(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x1000, %esi           # imm = 0x1000
callq 0x3150
cmpq $0x0, %rax
je 0x411a
leaq -0x1030(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x20, %ecx
movb %al, -0x1071(%rbp)
je 0x40b2
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x9, %eax
sete %al
movb %al, -0x1071(%rbp)
movb -0x1071(%rbp), %al
testb $0x1, %al
jne 0x40be
jmp 0x40ce
jmp 0x40c0
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x408b
movq -0x28(%rbp), %rdi
leaq 0x309f5(%rip), %rsi     # 0x34ace
movl $0x8, %edx
callq 0x3070
cmpl $0x0, %eax
je 0x4103
movq -0x20(%rbp), %rdi
leaq -0x1030(%rbp), %rdx
leaq 0x41a28(%rip), %rsi     # 0x45b22
movb $0x0, %al
callq 0x3170
jmp 0x4115
movq -0x20(%rbp), %rdi
leaq 0x40631(%rip), %rsi     # 0x4473f
movb $0x0, %al
callq 0x3170
jmp 0x4061
cmpq $0x0, 0x4a216(%rip)     # 0x4e338
je 0x412d
movq -0x20(%rbp), %rdi
callq 0x36a0
movq -0x18(%rbp), %rdi
callq 0x30b0
movq -0x20(%rbp), %rdi
callq 0x30b0
jmp 0x419d
movq 0x4a210(%rip), %rdi     # 0x4e358
leaq 0x30ab6(%rip), %rsi     # 0x34c05
callq 0x31f0
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
jne 0x4187
movq 0x49e93(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x4a1e9(%rip), %rdx     # 0x4e358
leaq 0x30961(%rip), %rsi     # 0x34ad7
movb $0x0, %al
callq 0x3170
movl $0x1, %edi
callq 0x3230
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x3ac0
movq -0x10(%rbp), %rdi
callq 0x30b0
cmpq $0x0, 0x4a183(%rip)     # 0x4e328
je 0x4220
movq 0x4a1c2(%rip), %rax     # 0x4e370
movq %rax, -0x1088(%rbp)
movq 0x4a1ac(%rip), %rax     # 0x4e368
movq %rax, -0x1080(%rbp)
cmpq $0x0, 0x49fad(%rip)     # 0x4e178
je 0x41dd
movq 0x49fa4(%rip), %rax     # 0x4e178
movq %rax, -0x1090(%rbp)
jmp 0x41ed
leaq 0x30bd1(%rip), %rax     # 0x34db5
movq %rax, -0x1090(%rbp)
jmp 0x41ed
movq -0x1080(%rbp), %rdx
movq -0x1088(%rbp), %rdi
movq -0x1090(%rbp), %rcx
movq 0x4a14f(%rip), %r8      # 0x4e358
movq 0x4a150(%rip), %r9      # 0x4e360
leaq 0x308d9(%rip), %rsi     # 0x34af0
movb $0x0, %al
callq 0x3220
jmp 0x4297
movq 0x4a149(%rip), %rax     # 0x4e370
movq %rax, -0x10a0(%rbp)
movq 0x4a133(%rip), %rax     # 0x4e368
movq %rax, -0x1098(%rbp)
cmpq $0x0, 0x49f34(%rip)     # 0x4e178
je 0x4256
movq 0x49f2b(%rip), %rax     # 0x4e178
movq %rax, -0x10a8(%rbp)
jmp 0x4266
leaq 0x30b58(%rip), %rax     # 0x34db5
movq %rax, -0x10a8(%rbp)
jmp 0x4266
movq -0x1098(%rbp), %rdx
movq -0x10a0(%rbp), %rdi
movq -0x10a8(%rbp), %rcx
movq 0x4a0d6(%rip), %r8      # 0x4e358
movq 0x4a0d7(%rip), %r9      # 0x4e360
leaq 0x30871(%rip), %rsi     # 0x34b01
movb $0x0, %al
callq 0x3220
cmpl $0x1, 0x4a0da(%rip)     # 0x4e378
jle 0x42b5
movq 0x4a0c9(%rip), %rsi     # 0x4e370
leaq 0x42b6e(%rip), %rdi     # 0x46e1c
movb $0x0, %al
callq 0x30f0
movq 0x4a0b4(%rip), %rdi     # 0x4e370
callq 0x30d0
cmpl $0x0, %eax
je 0x42ea
movq 0x49d2b(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x4a099(%rip), %rdx     # 0x4e370
leaq 0x30830(%rip), %rsi     # 0x34b0e
movb $0x0, %al
callq 0x3170
jmp 0x446f
movq 0x4a06f(%rip), %rdi     # 0x4e360
leaq 0x40917(%rip), %rsi     # 0x44c0f
callq 0x31f0
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
jne 0x432b
movq 0x49cea(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq 0x4a040(%rip), %rdx     # 0x4e358
leaq 0x30812(%rip), %rsi     # 0x34b31
movb $0x0, %al
callq 0x3170
jmp 0x446f
callq 0x52f0
callq 0x8ed0
movq %rax, 0x49fd4(%rip)     # 0x4e310
callq 0x8ed0
movq %rax, 0x49fd8(%rip)     # 0x4e320
callq 0x6b70
movq %rax, 0x49fdc(%rip)     # 0x4e330
movq 0x49fd5(%rip), %rcx     # 0x4e330
movq 0x49fae(%rip), %rax     # 0x4e310
movq %rcx, 0x10(%rax)
movq 0x49fa3(%rip), %rdi     # 0x4e310
movq -0x10(%rbp), %rsi
movq 0x49f90(%rip), %rdx     # 0x4e308
callq 0x9220
movq 0x49fac(%rip), %rdi     # 0x4e330
callq 0x6c60
movq 0x49f80(%rip), %rdi     # 0x4e310
xorl %esi, %esi
callq 0x90f0
movq 0x49f72(%rip), %rax     # 0x4e310
movq 0x10(%rax), %rax
movq %rax, -0x10b0(%rbp)
callq 0x19d40
movq -0x10b0(%rbp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x6700
movq 0x49f5a(%rip), %rdi     # 0x4e320
callq 0x9010
movq (%rax), %rax
movq %rax, 0x49fab(%rip)     # 0x4e380
movq -0x10(%rbp), %rdi
callq 0x30b0
cmpq $0x0, 0x49f9a(%rip)     # 0x4e380
jne 0x4406
movq 0x49c09(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
movq -0x8(%rbp), %rdx
leaq 0x3074b(%rip), %rsi     # 0x34b48
movb $0x0, %al
callq 0x3170
jmp 0x446d
cmpl $0x0, 0x49d73(%rip)     # 0x4e180
je 0x446b
callq 0x1af20
movq 0x49f65(%rip), %rdi     # 0x4e380
xorl %eax, %eax
movl %eax, %esi
callq 0x1b7f0
cmpl $0x0, 0x49f5d(%rip)     # 0x4e388
je 0x444e
cmpl $0x0, 0x49f58(%rip)     # 0x4e38c
je 0x444c
movq 0x49f43(%rip), %rdi     # 0x4e380
movq 0x49b8c(%rip), %rax     # 0x4dfd0
movq (%rax), %rsi
callq 0x1f900
jmp 0x4469
cmpl $0x0, 0x49f37(%rip)     # 0x4e38c
je 0x4467
movq -0x8(%rbp), %rdi
movq 0x49f1e(%rip), %rsi     # 0x4e380
callq 0x29400
jmp 0x4469
jmp 0x446b
jmp 0x446d
jmp 0x446f
callq 0x3cf0
movq 0x49eb5(%rip), %rdi     # 0x4e330
callq 0x6cb0
addq $0x10b0, %rsp           # imm = 0x10B0
popq %rbp
retq
nopl (%rax)