// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/lib.c
// Function: sparse_tokenstream
static struct symbol_list *sparse_tokenstream(struct token *token)
{
	int builtin = token && !token->pos.stream;

	// Preprocess the stream
	token = preprocess(token);

	if (dump_macro_defs || dump_macros_only) {
		if (!builtin)
			dump_macro_definitions();
		if (dump_macros_only)
			return NULL;
	}

	if (preprocess_only) {
		while (!eof_token(token)) {
			int prec = 1;
			struct token *next = token->next;
			const char *separator = "";
			if (next->pos.whitespace)
				separator = " ";
			if (next->pos.newline) {
				separator = "\n\t\t\t\t\t";
				prec = next->pos.pos;
				if (prec > 4)
					prec = 4;
			}
			printf("%s%.*s", show_token(token), prec, separator);
			token = next;
		}
		putchar('\n');

		return NULL;
	}

	// Parse the resulting C code
	while (!eof_token(token))
		token = external_declaration(token, &translation_unit_used_list, NULL);
	return translation_unit_used_list;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x10(%rbp)
movb %al, -0x29(%rbp)
je 0x17b24
movq -0x10(%rbp), %rax
movq (%rax), %rax
shrq $0x6, %rax
andq $0x3fff, %rax           # imm = 0x3FFF
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2b970
movq %rax, -0x10(%rbp)
leaq 0x75659(%rip), %rax     # 0x8d19c
cmpl $0x0, (%rax)
jne 0x17b54
leaq 0x75651(%rip), %rax     # 0x8d1a0
cmpl $0x0, (%rax)
je 0x17b7a
cmpl $0x0, -0x14(%rbp)
jne 0x17b5f
callq 0x2bd90
leaq 0x7563a(%rip), %rax     # 0x8d1a0
cmpl $0x0, (%rax)
je 0x17b78
movq $0x0, -0x8(%rbp)
jmp 0x17ca6
jmp 0x17b7a
leaq 0x756bb(%rip), %rax     # 0x8d23c
cmpl $0x0, (%rax)
je 0x17c66
jmp 0x17b8c
leaq 0x94e2d(%rip), %rax     # 0xac9c0
cmpq %rax, -0x10(%rbp)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x17ba5
jmp 0x17c52
movl $0x1, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
leaq 0x4ac6a(%rip), %rax     # 0x62829
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
shrq $0x15, %rax
andq $0x1, %rax
cmpl $0x0, %eax
je 0x17be2
leaq 0x4b9ec(%rip), %rax     # 0x635ca
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
shrq $0x14, %rax
andq $0x1, %rax
cmpl $0x0, %eax
je 0x17c24
leaq 0x4ac26(%rip), %rax     # 0x62823
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
shrq $0x16, %rax
andq $0x3ff, %rax            # imm = 0x3FF
movl %eax, -0x18(%rbp)
cmpl $0x4, -0x18(%rbp)
jle 0x17c22
movl $0x4, -0x18(%rbp)
jmp 0x17c24
movq -0x10(%rbp), %rdi
callq 0x44420
movq %rax, %rsi
movl -0x18(%rbp), %edx
movq -0x28(%rbp), %rcx
leaq 0x4abec(%rip), %rdi     # 0x6282a
movb $0x0, %al
callq 0x110f0
movq -0x20(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x17b8c
movl $0xa, %edi
callq 0x11040
movq $0x0, -0x8(%rbp)
jmp 0x17ca6
jmp 0x17c68
leaq 0x94d51(%rip), %rax     # 0xac9c0
cmpq %rax, -0x10(%rbp)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x17c7e
jmp 0x17c98
movq -0x10(%rbp), %rdi
leaq 0x79157(%rip), %rsi     # 0x90de0
xorl %eax, %eax
movl %eax, %edx
callq 0x23ba0
movq %rax, -0x10(%rbp)
jmp 0x17c68
leaq 0x79141(%rip), %rax     # 0x90de0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq