// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/show-parse.c
// Function: do_debug_symbol
static void do_debug_symbol(struct symbol *sym, int indent)
{
	static const char indent_string[] = "                                  ";
	static const char *typestr[] = {
		[SYM_UNINITIALIZED] = "none",
		[SYM_PREPROCESSOR] = "cpp.",
		[SYM_BASETYPE] = "base",
		[SYM_NODE] = "node",
		[SYM_PTR] = "ptr.",
		[SYM_FN] = "fn..",
		[SYM_ARRAY] = "arry",
		[SYM_STRUCT] = "strt",
		[SYM_UNION] = "unin",
		[SYM_ENUM] = "enum",
		[SYM_TYPEOF] = "tpof",
		[SYM_BITFIELD] = "bitf",
		[SYM_LABEL] = "labl",
		[SYM_RESTRICT] = "rstr",
		[SYM_FOULED] = "foul",
		[SYM_BAD] = "bad.",
	};
	struct context *context;
	int i;

	if (!sym)
		return;
	fprintf(stderr, "%.*s%s%3d:%lu %s%s (as: %s) %p (%s:%d:%d) %s\n",
		indent, indent_string, typestr[sym->type],
		sym->bit_size, sym->ctype.alignment,
		modifier_string(sym->ctype.modifiers), show_ident(sym->ident),
		show_as(sym->ctype.as),
		sym, stream_name(sym->pos.stream), sym->pos.line, sym->pos.pos,
		builtin_typename(sym) ?: "");
	i = 0;
	FOR_EACH_PTR(sym->ctype.contexts, context) {
		/* FIXME: should print context expression */
		fprintf(stderr, "< context%d: in=%d, out=%d\n",
			i, context->in, context->out);
		fprintf(stderr, "  end context%d >\n", i);
		i++;
	} END_FOR_EACH_PTR(context);
	if (sym->type == SYM_FN) {
		struct symbol *arg;
		i = 0;
		FOR_EACH_PTR(sym->arguments, arg) {
			fprintf(stderr, "< arg%d:\n", i);
			do_debug_symbol(arg, 0);
			fprintf(stderr, "  end arg%d >\n", i);
			i++;
		} END_FOR_EACH_PTR(arg);
	}
	do_debug_symbol(sym->ctype.base_type, indent+2);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, -0x30(%rbp)
movl %esi, -0x34(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x32337
jmp 0x3271b
movq 0x51cb2(%rip), %rax     # 0x83ff0
movq (%rax), %rax
movq %rax, -0xf0(%rbp)
movl -0x34(%rbp), %eax
movl %eax, -0xe4(%rbp)
movq -0x30(%rbp), %rax
movl (%rax), %eax
andl $0xff, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x57009(%rip), %rax     # 0x89370
movq (%rax,%rcx,8), %rax
movq %rax, -0xe0(%rbp)
movq -0x30(%rbp), %rax
movl 0x50(%rax), %eax
movl %eax, -0xd4(%rbp)
movq -0x30(%rbp), %rax
movq 0x70(%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0x30(%rbp), %rax
movq 0x68(%rax), %rdi
callq 0x32730
movq %rax, -0xc8(%rbp)
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x44150
movq %rax, -0xc0(%rbp)
movq -0x30(%rbp), %rax
movq 0x80(%rax), %rdi
callq 0x32b40
movq %rax, -0xb8(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x30(%rbp), %rax
movq 0x4(%rax), %rax
shrq $0x6, %rax
andq $0x3fff, %rax           # imm = 0x3FFF
movl %eax, %edi
callq 0x44030
movq %rax, -0xa8(%rbp)
movq -0x30(%rbp), %rax
movq 0x4(%rax), %rax
shrq $0x20, %rax
andq $0x7fffffff, %rax       # imm = 0x7FFFFFFF
movl %eax, -0xa0(%rbp)
movq -0x30(%rbp), %rax
movq 0x4(%rax), %rax
shrq $0x16, %rax
andq $0x3ff, %rax            # imm = 0x3FF
movl %eax, -0x9c(%rbp)
movq -0x30(%rbp), %rdi
callq 0x32b80
movq %rax, -0x98(%rbp)
cmpq $0x0, %rax
je 0x3244e
movq -0x98(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x3245e
leaq 0x303d4(%rip), %rax     # 0x62829
movq %rax, -0xf8(%rbp)
jmp 0x3245e
movl -0xa0(%rbp), %r11d
movq -0xa8(%rbp), %rbx
movq -0xb0(%rbp), %r14
movq -0xb8(%rbp), %r15
movq -0xc0(%rbp), %r12
movq -0xc8(%rbp), %r13
movq -0xd0(%rbp), %r10
movl -0xd4(%rbp), %r9d
movq -0xe0(%rbp), %r8
movl -0xe4(%rbp), %edx
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rax
leaq 0x35d7f(%rip), %rsi     # 0x68237
leaq 0x35b21(%rip), %rcx     # 0x67fe0
movq %r10, (%rsp)
movl -0x9c(%rbp), %r10d
movq %r13, 0x8(%rsp)
movq %r12, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movl %r11d, 0x30(%rsp)
movl %r10d, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movb $0x0, %al
callq 0x111c0
movl $0x0, -0x44(%rbp)
movq -0x30(%rbp), %rax
movq 0x78(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x32528
jmp 0x325ed
jmp 0x3252a
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movq -0x58(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x325d5
movq -0x58(%rbp), %rax
movslq -0x64(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movq -0x58(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x32579
cmpq $0x0, -0x40(%rbp)
jne 0x32579
jmp 0x325c7
movq 0x51a70(%rip), %rax     # 0x83ff0
movq (%rax), %rdi
movl -0x44(%rbp), %edx
movq -0x40(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x40(%rbp), %rax
movl 0xc(%rax), %r8d
leaq 0x35cc9(%rip), %rsi     # 0x68265
movb $0x0, %al
callq 0x111c0
movq 0x51a46(%rip), %rax     # 0x83ff0
movq (%rax), %rdi
movl -0x44(%rbp), %edx
leaq 0x35cca(%rip), %rsi     # 0x68281
movb $0x0, %al
callq 0x111c0
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x32531
jmp 0x325d7
movq -0x58(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
cmpq -0x50(%rbp), %rax
jne 0x3252a
movq -0x30(%rbp), %rax
movl (%rax), %eax
andl $0xff, %eax
cmpl $0x5, %eax
jne 0x32708
movl $0x0, -0x44(%rbp)
movq -0x30(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x32636
jmp 0x32706
jmp 0x32638
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movq -0x80(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x326ee
movq -0x80(%rbp), %rax
movslq -0x8c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x70(%rbp)
movq -0x80(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x32690
cmpq $0x0, -0x70(%rbp)
jne 0x32690
jmp 0x326da
movq 0x51959(%rip), %rax     # 0x83ff0
movq (%rax), %rdi
movl -0x44(%rbp), %edx
leaq 0x35bf0(%rip), %rsi     # 0x68294
movb $0x0, %al
callq 0x111c0
movq -0x70(%rbp), %rdi
xorl %esi, %esi
callq 0x32310
movq 0x51933(%rip), %rax     # 0x83ff0
movq (%rax), %rdi
movl -0x44(%rbp), %edx
leaq 0x35bd4(%rip), %rsi     # 0x6829e
movb $0x0, %al
callq 0x111c0
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x32642
jmp 0x326f0
movq -0x80(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
cmpq -0x78(%rbp), %rax
jne 0x32638
jmp 0x32708
movq -0x30(%rbp), %rax
movq 0x60(%rax), %rdi
movl -0x34(%rbp), %esi
addl $0x2, %esi
callq 0x32310
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)