// File: /workspace/github_c_makefile_star2_O0/neosploit[P]compiler/ast_print.c
// Function: ast_type_print
void ast_type_print(AstPrintState* state, Type* type) {

    switch (type->tag) {
        case TYPE_UNDEFINED:
            break;
        case TYPE_ARRAY:
            fprintf(state->fp, " (TYPE_ARRAY)");
            ast_expression_print(state, type->array.dims);
            ast_type_print(state, type->array.type);

            break;
        case TYPE_SET:
            fprintf(state->fp, " (TYPE_SET)");
            ast_type_print(state, type->set.type);

            break;
        case TYPE_LIST:
            fprintf(state->fp, " (TYPE_LIST)");
            ast_type_print(state, type->list.type);

            break;
        case TYPE_RECORD:
            fprintf(state->fp, " (TYPE_RECORD)");

            state->indent++;
            ast_definition_print(state, type->record.fields);
            state->indent--;

            break;
        case TYPE_ENUMERATION:
            fprintf(state->fp, " (TYPE_ENUMERATION)");
            ast_id_print(state, type->enumeration.identifiers);

            break;
        case TYPE_SUBRANGE:
            fprintf(state->fp, " (TYPE_SUBRANGE)");
            ast_constant_print(state, type->subrange.lower_limit);
            ast_constant_print(state, type->subrange.upper_limit);

            break;
        case TYPE_INTEGER:
            fprintf(state->fp, " (TYPE_INTEGER)");

            break;
        case TYPE_REAL:
            fprintf(state->fp, " (TYPE_REAL)");

            break;
        case TYPE_BOOLEAN:
            fprintf(state->fp, " (TYPE_BOOLEAN)");

            break;
        case TYPE_CHARACTER:
            fprintf(state->fp, " (TYPE_CHARACTER)");

            break;
        case TYPE_STRING:
            fprintf(state->fp, " (TYPE_STRING)");

            break;
        case TYPE_ID:
            fprintf(state->fp, "[TYPE_ID:");
            ast_id_print(state, type->id.id);
            fprintf(state->fp, "]");
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movq %rax, -0x18(%rbp)
subq $0xc, %rax
ja 0xf8ad
movq -0x18(%rbp), %rax
leaq 0x12a84(%rip), %rcx     # 0x22124
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12e0c(%rip), %rsi     # 0x224c9
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xf220
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xf670
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12ddd(%rip), %rsi     # 0x224d7
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xf670
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12dbd(%rip), %rsi     # 0x224e3
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xf670
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d9e(%rip), %rsi     # 0x224f0
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rax
movl 0x40(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x40(%rax)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xe910
movq -0x8(%rbp), %rax
movl 0x40(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x40(%rax)
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d67(%rip), %rsi     # 0x224ff
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xf130
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d4f(%rip), %rsi     # 0x22513
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xfa50
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xfa50
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d23(%rip), %rsi     # 0x22524
movb $0x0, %al
callq 0x7170
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d18(%rip), %rsi     # 0x22534
movb $0x0, %al
callq 0x7170
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d0a(%rip), %rsi     # 0x22541
movb $0x0, %al
callq 0x7170
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d02(%rip), %rsi     # 0x22551
movb $0x0, %al
callq 0x7170
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12cfc(%rip), %rsi     # 0x22563
movb $0x0, %al
callq 0x7170
jmp 0xf8ad
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12cf3(%rip), %rsi     # 0x22572
movb $0x0, %al
callq 0x7170
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xf130
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
leaq 0x12d6b(%rip), %rsi     # 0x22611
movb $0x0, %al
callq 0x7170
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)