// File: /workspace/github_cpp_makefile_star2_O3/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 %rbx
subq $0xc8, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movl $0x0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rdi)
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x28(%rdi)
movq %rsi, %rdi
callq 0x2f50a
cmpl $0x5, %eax
ja 0x27260
movl %eax, %eax
leaq 0x1ed0f(%rip), %rcx     # 0x45e2c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xe0(%rbp), %r15
movq %r15, %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x26f44
leaq -0xa8(%rbp), %rdi
movl $0x1, %edx
movq %r15, %rsi
callq 0x27308
leaq -0x70(%rbp), %rdi
movq %r14, %rsi
callq 0x2f1a8
movq -0x68(%rbp), %r14
leaq -0xa8(%rbp), %rdi
callq 0x27870
movq -0x88(%rbp), %rcx
imulq %r14, %rcx
xorl %edx, %edx
movq %rdx, -0x50(%rbp)
movq %rax, -0x48(%rbp)
movq %rdx, -0x40(%rbp)
movq %rcx, -0x30(%rbp)
movq %rdx, -0x28(%rbp)
movq %r14, -0x20(%rbp)
movq $-0x1, -0x38(%rbp)
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x271ab
callq 0x42b0
movq -0x98(%rbp), %r14
testq %r14, %r14
je 0x271bf
movq %r14, %rdi
callq 0x13f28
movq %r14, %rdi
callq 0x42b0
movq -0xd0(%rbp), %r14
testq %r14, %r14
je 0x271db
movq %r14, %rdi
callq 0x13f28
movq %r14, %rdi
callq 0x42b0
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x26ea0
jmp 0x27260
movl $0x1, (%rbx)
movl $0x1, %eax
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
jmp 0x27260
movabsq $0x300000005, %rax      # imm = 0x300000005
jmp 0x2723b
movabsq $0x200000007, %rax      # imm = 0x200000007
movq %rax, (%rbx)
movq $-0x1, 0x18(%rbx)
movq $0x10, 0x20(%rbx)
jmp 0x27260
movabsq $0x200000005, %rax      # imm = 0x200000005
movq %rax, (%rbx)
movq $-0x1, 0x18(%rbx)
movq $0x8, 0x20(%rbx)
jmp 0x27260
movl $0x0, (%rbx)
addq $0x18, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
addq $0xc8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
jmp 0x272a9
movq %rax, %rbx
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27291
callq 0x42b0
jmp 0x27291
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
callq 0x27ca8
jmp 0x272a2
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x27ca8
movq %rbx, %rdi
callq 0x4560