// File: 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
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movl $0x0, (%rax)
movq $0x0, 0x8(%rax)
movq $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
movq $0x0, 0x20(%rax)
movq $0x0, 0x28(%rax)
movq $0x0, 0x30(%rax)
movq $0x0, 0x30(%rax)
movq $0x0, 0x28(%rax)
movq $0x0, 0x8(%rax)
movq $0x0, 0x10(%rax)
movq -0x10(%rbp), %rdi
callq 0x6a020
movl %eax, %ecx
movq %rcx, -0xf0(%rbp)
subl $0x5, %eax
ja 0x56529
movq -0xf0(%rbp), %rax
leaq 0x39a4f(%rip), %rcx     # 0x8fd9c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x100(%rbp)
movl $0x2, %esi
xorl %edx, %edx
callq 0x55ef0
movq -0x100(%rbp), %rsi
leaq -0x80(%rbp), %rdi
movl $0x1, %edx
callq 0x565c0
jmp 0x56387
movq -0x10(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x69640
jmp 0x56399
leaq -0xe8(%rbp), %rdi
callq 0x44e0
movq %rax, %rdx
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x56540
jmp 0x563b7
leaq -0xe8(%rbp), %rdi
callq 0x4688
leaq -0x80(%rbp), %rdi
callq 0x57350
leaq -0xb8(%rbp), %rdi
callq 0x57350
movq -0xf8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x55de0
jmp 0x563ea
leaq -0x48(%rbp), %rdi
callq 0x57350
jmp 0x56529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x56447
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
jmp 0x5643e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x4688
leaq -0x80(%rbp), %rdi
callq 0x57350
leaq -0xb8(%rbp), %rdi
callq 0x57350
jmp 0x56532
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xc0(%rbp)
movl %eax, -0xc4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x57350
jmp 0x56532
movq -0xf8(%rbp), %rax
movl $0x5, (%rax)
movq $-0x1, 0x18(%rax)
movl $0x2, 0x4(%rax)
movq $0x8, 0x20(%rax)
jmp 0x56529
movq -0xf8(%rbp), %rax
movl $0x5, (%rax)
movq $-0x1, 0x18(%rax)
movl $0x3, 0x4(%rax)
movq $0x8, 0x20(%rax)
jmp 0x56529
movq -0xf8(%rbp), %rax
movl $0x7, (%rax)
movq $-0x1, 0x18(%rax)
movl $0x2, 0x4(%rax)
movq $0x10, 0x20(%rax)
jmp 0x56529
movq -0xf8(%rbp), %rax
movl $0x1, (%rax)
movq $0x1, 0x18(%rax)
movq $0x1, 0x20(%rax)
jmp 0x56529
movq -0xf8(%rbp), %rax
movl $0x0, (%rax)
movq $0x0, 0x18(%rax)
movq $0x0, 0x20(%rax)
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0xc0(%rbp), %rdi
callq 0x45e0
nop