// File: /workspace/github_cpp_makefile_star2_O2/acliusBackHome[P]kamaya/dist/ParseType.cpp
// Function: ParseType::ParseType(ParseConstant const&)
ParseType::ParseType(const ParseConstant &constant) {
    pointer_level = array_size = 0, lower_type = 0;
    fields = nullptr;
    switch (constant.get_type()) {
        case C_STRING: {
            ParseType arr_c = get_array(get_pointer(ParseType(T_CHAR)),
                                        constant.get_string().length());
            assign(*this, arr_c);
            break;
        }
        case C_SIGNED:
            base_type = T_LONG;
            type_id = (size_t) -1;
            specifier = S_LONG;
            type_size = sizeof(long long);
            break;
        case C_UNSIGNED:
            base_type = T_LONG;
            type_id = (size_t) -1;
            specifier = S_LONG | S_UNSIGNED;
            type_size = sizeof(unsigned long long);
            break;
        case C_FLOAT:
            base_type = T_DOUBLE;
            type_id = (size_t) -1;
            specifier = S_LONG;
            type_size = sizeof(long double);
            break;
        case C_BOOL:
            type_id = base_type = T_BOOL;
            type_size = sizeof(bool);
            break;
        case C_UNDEFINED:
            type_id = base_type = T_UNKNOWN;
            type_size = 0;
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xd0, %rsp
movq %rsi, %r14
movq %rdi, %rbx
andl $0x0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rdi)
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x28(%rdi)
movq %rsi, %rdi
callq 0x27fba
cmpl $0x5, %eax
ja 0x21457
movl %eax, %eax
leaq 0x19a7e(%rip), %rcx     # 0x3adc4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xb0(%rbp), %r15
pushq $0x2
popq %rsi
movq %r15, %rdi
xorl %edx, %edx
callq 0x211b2
leaq -0x78(%rbp), %rdi
pushq $0x1
popq %rdx
movq %r15, %rsi
callq 0x214f6
leaq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0x27cde
movq -0x38(%rbp), %r12
leaq -0x78(%rbp), %rdi
callq 0x21942
leaq -0x78(%rbp), %r14
movq 0x20(%r14), %rcx
imulq %r12, %rcx
leaq -0xe8(%rbp), %r15
andq $0x0, (%r15)
movq %rax, 0x8(%r15)
andq $0x0, 0x10(%r15)
movq %rcx, 0x20(%r15)
andq $0x0, 0x28(%r15)
movq %r12, 0x30(%r15)
orq $-0x1, 0x18(%r15)
leaq -0x40(%rbp), %rdi
callq 0x4598
movq %r14, %rdi
callq 0x21c36
leaq -0xb0(%rbp), %rdi
callq 0x21c36
movq %rbx, %rdi
movq %r15, %rsi
callq 0x21110
leaq -0xe8(%rbp), %rdi
callq 0x21c36
jmp 0x21457
movl $0x1, (%rbx)
pushq $0x1
popq %rax
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
jmp 0x21457
movabsq $0x300000005, %rax      # imm = 0x300000005
jmp 0x21438
movabsq $0x200000007, %rax      # imm = 0x200000007
movq %rax, (%rbx)
orq $-0x1, 0x18(%rbx)
movq $0x10, 0x20(%rbx)
jmp 0x21457
movabsq $0x200000005, %rax      # imm = 0x200000005
movq %rax, (%rbx)
orq $-0x1, 0x18(%rbx)
movq $0x8, 0x20(%rbx)
jmp 0x21457
andl $0x0, (%rbx)
addq $0x18, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
addq $0xd0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
jmp 0x21499
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x4598
jmp 0x21484
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x21c36
jmp 0x21492
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x21c36
movq %rbx, %rdi
callq 0x4500