// File: /workspace/github_c_makefile_star2_O2/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 %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
leaq 0x27fbb(%rip), %rax     # 0x39524
leaq 0x4f9a0(%rip), %rcx     # 0x60f10
movq %rax, (%rcx)
callq 0x2755d
pushq $0x3
popq %rdi
callq 0x27e08
movq 0x8(%r14), %rsi
testq %rsi, %rsi
je 0x115b5
addq $0x8, %r14
cmpb $0x2d, (%rsi)
jne 0x115ab
cmpb $0x0, 0x1(%rsi)
je 0x115ab
incq %rsi
movq %rsi, %rdi
movq %r14, %rsi
callq 0x16480
movq %rax, %r14
jmp 0x11580
movq %rbx, %rdi
callq 0x1fae9
jmp 0x11580
callq 0x16c38
leaq 0x4f7fb(%rip), %rax     # 0x60dbc
leaq 0x4f894(%rip), %rcx     # 0x60e5c
movl (%rcx), %ecx
orl (%rax), %ecx
je 0x115df
leaq 0x48f5b(%rip), %rax     # 0x5a530
movl $0x1, (%rax)
movb $0x1, %al
jmp 0x115ec
leaq 0x48f4a(%rip), %rax     # 0x5a530
cmpl $0x0, (%rax)
setne %al
leaq 0x4f79d(%rip), %r14     # 0x60d90
movq (%r14), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x1162d
cmpb $0x2d, (%rdi)
jne 0x1160e
cmpb $0x0, 0x1(%rdi)
je 0x1162d
movq 0x488f3(%rip), %rax     # 0x59f08
movq (%rax), %rdx
leaq 0x2cb8e(%rip), %rsi     # 0x3e1ad
callq 0xe140
testq %rax, %rax
je 0x117c6
leaq 0x4f8e4(%rip), %rax     # 0x60f18
cmpq $0x0, (%rax)
jne 0x11641
movq $0x10, (%rax)
testq %rbx, %rbx
je 0x117ad
callq 0x27e49
callq 0x278bc
callq 0x1b92c
leaq 0x27f40(%rip), %rdi     # 0x395a0
xorl %eax, %eax
callq 0x11481
leaq 0x48ee2(%rip), %rbx     # 0x5a550
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x1169a
cmpb $0x0, (%rsi)
je 0x1169a
leaq 0x27f32(%rip), %rdi     # 0x395b4
xorl %eax, %eax
callq 0x11481
movq (%rbx), %rsi
leaq 0x27f40(%rip), %rdi     # 0x395d3
xorl %eax, %eax
callq 0x11481
leaq 0x48ea7(%rip), %rbx     # 0x5a548
movq (%rbx), %rsi
leaq 0x27f4d(%rip), %rdi     # 0x395f8
xorl %eax, %eax
callq 0x11481
movq (%rbx), %rsi
leaq 0x27f56(%rip), %rdi     # 0x39612
xorl %eax, %eax
callq 0x11481
leaq 0x27f68(%rip), %rdi     # 0x39632
xorl %eax, %eax
callq 0x11481
leaq 0x27fa1(%rip), %rdi     # 0x39679
xorl %eax, %eax
callq 0x11481
leaq 0x27fd6(%rip), %rdi     # 0x396bc
xorl %eax, %eax
callq 0x11481
leaq 0x28011(%rip), %rdi     # 0x39705
xorl %eax, %eax
callq 0x11481
leaq 0x28075(%rip), %rdi     # 0x39777
xorl %eax, %eax
callq 0x11481
leaq 0x28090(%rip), %rdi     # 0x397a0
xorl %eax, %eax
callq 0x11481
leaq 0x280ae(%rip), %rdi     # 0x397cc
xorl %eax, %eax
callq 0x11481
leaq 0x280e1(%rip), %rdi     # 0x3980d
xorl %eax, %eax
callq 0x11481
leaq 0x28117(%rip), %rdi     # 0x39851
xorl %eax, %eax
callq 0x11481
leaq 0x28128(%rip), %rdi     # 0x39870
xorl %eax, %eax
callq 0x11481
leaq 0x2813c(%rip), %rdi     # 0x39892
xorl %eax, %eax
callq 0x11481
xorl %edi, %edi
callq 0x2b228
leaq 0x4f61d(%rip), %r14     # 0x60d88
leaq 0x4f6fe(%rip), %r15     # 0x60e70
leaq 0x2813a(%rip), %rbx     # 0x398b3
xorl %r12d, %r12d
movslq (%r14), %rax
cmpq %rax, %r12
jge 0x11797
movq (%r15,%r12,8), %rsi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x11481
incq %r12
jmp 0x1177c
movq 0x4e222(%rip), %rdi     # 0x5f9c0
callq 0x118a0
movq %rax, %rbx
callq 0x2a9aa
jmp 0x117af
xorl %ebx, %ebx
movq %rbx, %rdi
callq 0x305cd
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq (%r14), %rbx
callq 0xe070
movl (%rax), %edi
callq 0xe2f0
leaq 0x27d55(%rip), %rdi     # 0x39531
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x113be