// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/lib.c
// Function: sparse_initialize
struct symbol_list *sparse_initialize(int argc, char **argv, struct string_list **filelist)
{
	char **args;
	struct symbol_list *list;

	base_filename = "command-line";

	// Initialize symbol stream first, so that we can add defines etc
	init_symbols();

	// initialize the default target to the native 'machine'
	target_config(MACH_NATIVE);

	args = argv;
	for (;;) {
		char *arg = *++args;
		if (!arg)
			break;

		if (arg[0] == '-' && arg[1]) {
			args = handle_switch(arg+1, args);
			continue;
		}
		add_ptr_list(filelist, arg);
	}
	handle_switch_finalize();

	// Redirect stdout if needed
	if (dump_macro_defs || preprocess_only)
		do_output = 1;
	if (do_output && outfile && strcmp(outfile, "-")) {
		if (!freopen(outfile, "w", stdout))
			die("error: cannot open %s: %s", outfile, strerror(errno));
	}

	if (fdump_ir == 0)
		fdump_ir = PASS_FINAL;

	list = NULL;
	if (filelist) {
		// Initialize type system
		target_init();
		init_ctype();

		predefined_macros();
		create_builtin_stream();
		init_builtins(0);

		list = sparse_initial();

		/*
		 * Protect the initial token allocations, since
		 * they need to survive all the others
		 */
		protect_token_alloc();
	}
	/*
	 * Evaluate the complete symbol list
	 * Note: This is not needed for normal cases.
	 *	 These symbols should only be predefined defines and
	 *	 declaratons which will be evaluated later, when needed.
	 *	 This is also the case when a file is directly included via
	 *	 '-include <file>' on the command line *AND* the file only
	 *	 contains defines, declarations and inline definitions.
	 *	 However, in the rare cases where the given file should
	 *	 contain some definitions, these will never be evaluated
	 *	 and thus won't be able to be linearized correctly.
	 *	 Hence the evaluate_symbol_list() here under.
	 */
	evaluate_symbol_list(list);
	return list;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
leaq 0x75f76(%rip), %rax     # 0x8d2f0
leaq 0x4b0ff(%rip), %rcx     # 0x62480
movq %rcx, (%rax)
callq 0x40b70
movl $0x3, %edi
callq 0x41f10
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x8, %rcx
movq %rcx, -0x20(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x173bb
jmp 0x17406
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x173eb
movq -0x30(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x173eb
movq -0x30(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
callq 0x20eb0
movq %rax, -0x20(%rbp)
jmp 0x1739b
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x31370
movq %rax, -0x40(%rbp)
jmp 0x1739b
callq 0x21dc0
leaq 0x75d8a(%rip), %rax     # 0x8d19c
cmpl $0x0, (%rax)
jne 0x17423
leaq 0x75e1e(%rip), %rax     # 0x8d23c
cmpl $0x0, (%rax)
je 0x17430
leaq 0x6d386(%rip), %rax     # 0x847b0
movl $0x1, (%rax)
leaq 0x6d379(%rip), %rax     # 0x847b0
cmpl $0x0, (%rax)
je 0x174bb
leaq 0x75d2d(%rip), %rax     # 0x8d170
cmpq $0x0, (%rax)
je 0x174bb
leaq 0x75d20(%rip), %rax     # 0x8d170
movq (%rax), %rdi
leaq 0x54bdf(%rip), %rsi     # 0x6c039
callq 0x111b0
cmpl $0x0, %eax
je 0x174bb
leaq 0x75d05(%rip), %rax     # 0x8d170
movq (%rax), %rdi
movq 0x6cb5b(%rip), %rax     # 0x83fd0
movq (%rax), %rdx
leaq 0x4f642(%rip), %rsi     # 0x66ac1
callq 0x11140
cmpq $0x0, %rax
jne 0x174b9
leaq 0x75cdf(%rip), %rax     # 0x8d170
movq (%rax), %rax
movq %rax, -0x48(%rbp)
callq 0x11070
movl (%rax), %edi
callq 0x112e0
movq -0x48(%rbp), %rsi
movq %rax, %rdx
leaq 0x4afdb(%rip), %rdi     # 0x6248d
movb $0x0, %al
callq 0x17190
jmp 0x174bb
leaq 0x75e36(%rip), %rax     # 0x8d2f8
cmpq $0x0, (%rax)
jne 0x174d6
leaq 0x75e29(%rip), %rax     # 0x8d2f8
movq $0x10, (%rax)
movq $0x0, -0x28(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x1750e
callq 0x41f80
callq 0x40ef0
callq 0x2a2e0
callq 0x17530
xorl %edi, %edi
callq 0x47bb0
callq 0x17660
movq %rax, -0x28(%rbp)
callq 0x46a50
movq -0x28(%rbp), %rdi
callq 0x4ff30
movq -0x28(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)