// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x40, %rsp
leaq 0x3cd01(%rip), %rax     # 0x7dc00
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x41095
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x40f36
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0x40f40
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x34(%rbp)
jmp 0x40f40
movl -0x34(%rbp), %eax
cltq
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x40f63
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movl (%rax), %eax
movl %eax, -0x38(%rbp)
jmp 0x40f6a
xorl %eax, %eax
movl %eax, -0x38(%rbp)
jmp 0x40f6a
movl -0x38(%rbp), %eax
cltq
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movl %eax, %edi
callq 0x411d0
cltq
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x20(%rbp), %rax
jbe 0x40f96
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x10(%rbp), %rax
movl (%rax), %ecx
andl $0xff, %edx
andl $0xffffff00, %ecx       # imm = 0xFFFFFF00
orl %edx, %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movl 0x18(%rax), %edx
movq -0x10(%rbp), %rax
movl 0x54(%rax), %ecx
andl $0x7, %edx
shll $0x17, %edx
andl $0xfc7fffff, %ecx       # imm = 0xFC7FFFFF
orl %edx, %ecx
movl %ecx, 0x54(%rax)
movq -0x18(%rbp), %rax
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x50(%rax)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x70(%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x68(%rax)
movq -0x10(%rbp), %rax
movl (%rax), %eax
andl $0xff, %eax
cmpl $0x3, %eax
jne 0x41082
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movl 0x54(%rax), %edx
shll $0x6, %edx
sarl $0x1d, %edx
movq -0x10(%rbp), %rax
movl 0x54(%rax), %ecx
andl $0x7, %edx
shll $0x17, %edx
andl $0xfc7fffff, %ecx       # imm = 0xFC7FFFFF
orl %edx, %ecx
movl %ecx, 0x54(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x41065
movq -0x30(%rbp), %rax
movl 0x50(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x50(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x41080
movq -0x30(%rbp), %rax
movq 0x70(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x70(%rax)
jmp 0x41082
jmp 0x41084
movq -0x8(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x8(%rbp)
jmp 0x40f03
leaq 0x4c120(%rip), %rax     # 0x8d1bc
cmpl $0x0, (%rax)
je 0x410c9
movq 0x4fdb8(%rip), %rax     # 0x90e60
orq $0x4000, %rax           # imm = 0x4000
movq %rax, 0x4fdab(%rip)     # 0x90e60
movq 0x4fda4(%rip), %rax     # 0x90e60
andq $-0x2001, %rax          # imm = 0xDFFF
movq %rax, 0x4fd97(%rip)     # 0x90e60
leaq 0x53290(%rip), %rax     # 0x94360
cmpq $0x0, (%rax)
jne 0x410ea
leaq 0x4951b(%rip), %rax     # 0x8a5f8
movq (%rax), %rcx
leaq 0x53279(%rip), %rax     # 0x94360
movq %rcx, (%rax)
leaq 0x53277(%rip), %rax     # 0x94368
cmpq $0x0, (%rax)
jne 0x4110b
leaq 0x494fa(%rip), %rax     # 0x8a5f8
movq (%rax), %rcx
leaq 0x53260(%rip), %rax     # 0x94368
movq %rcx, (%rax)
leaq 0x5325e(%rip), %rax     # 0x94370
cmpq $0x0, (%rax)
jne 0x4112c
leaq 0x494d1(%rip), %rax     # 0x8a5f0
movq (%rax), %rcx
leaq 0x53247(%rip), %rax     # 0x94370
movq %rcx, (%rax)
leaq 0x494bd(%rip), %rax     # 0x8a5f0
movq (%rax), %rax
movq %rax, 0x4fdfb(%rip)     # 0x90f38
leaq 0x494bc(%rip), %rax     # 0x8a600
movq (%rax), %rax
movq %rax, 0x4feca(%rip)     # 0x91018
leaq 0x5320b(%rip), %rax     # 0x94360
movq (%rax), %rax
movq %rax, 0x4ff99(%rip)     # 0x910f8
leaq 0x494ca(%rip), %rax     # 0x8a630
movq (%rax), %rax
movq %rax, 0x50068(%rip)     # 0x911d8
leaq 0x494b9(%rip), %rax     # 0x8a630
movq (%rax), %rax
movl 0x54(%rax), %ecx
shll $0x6, %ecx
sarl $0x1d, %ecx
movl 0x50043(%rip), %eax     # 0x911cc
andl $0x7, %ecx
shll $0x17, %ecx
andl $0xfc7fffff, %eax       # imm = 0xFC7FFFFF
orl %ecx, %eax
movl %eax, 0x50030(%rip)     # 0x911cc
leaq 0x4948d(%rip), %rax     # 0x8a630
movq (%rax), %rax
movq 0x70(%rax), %rax
movq %rax, 0x50037(%rip)     # 0x911e8
leaq 0x49478(%rip), %rax     # 0x8a630
movq (%rax), %rax
movl 0x50(%rax), %eax
movl %eax, 0x50004(%rip)     # 0x911c8
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)