// File: /workspace/github_c_makefile_star2_O3/lucvoo[P]sparse-dev/symbol.c
// Function: init_ctype
void init_ctype(void)
{
	const struct ctype_declare *ctype;

	for (ctype = ctype_declaration ; ctype->ptr; ctype++) {
		struct symbol *sym = ctype->ptr;
		unsigned long bit_size = ctype->bit_size ? *ctype->bit_size : -1;
		unsigned long maxalign = ctype->maxalign ? *ctype->maxalign : 0;
		unsigned long alignment = bits_to_bytes(bit_size);

		if (alignment > maxalign)
			alignment = maxalign;
		sym->type = ctype->type;
		sym->rank = ctype->rank;
		sym->bit_size = bit_size;
		sym->ctype.alignment = alignment;
		sym->ctype.base_type = ctype->base_type;
		sym->ctype.modifiers = ctype->modifiers;

		if (sym->type == SYM_NODE) {
			struct symbol *base = sym->ctype.base_type;
			sym->rank = base->rank;
			if (!ctype->bit_size)
				sym->bit_size = base->bit_size;
			if (!ctype->maxalign)
				sym->ctype.alignment = base->ctype.alignment;
		}
	}

	// and now some adjustments
	if (funsigned_char) {
		char_ctype.ctype.modifiers |= MOD_UNSIGNED;
		char_ctype.ctype.modifiers &= ~MOD_SIGNED;
	}

	if (!ptrdiff_ctype)
		ptrdiff_ctype = ssize_t_ctype;
	if (!intptr_ctype)
		intptr_ctype = ssize_t_ctype;
	if (!uintptr_ctype)
		uintptr_ctype = size_t_ctype;

	size_t_ptr_ctype.ctype.base_type = size_t_ctype;
	intmax_ptr_ctype.ctype.base_type = intmax_ctype;
	ptrdiff_ptr_ctype.ctype.base_type = ptrdiff_ctype;

	const_wchar_ctype.ctype.base_type = wchar_ctype;
	const_wchar_ctype.rank = wchar_ctype->rank;
	const_wchar_ctype.ctype.alignment = wchar_ctype->ctype.alignment;
	const_wchar_ctype.bit_size = wchar_ctype->bit_size;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
leaq 0x3ed25(%rip), %rsi     # 0x6b038
leaq 0x2d53e(%rip), %rcx     # 0x59858
leaq 0x383df(%rip), %rdi     # 0x64700
movl $0xfc7fffff, %r8d       # imm = 0xFC7FFFFF
movl $0x3800000, %r9d        # imm = 0x3800000
movq -0x18(%rcx), %r10
testq %r10, %r10
je 0x2c33b
movl (%r10), %ebx
jmp 0x2c340
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq -0x10(%rcx), %r11
testq %r11, %r11
je 0x2c34e
movslq (%r11), %r14
jmp 0x2c351
xorl %r14d, %r14d
testl %ebx, %ebx
js 0x2c366
movl (%rdi), %r15d
leal (%rbx,%r15), %eax
decl %eax
cltd
idivl %r15d
cltq
jmp 0x2c36d
movq $-0x1, %rax
cmpq %rax, %r14
cmovbq %r14, %rax
movl -0x30(%rcx), %edx
movzbl %dl, %ebp
movb %bpl, (%rsi)
movl -0x20(%rcx), %r14d
andl $0x7, %r14d
shll $0x17, %r14d
movl 0x54(%rsi), %edx
andl %r8d, %edx
orl %edx, %r14d
movl %r14d, 0x54(%rsi)
movl %ebx, 0x50(%rsi)
movq %rax, 0x70(%rsi)
movq -0x8(%rcx), %rax
movq %rax, 0x60(%rsi)
movq -0x28(%rcx), %rbx
movq %rbx, 0x68(%rsi)
cmpl $0x3, %ebp
jne 0x2c3d5
movl 0x54(%rax), %ebx
andl %r9d, %ebx
orl %edx, %ebx
movl %ebx, 0x54(%rsi)
testq %r10, %r10
jne 0x2c3c8
movl 0x50(%rax), %edx
movl %edx, 0x50(%rsi)
testq %r11, %r11
jne 0x2c3d5
movq 0x70(%rax), %rax
movq %rax, 0x70(%rsi)
movq (%rcx), %rsi
addq $0x38, %rcx
testq %rsi, %rsi
jne 0x2c32d
leaq 0x3a9f0(%rip), %rax     # 0x66ddc
cmpl $0x0, (%rax)
je 0x2c40c
movq $-0x6001, %rax          # imm = 0x9FFF
andq 0x3e681(%rip), %rax     # 0x6aa80
orq $0x4000, %rax           # imm = 0x4000
movq %rax, 0x3e674(%rip)     # 0x6aa80
leaq 0x41b6d(%rip), %rcx     # 0x6df80
movq (%rcx), %rax
testq %rax, %rax
jne 0x2c428
leaq 0x38206(%rip), %rax     # 0x64628
movq (%rax), %rax
movq %rax, (%rcx)
leaq 0x41b59(%rip), %rcx     # 0x6df88
cmpq $0x0, (%rcx)
jne 0x2c442
leaq 0x381ec(%rip), %rdx     # 0x64628
movq (%rdx), %rdx
movq %rdx, (%rcx)
leaq 0x41b47(%rip), %rcx     # 0x6df90
cmpq $0x0, (%rcx)
leaq 0x381cc(%rip), %rdx     # 0x64620
movq (%rdx), %rdx
jne 0x2c45c
movq %rdx, (%rcx)
movq %rdx, 0x3e6f5(%rip)     # 0x6ab58
leaq 0x381c6(%rip), %rcx     # 0x64630
movq (%rcx), %rcx
movq %rcx, 0x3e7c4(%rip)     # 0x6ac38
movq %rax, 0x3e89d(%rip)     # 0x6ad18
leaq 0x381de(%rip), %rax     # 0x64660
movq (%rax), %rax
movq %rax, 0x3e96c(%rip)     # 0x6adf8
movl $0x3800000, %ecx        # imm = 0x3800000
andl 0x54(%rax), %ecx
movl $0xfc7fffff, %edx       # imm = 0xFC7FFFFF
andl 0x3e94d(%rip), %edx     # 0x6adec
orl %ecx, %edx
movl %edx, 0x3e945(%rip)     # 0x6adec
movq 0x70(%rax), %rcx
movq %rcx, 0x3e956(%rip)     # 0x6ae08
movl 0x50(%rax), %eax
movl %eax, 0x3e92d(%rip)     # 0x6ade8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq