// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/dissect.c
// Function: do_file
static void do_file(char *file)
{
	struct symbol_list *res = sparse_keep_tokens(file);

	if (!dissect_show_all_symbols) {
		do_sym_list(res);
		goto end;
	}

	DO_LIST(file_scope->symbols, sym,
		if (input_streams[sym->pos.stream].fd != -1 && valid_namespace(sym->namespace)) {
			if (is_typedef(sym)) {
				sym->kind = 't';
				reporter->r_symdef(sym);
				continue;
			}

			if (is_macro(sym)) {
				sym->kind = 'd';
				reporter->r_symdef(sym);
				continue;
			}

			if (sym->type == SYM_STRUCT || sym->type == SYM_UNION) {
				sym->ctype.base_type = sym;
				examine_sym_node(sym, NULL);
				continue;
			}

			do_symbol(sym);
		}
	);

	DO_LIST(global_scope->symbols, sym,
		if (input_streams[sym->pos.stream].fd != -1 && valid_namespace(sym->namespace)) {
			do_symbol(sym);
		}
	);

end:
	/* Drop the tokens for this file after parsing */
	clear_token_alloc();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x178d0
movq %rax, -0x10(%rbp)
leaq 0x80834(%rip), %rax     # 0x95554
cmpl $0x0, (%rax)
jne 0x14d33
movq -0x10(%rbp), %rdi
callq 0x14fe0
jmp 0x14fc6
jmp 0x14d35
jmp 0x14d37
leaq 0x7bfea(%rip), %rax     # 0x90d28
movq (%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x14d64
jmp 0x14ec8
jmp 0x14d66
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x28(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x14eb0
movq -0x28(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq -0x28(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x14db8
cmpq $0x0, -0x18(%rbp)
jne 0x14db8
jmp 0x14ea2
leaq 0x87969(%rip), %rax     # 0x9c728
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movq 0x4(%rcx), %rcx
shrq $0x6, %rcx
andq $0x3fff, %rcx           # imm = 0x3FFF
movl %ecx, %ecx
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, (%rax)
je 0x14ea0
movq -0x18(%rbp), %rax
movl (%rax), %edi
shrl $0x8, %edi
andl $0x1ff, %edi            # imm = 0x1FF
callq 0x15090
testb $0x1, %al
jne 0x14e04
jmp 0x14ea0
movq -0x18(%rbp), %rdi
callq 0x150e0
testb $0x1, %al
jne 0x14e13
jmp 0x14e30
movq -0x18(%rbp), %rax
movb $0x74, 0xd0(%rax)
movq 0x801e3(%rip), %rax     # 0x95008
movq (%rax), %rax
movq -0x18(%rbp), %rdi
callq *%rax
jmp 0x14ea2
movq -0x18(%rbp), %rdi
callq 0x15100
testb $0x1, %al
jne 0x14e3f
jmp 0x14e5c
movq -0x18(%rbp), %rax
movb $0x64, 0xd0(%rax)
movq 0x801b7(%rip), %rax     # 0x95008
movq (%rax), %rax
movq -0x18(%rbp), %rdi
callq *%rax
jmp 0x14ea2
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0xff, %eax
cmpl $0x7, %eax
je 0x14e7c
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0xff, %eax
cmpl $0x8, %eax
jne 0x14e97
movq -0x18(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15150
jmp 0x14ea2
movq -0x18(%rbp), %rdi
callq 0x153d0
jmp 0x14ea2
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x14d6d
jmp 0x14eb2
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq -0x20(%rbp), %rax
jne 0x14d66
jmp 0x14eca
jmp 0x14ecc
jmp 0x14ece
leaq 0x7be5b(%rip), %rax     # 0x90d30
movq (%rax), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x14efb
jmp 0x14fc2
jmp 0x14efd
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x50(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x14faa
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movq -0x50(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x14f4c
cmpq $0x0, -0x40(%rbp)
jne 0x14f4c
jmp 0x14f9c
leaq 0x877d5(%rip), %rax     # 0x9c728
movq (%rax), %rax
movq -0x40(%rbp), %rcx
movq 0x4(%rcx), %rcx
shrq $0x6, %rcx
andq $0x3fff, %rcx           # imm = 0x3FFF
movl %ecx, %ecx
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, (%rax)
je 0x14f9a
movq -0x40(%rbp), %rax
movl (%rax), %edi
shrl $0x8, %edi
andl $0x1ff, %edi            # imm = 0x1FF
callq 0x15090
testb $0x1, %al
jne 0x14f91
jmp 0x14f9a
movq -0x40(%rbp), %rdi
callq 0x153d0
jmp 0x14f9c
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x14f04
jmp 0x14fac
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x50(%rbp)
cmpq -0x48(%rbp), %rax
jne 0x14efd
jmp 0x14fc4
jmp 0x14fc6
callq 0x33780
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)