// File: /workspace/github_c_makefile_star2_O3/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 0x2b965
testq %rax, %rax
je 0x2b6d5
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 0x2b414
movq %rax, 0x70(%rbx)
testl %ebp, %ebp
jns 0x2b6bc
cmpb $0x6, (%r14)
jne 0x2b6bc
movq %rbx, %rax
movq 0xb0(%rax), %r15
testq %r15, %r15
jne 0x2b443
movq 0x38(%rax), %rax
testq %rax, %rax
jne 0x2b429
jmp 0x2b6bc
movq 0x60(%r14), %rdx
leaq 0x3fa2a(%rip), %rax     # 0x6ae78
cmpq %rax, 0x60(%rdx)
movq %rdx, 0x8(%rsp)
jne 0x2b468
movl $0x3800000, %eax        # imm = 0x3800000
andl 0x54(%rdx), %eax
cmpl $0x3000000, %eax        # imm = 0x3000000
je 0x2b4c9
leaq 0x391f1(%rip), %rax     # 0x64660
movb $0x1, %r13b
cmpq %rdx, (%rax)
jne 0x2b4cc
movq %r15, %r12
movzbl (%r12), %eax
cmpl $0x9, %eax
je 0x2b4b0
cmpl $0x18, %eax
jne 0x2b4c4
movq 0x20(%r12), %rdi
callq 0x22530
cmpl $0x1, %eax
jne 0x2b6e7
movq 0x20(%r12), %rdi
callq 0x225b0
movq %rax, %r12
movq 0x8(%rsp), %rdx
jmp 0x2b4bd
cmpl $0x28, 0x4(%r12)
jne 0x2b4cc
movq 0x20(%r12), %r12
testq %r12, %r12
jne 0x2b47a
jmp 0x2b4cc
cmpl $0x2, %eax
jne 0x2b4cc
xorl %r13d, %r13d
movzbl (%r15), %eax
xorl %r12d, %r12d
cmpl $0x2, %eax
je 0x2b5f8
cmpl $0x9, %eax
je 0x2b5bd
cmpl $0x18, %eax
jne 0x2b60a
movq 0x20(%r15), %rcx
testq %rcx, %rcx
je 0x2b5dd
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 0x2b5a3
movzwl %r8w, %r8d
movzwl %r9w, %r9d
xorl %r10d, %r10d
movq 0x18(%rdi,%r10,8), %r11
cmpl $0x100, %r9d            # imm = 0x100
jb 0x2b53a
testq %r11, %r11
je 0x2b59b
incl %edx
movzbl (%r11), %r15d
cmpl $0x2, %r15d
je 0x2b58a
cmpl $0x9, %r15d
je 0x2b563
cmpl $0x1a, %r15d
jne 0x2b599
movl 0x24(%r11), %r11d
leal 0x1(%r11), %r15d
cmpl %eax, %r11d
cmovael %r15d, %eax
jmp 0x2b59b
testb %r13b, %r13b
jne 0x2b599
movzbl (%r11), %r15d
cmpl $0x9, %r15d
jne 0x2b584
cmpl $0x28, 0x4(%r11)
jne 0x2b599
movq 0x20(%r11), %r11
testq %r11, %r11
jne 0x2b568
jmp 0x2b599
cmpl $0x2, %r15d
jne 0x2b599
testb %r13b, %r13b
jne 0x2b599
movq 0x28(%r11), %r11
movl (%r11), %r12d
andl %esi, %r12d
incl %eax
incq %r10
cmpq %r8, %r10
jne 0x2b527
movq 0x10(%rdi), %rdi
cmpq %rcx, %rdi
jne 0x2b50a
cmpl $0x1, %edx
sete %cl
movq 0x8(%rsp), %rdx
jmp 0x2b5e4
testb %r13b, %r13b
jne 0x2b60a
movzbl (%r15), %eax
cmpl $0x9, %eax
jne 0x2b5f3
cmpl $0x28, 0x4(%r15)
jne 0x2b60a
movq 0x20(%r15), %r15
testq %r15, %r15
jne 0x2b5c2
jmp 0x2b60a
xorl %ecx, %ecx
xorl %r12d, %r12d
xorl %eax, %eax
testl %r12d, %r12d
cmovel %eax, %r12d
testb %cl, %cl
cmovel %eax, %r12d
jmp 0x2b60a
cmpl $0x2, %eax
jne 0x2b60a
testb %r13b, %r13b
jne 0x2b60a
movq 0x28(%r15), %rax
movl $0x7fffffff, %r12d      # imm = 0x7FFFFFFF
andl (%rax), %r12d
testq %rdx, %rdx
je 0x2b6bc
cmpl $0x0, 0x50(%rdx)
js 0x2b6bc
movq 0x4(%rbx), %r13
movq 0x60(%rbx), %rbp
movq %rbp, 0x8(%rsp)
xorl %edi, %edi
callq 0x2f92c
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 0x2f9f5
movq %rax, %r13
movq %rbp, 0x8(%rax)
movslq %r12d, %rbp
movq %rbp, 0x20(%rax)
leaq 0x400d0(%rip), %rax     # 0x6b738
movq %rax, 0x10(%r13)
movw $0x3101, (%r13)         # imm = 0x3101
movq 0x10(%rsp), %rax
movslq 0x50(%rax), %rcx
leaq 0x3907d(%rip), %rax     # 0x64700
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 0x2b4cc