// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/pre-process.c
// Function: do_preprocess
static void do_preprocess(struct token **list)
{
	struct token *next;

	while (!eof_token(next = scan_next(list))) {
		struct stream *stream = input_streams + next->pos.stream;

		if (next->pos.newline && match_op(next, '#')) {
			if (!next->pos.noexpand) {
				preprocessor_line(stream, list);
				__free_token(next);	/* Free the '#' token */
				continue;
			}
		}

		switch (token_type(next)) {
		case TOKEN_STREAMEND:
			if (stream->top_if) {
				nesting_error(stream);
				sparse_error(stream->top_if->pos, "unterminated preprocessor conditional");
				stream->top_if = NULL;
				false_nesting = 0;
			}
			if (!stream->dirty)
				stream->constant = CONSTANT_FILE_YES;
			*list = next->next;
			include_level--;
			continue;
		case TOKEN_STREAMBEGIN:
			*list = next->next;
			include_level++;
			continue;

		default:
			dirty_stream(stream);
			if (false_nesting) {
				*list = next->next;
				__free_token(next);
				continue;
			}

			if (token_type(next) != TOKEN_IDENT ||
			    expand_one_symbol(list))
				list = &next->next;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2eaf0
movq %rax, -0x10(%rbp)
leaq 0x80e30(%rip), %rcx     # 0xac9c0
cmpq %rcx, %rax
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2bba1
jmp 0x2bd87
leaq 0x687e0(%rip), %rax     # 0x94388
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rcx
shrq $0x6, %rcx
andq $0x3fff, %rcx           # imm = 0x3FFF
movslq %ecx, %rcx
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
shrq $0x14, %rax
andq $0x1, %rax
cmpl $0x0, %eax
je 0x2bc1f
movq -0x10(%rbp), %rdi
movl $0x23, %esi
callq 0x2c380
cmpl $0x0, %eax
je 0x2bc1f
movq -0x10(%rbp), %rax
movq (%rax), %rax
shrq $0x3f, %rax
cmpl $0x0, %eax
jne 0x2bc1d
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x2f9d0
movq -0x10(%rbp), %rdi
callq 0x469b0
jmp 0x2bb7c
jmp 0x2bc1f
movq -0x10(%rbp), %rax
movl (%rax), %eax
andl $0x3f, %eax
movl %eax, -0x1c(%rbp)
subl $0x13, %eax
je 0x2bcdb
jmp 0x2bc36
movl -0x1c(%rbp), %eax
subl $0x14, %eax
jne 0x2bcfe
jmp 0x2bc44
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x2bca3
jmp 0x2bc51
movq -0x18(%rbp), %rax
movl $0x1, 0x2c(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x40(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x38(%rax)
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdi
leaq 0x3c106(%rip), %rsi     # 0x67d8c
movb $0x0, %al
callq 0x16f90
movq -0x18(%rbp), %rax
movq $0x0, 0x48(%rax)
movl $0x0, 0x638a1(%rip)     # 0x8f544
movq -0x18(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
jne 0x2bcb8
movq -0x18(%rbp), %rax
movl $0x3, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movl 0x64ba7(%rip), %eax     # 0x90874
addl $-0x1, %eax
movl %eax, 0x64b9e(%rip)     # 0x90874
jmp 0x2bb7c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movl 0x64b84(%rip), %eax     # 0x90874
addl $0x1, %eax
movl %eax, 0x64b7b(%rip)     # 0x90874
jmp 0x2bb7c
jmp 0x2bd00
movq -0x18(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
jne 0x2bd2e
movq -0x18(%rbp), %rax
movl $0x1, 0x2c(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x2bd2c
movq -0x18(%rbp), %rax
movq $0x0, 0x38(%rax)
jmp 0x2bd2e
jmp 0x2bd30
cmpl $0x0, 0x6380d(%rip)     # 0x8f544
je 0x2bd56
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rdi
callq 0x469b0
jmp 0x2bb7c
movq -0x10(%rbp), %rax
movq (%rax), %rax
andq $0x3f, %rax
cmpl $0x3, %eax
jne 0x2bd74
movq -0x8(%rbp), %rdi
callq 0x2eb70
cmpl $0x0, %eax
je 0x2bd80
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x8(%rbp)
jmp 0x2bd82
jmp 0x2bb7c
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)