// File: /workspace/github_c_makefile_star2_O3/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 0x2e745(%rip), %rax     # 0x40524
leaq 0x5512a(%rip), %rcx     # 0x66f10
movq %rax, (%rcx)
callq 0x2bfa5
movl $0x3, %edi
callq 0x2c830
movq 0x8(%r14), %rsi
testq %rsi, %rsi
je 0x11e38
addq $0x8, %r14
cmpb $0x2d, (%rsi)
jne 0x11e23
cmpb $0x0, 0x1(%rsi)
je 0x11e23
incq %rsi
movq %rsi, %rdi
movq %r14, %rsi
callq 0x18498
movq %rax, %r14
jmp 0x11e2b
movq %rbx, %rdi
callq 0x227b4
movq 0x8(%r14), %rsi
addq $0x8, %r14
testq %rsi, %rsi
jne 0x11e05
callq 0x18ca5
leaq 0x54f78(%rip), %rax     # 0x66dbc
leaq 0x55011(%rip), %rcx     # 0x66e5c
movl (%rcx), %ecx
orl (%rax), %ecx
je 0x11e62
leaq 0x4e6d8(%rip), %rax     # 0x60530
movl $0x1, (%rax)
movb $0x1, %al
jmp 0x11e6f
leaq 0x4e6c7(%rip), %rax     # 0x60530
cmpl $0x0, (%rax)
setne %al
leaq 0x54f1a(%rip), %r14     # 0x66d90
movq (%r14), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x11eb0
cmpb $0x2d, (%rdi)
jne 0x11e91
cmpb $0x0, 0x1(%rdi)
je 0x11eb0
movq 0x4e070(%rip), %rax     # 0x5ff08
movq (%rax), %rdx
leaq 0x332ab(%rip), %rsi     # 0x4514d
callq 0xe140
testq %rax, %rax
je 0x1204d
leaq 0x55061(%rip), %rax     # 0x66f18
cmpq $0x0, (%rax)
jne 0x11ec4
movq $0x10, (%rax)
testq %rbx, %rbx
je 0x12034
callq 0x2c871
callq 0x2c306
callq 0x1e10c
leaq 0x2e6bd(%rip), %rdi     # 0x405a0
xorl %eax, %eax
callq 0x11cf7
leaq 0x4e65f(%rip), %rbx     # 0x60550
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x11f1d
cmpb $0x0, (%rsi)
je 0x11f1d
leaq 0x2e6af(%rip), %rdi     # 0x405b4
xorl %eax, %eax
callq 0x11cf7
movq (%rbx), %rsi
leaq 0x2e6bd(%rip), %rdi     # 0x405d3
xorl %eax, %eax
callq 0x11cf7
leaq 0x4e624(%rip), %rbx     # 0x60548
movq (%rbx), %rsi
leaq 0x2e6ca(%rip), %rdi     # 0x405f8
xorl %eax, %eax
callq 0x11cf7
movq (%rbx), %rsi
leaq 0x2e6d3(%rip), %rdi     # 0x40612
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e6e5(%rip), %rdi     # 0x40632
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e71e(%rip), %rdi     # 0x40679
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e753(%rip), %rdi     # 0x406bc
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e78e(%rip), %rdi     # 0x40705
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e7f2(%rip), %rdi     # 0x40777
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e80d(%rip), %rdi     # 0x407a0
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e82b(%rip), %rdi     # 0x407cc
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e85e(%rip), %rdi     # 0x4080d
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e894(%rip), %rdi     # 0x40851
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e8a5(%rip), %rdi     # 0x40870
xorl %eax, %eax
callq 0x11cf7
leaq 0x2e8b9(%rip), %rdi     # 0x40892
xorl %eax, %eax
callq 0x11cf7
xorl %edi, %edi
callq 0x300e0
leaq 0x54d9a(%rip), %r14     # 0x66d88
cmpl $0x0, (%r14)
jle 0x1201e
leaq 0x54e75(%rip), %r15     # 0x66e70
leaq 0x2e8b1(%rip), %rbx     # 0x408b3
xorl %r12d, %r12d
movq (%r15,%r12,8), %rsi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x11cf7
incq %r12
movslq (%r14), %rax
cmpq %rax, %r12
jl 0x12005
movq 0x5399b(%rip), %rdi     # 0x659c0
callq 0x1212f
movq %rax, %rbx
callq 0x2f8bd
jmp 0x12036
xorl %ebx, %ebx
movq %rbx, %rdi
callq 0x3642b
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq (%r14), %rbx
callq 0xe070
movl (%rax), %edi
callq 0xe2e0
leaq 0x2e4ce(%rip), %rdi     # 0x40531
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x11c32