// File: /workspace/github_c_makefile_star2_O1/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 0x2f78d(%rip), %rax     # 0x41524
leaq 0x56172(%rip), %rcx     # 0x67f10
movq %rax, (%rcx)
callq 0x2c4d8
movl $0x3, %edi
callq 0x2cd64
movq 0x8(%r14), %r15
addq $0x8, %r14
testq %r15, %r15
je 0x11de6
cmpb $0x2d, (%r15)
jne 0x11ddb
cmpb $0x0, 0x1(%r15)
je 0x11ddb
leaq 0x1(%r15), %rdi
movq %r14, %rsi
callq 0x18470
movq %rax, %r14
jmp 0x11de6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2285b
testq %r15, %r15
jne 0x11db0
callq 0x18d1c
leaq 0x55fc5(%rip), %rax     # 0x67dbc
leaq 0x5605e(%rip), %rcx     # 0x67e5c
movl (%rcx), %ecx
orl (%rax), %ecx
je 0x11e11
leaq 0x4f725(%rip), %rax     # 0x61530
movl $0x1, (%rax)
leaq 0x4f718(%rip), %rax     # 0x61530
cmpl $0x0, (%rax)
setne %al
leaq 0x55f6b(%rip), %r15     # 0x67d90
movq (%r15), %r14
testq %r14, %r14
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x11e6a
leaq 0x3956d(%rip), %rsi     # 0x4b3a9
movq %r14, %rdi
callq 0xe1c0
testl %eax, %eax
je 0x11e6a
movq 0x4f0a9(%rip), %rax     # 0x60ef8
movq (%rax), %rdx
leaq 0x34334(%rip), %rsi     # 0x4618d
movq %r14, %rdi
callq 0xe140
testq %rax, %rax
je 0x12007
leaq 0x560a7(%rip), %rax     # 0x67f18
cmpq $0x0, (%rax)
jne 0x11e7e
movq $0x10, (%rax)
testq %rbx, %rbx
je 0x11fee
callq 0x2cda5
callq 0x2c839
callq 0x1e008
leaq 0x2f703(%rip), %rdi     # 0x415a0
xorl %eax, %eax
callq 0x11caf
leaq 0x4f6a5(%rip), %rbx     # 0x61550
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x11ed7
cmpb $0x0, (%rsi)
je 0x11ed7
leaq 0x2f6f5(%rip), %rdi     # 0x415b4
xorl %eax, %eax
callq 0x11caf
movq (%rbx), %rsi
leaq 0x2f703(%rip), %rdi     # 0x415d3
xorl %eax, %eax
callq 0x11caf
leaq 0x4f66a(%rip), %rbx     # 0x61548
movq (%rbx), %rsi
leaq 0x2f710(%rip), %rdi     # 0x415f8
xorl %eax, %eax
callq 0x11caf
movq (%rbx), %rsi
leaq 0x2f719(%rip), %rdi     # 0x41612
xorl %eax, %eax
callq 0x11caf
leaq 0x2f72b(%rip), %rdi     # 0x41632
xorl %eax, %eax
callq 0x11caf
leaq 0x2f764(%rip), %rdi     # 0x41679
xorl %eax, %eax
callq 0x11caf
leaq 0x2f799(%rip), %rdi     # 0x416bc
xorl %eax, %eax
callq 0x11caf
leaq 0x2f7d4(%rip), %rdi     # 0x41705
xorl %eax, %eax
callq 0x11caf
leaq 0x2f838(%rip), %rdi     # 0x41777
xorl %eax, %eax
callq 0x11caf
leaq 0x2f853(%rip), %rdi     # 0x417a0
xorl %eax, %eax
callq 0x11caf
leaq 0x2f871(%rip), %rdi     # 0x417cc
xorl %eax, %eax
callq 0x11caf
leaq 0x2f8a4(%rip), %rdi     # 0x4180d
xorl %eax, %eax
callq 0x11caf
leaq 0x2f8da(%rip), %rdi     # 0x41851
xorl %eax, %eax
callq 0x11caf
leaq 0x2f8eb(%rip), %rdi     # 0x41870
xorl %eax, %eax
callq 0x11caf
leaq 0x2f8ff(%rip), %rdi     # 0x41892
xorl %eax, %eax
callq 0x11caf
xorl %edi, %edi
callq 0x30743
leaq 0x55de0(%rip), %r14     # 0x67d88
cmpl $0x0, (%r14)
jle 0x11fd8
leaq 0x55ebb(%rip), %r15     # 0x67e70
leaq 0x2f8f7(%rip), %rbx     # 0x418b3
xorl %r12d, %r12d
movq (%r15,%r12,8), %rsi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x11caf
incq %r12
movslq (%r14), %rax
cmpq %rax, %r12
jl 0x11fbf
movq 0x549e1(%rip), %rdi     # 0x669c0
callq 0x120ef
movq %rax, %rbx
callq 0x2fef1
jmp 0x11ff0
xorl %ebx, %ebx
movq %rbx, %rdi
callq 0x36f42
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq (%r15), %rbx
callq 0xe070
movl (%rax), %edi
callq 0xe2e0
leaq 0x2f514(%rip), %rdi     # 0x41531
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x11bea