// File: /workspace/github_c_makefile_star2_O1/lucvoo[P]sparse-dev/symbol.c
// Function: examine_node_type
static struct symbol * examine_node_type(struct symbol *sym)
{
	struct symbol *base_type = examine_base_type(sym);
	int bit_size;
	unsigned long alignment;

	/* SYM_NODE - figure out what the type of the node was.. */
	bit_size = 0;
	alignment = 0;
	if (!base_type)
		return sym;

	bit_size = base_type->bit_size;
	alignment = base_type->ctype.alignment;

	/* Pick up signedness information into the node */
	sym->ctype.modifiers |= (MOD_SIGNEDNESS & base_type->ctype.modifiers);

	if (!sym->ctype.alignment)
		sym->ctype.alignment = alignment;

	/* Unsized array? The size might come from the initializer.. */
	if (bit_size < 0 && base_type->type == SYM_ARRAY) {
		struct expression *initializer = get_symbol_initializer(sym);
		if (initializer) {
			struct symbol *node_type = base_type->ctype.base_type;
			int count = count_array_initializer(node_type, initializer);

			if (node_type && node_type->bit_size >= 0)
				bit_size = implicit_array_size(sym, count);
		}
	}
	
	sym->bit_size = bit_size;
	sym->rank = base_type->rank;
	return sym;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
callq 0x2be9c
testq %rax, %rax
je 0x2bc22
movq %rax, %r14
movl 0x50(%rax), %ebp
movq 0x70(%rax), %rax
movq 0x68(%r14), %rcx
andl $0xe000, %ecx           # imm = 0xE000
orq %rcx, 0x68(%rbx)
cmpq $0x0, 0x70(%rbx)
jne 0x2b94a
movq %rax, 0x70(%rbx)
testl %ebp, %ebp
jns 0x2bc09
cmpb $0x6, (%r14)
jne 0x2bc09
movq %rbx, %rax
movq 0xb0(%rax), %r15
testq %r15, %r15
jne 0x2b977
movq 0x38(%rax), %rax
testq %rax, %rax
jne 0x2b95f
xorl %r15d, %r15d
testq %r15, %r15
je 0x2bc09
movq 0x60(%r14), %rdx
leaq 0x404ed(%rip), %rax     # 0x6be78
cmpq %rax, 0x60(%rdx)
movq %rdx, 0x8(%rsp)
jne 0x2b9a5
movl $0x3800000, %eax        # imm = 0x3800000
andl 0x54(%rdx), %eax
cmpl $0x3000000, %eax        # imm = 0x3000000
je 0x2ba06
leaq 0x39cb4(%rip), %rax     # 0x65660
movb $0x1, %r13b
cmpq %rdx, (%rax)
jne 0x2ba09
movq %r15, %r12
movzbl (%r12), %eax
cmpl $0x9, %eax
je 0x2b9ed
cmpl $0x18, %eax
jne 0x2ba01
movq 0x20(%r12), %rdi
callq 0x225b4
cmpl $0x1, %eax
jne 0x2bc34
movq 0x20(%r12), %rdi
callq 0x22634
movq %rax, %r12
movq 0x8(%rsp), %rdx
jmp 0x2b9fa
cmpl $0x28, 0x4(%r12)
jne 0x2ba09
movq 0x20(%r12), %r12
testq %r12, %r12
jne 0x2b9b7
jmp 0x2ba09
cmpl $0x2, %eax
jne 0x2ba09
xorl %r13d, %r13d
movzbl (%r15), %eax
xorl %r12d, %r12d
cmpl $0x2, %eax
je 0x2bb23
cmpl $0x9, %eax
je 0x2bafd
cmpl $0x18, %eax
jne 0x2bb4b
movq 0x20(%r15), %rcx
testq %rcx, %rcx
je 0x2bb37
xorl %edx, %edx
movl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
xorl %r12d, %r12d
xorl %eax, %eax
movq %rcx, %rdi
movzwl (%rdi), %r9d
movsbl %r9b, %r8d
testw %r8w, %r8w
jle 0x2bae3
movzwl %r8w, %r8d
movzwl %r9w, %r9d
xorl %r10d, %r10d
movq 0x18(%rdi,%r10,8), %r11
cmpl $0x100, %r9d            # imm = 0x100
jb 0x2ba77
testq %r11, %r11
je 0x2badb
incl %edx
movzbl (%r11), %r15d
cmpl $0x2, %r15d
je 0x2baca
cmpl $0x9, %r15d
je 0x2baa0
cmpl $0x1a, %r15d
jne 0x2bad9
movl 0x24(%r11), %r11d
leal 0x1(%r11), %r15d
cmpl %eax, %r11d
cmovael %r15d, %eax
jmp 0x2badb
testb %r13b, %r13b
jne 0x2bad9
movl (%r11), %r15d
movzbl %r15b, %r15d
cmpb $0x9, %r15b
jne 0x2bac4
cmpl $0x28, 0x4(%r11)
jne 0x2bac4
movq 0x20(%r11), %r11
testq %r11, %r11
jne 0x2baa5
jmp 0x2bad9
cmpl $0x2, %r15d
jne 0x2bad9
testb %r13b, %r13b
jne 0x2bad9
movq 0x28(%r11), %r11
movl (%r11), %r12d
andl %esi, %r12d
incl %eax
incq %r10
cmpq %r8, %r10
jne 0x2ba64
movq 0x10(%rdi), %rdi
cmpq %rcx, %rdi
jne 0x2ba47
cmpl $0x1, %edx
sete %cl
movq 0x8(%rsp), %rdx
jmp 0x2bb3e
testb %r13b, %r13b
jne 0x2bb4b
movl (%r15), %eax
movzbl %al, %eax
cmpb $0x9, %al
jne 0x2bb1e
cmpl $0x28, 0x4(%r15)
jne 0x2bb1e
movq 0x20(%r15), %r15
testq %r15, %r15
jne 0x2bb02
jmp 0x2bb4b
cmpl $0x2, %eax
jne 0x2bb4b
testb %r13b, %r13b
jne 0x2bb4b
movq 0x28(%r15), %rax
movl $0x7fffffff, %r12d      # imm = 0x7FFFFFFF
andl (%rax), %r12d
jmp 0x2bb4b
xorl %ecx, %ecx
xorl %r12d, %r12d
xorl %eax, %eax
testl %r12d, %r12d
cmovel %eax, %r12d
testb %cl, %cl
cmovel %eax, %r12d
testq %rdx, %rdx
je 0x2bc09
cmpl $0x0, 0x50(%rdx)
js 0x2bc09
movq 0x4(%rbx), %r13
movq 0x60(%rbx), %rbp
movq %rbp, 0x8(%rsp)
xorl %edi, %edi
callq 0x2ff60
movq %rax, %r15
movb $0x6, (%rax)
movq %r13, 0x4(%rax)
andb $-0x40, 0xc(%rax)
movq 0x60(%rbp), %rax
movq %rax, 0x10(%rsp)
movq 0x4(%rbx), %rbp
xorl %edi, %edi
callq 0x30029
movq %rax, %r13
movl (%rax), %eax
orl $0x1, %eax
movq %rbp, 0x8(%r13)
movslq %r12d, %rbp
movq %rbp, 0x20(%r13)
leaq 0x40b8a(%rip), %rcx     # 0x6c738
movq %rcx, 0x10(%r13)
andl $0xffff0001, %eax       # imm = 0xFFFF0001
orl $0x3100, %eax           # imm = 0x3100
movl %eax, (%r13)
movq 0x10(%rsp), %rax
movslq 0x50(%rax), %rcx
leaq 0x39b30(%rip), %rax     # 0x65700
movslq (%rax), %rsi
movq %rcx, %rax
xorl %edx, %edx
divq %rsi
subl %edx, %esi
testl %edx, %edx
cmovel %edx, %esi
addl %ecx, %esi
imull %esi, %ebp
movl $0xe0, %edx
movq %r15, %rdi
movq 0x8(%rsp), %rsi
callq 0xe1e0
movl %ebp, 0x50(%r15)
movq %r13, 0x58(%r15)
movq %r13, 0x58(%rbx)
movq %r15, 0x60(%rbx)
movl %ebp, 0x50(%rbx)
movl $0x3800000, %eax        # imm = 0x3800000
andl 0x54(%r14), %eax
movl $0xfc7fffff, %ecx       # imm = 0xFC7FFFFF
andl 0x54(%rbx), %ecx
orl %eax, %ecx
movl %ecx, 0x54(%rbx)
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rsp), %rdx
jmp 0x2ba09