// File: /workspace/github_c_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xc46e(%rip), %r15      # 0x18e64
leaq 0xc816(%rip), %r12      # 0x19213
leaq 0xc81b(%rip), %r13      # 0x1921f
movl 0x4(%r14), %eax
decl %eax
cmpl $0xb, %eax
ja 0xcbce
movslq (%r15,%rax,4), %rax
addq %r15, %rax
jmpq *%rax
movq 0x48(%rbx), %rcx
movl $0xd, %esi
movl $0x1, %edx
leaq 0xc7d4(%rip), %rdi      # 0x19205
callq 0x7270
movq 0x8(%r14), %rsi
movq %rbx, %rdi
callq 0xc721
movl $0x10, %eax
jmp 0xca77
movq 0x48(%rbx), %rcx
movl $0xc, %esi
movl $0x1, %edx
movq %r13, %rdi
jmp 0xca6d
movq 0x48(%rbx), %rcx
movl $0xb, %esi
movl $0x1, %edx
movq %r12, %rdi
callq 0x7270
movl $0x8, %eax
movq (%r14,%rax), %r14
jmp 0xca04
movq 0x48(%rbx), %rcx
leaq 0xc7f5(%rip), %rdi      # 0x1927d
jmp 0xcbe8
movq 0x48(%rbx), %rcx
leaq 0xc7a3(%rip), %rdi      # 0x1923b
movl $0x13, %esi
movl $0x1, %edx
callq 0x7270
movq 0x8(%r14), %r15
leaq 0xc48c(%rip), %r14      # 0x18f3e
movq 0x48(%rbx), %rdi
movq (%r15), %rdx
movq %r14, %rsi
xorl %eax, %eax
callq 0x7180
movq 0x8(%r15), %r15
testq %r15, %r15
jne 0xcab2
jmp 0xcbce
movq 0x48(%rbx), %rcx
leaq 0xc7d2(%rip), %rdi      # 0x192ae
movl $0x9, %esi
movl $0x1, %edx
callq 0x7270
movq 0x8(%r14), %r15
leaq 0xc448(%rip), %r14      # 0x18f3e
movq 0x48(%rbx), %rdi
movq (%r15), %rdx
movq %r14, %rsi
xorl %eax, %eax
callq 0x7180
movq 0x8(%r15), %r15
testq %r15, %r15
jne 0xcaf6
movq 0x48(%rbx), %rsi
movl $0x5d, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7140
movq 0x48(%rbx), %rcx
leaq 0xc718(%rip), %rdi      # 0x1924f
movl $0x10, %esi
movl $0x1, %edx
callq 0x7270
movq 0x8(%r14), %rsi
movq %rbx, %rdi
callq 0xcd59
movq 0x10(%r14), %rsi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xcd59
movq 0x48(%rbx), %rcx
leaq 0xc728(%rip), %rdi      # 0x1929f
movl $0xe, %esi
jmp 0xcbed
movq 0x48(%rbx), %rcx
leaq 0xc704(%rip), %rdi      # 0x1928d
movl $0x11, %esi
jmp 0xcbed
movq 0x48(%rbx), %rcx
leaq 0xc6d5(%rip), %rdi      # 0x19270
movl $0xc, %esi
jmp 0xcbed
movq 0x48(%rbx), %rcx
leaq 0xc67f(%rip), %rdi      # 0x1922c
movl $0xe, %esi
movl $0x1, %edx
callq 0x7270
incl 0x40(%rbx)
movq 0x8(%r14), %rsi
movq %rbx, %rdi
callq 0xbef3
decl 0x40(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x48(%rbx), %rcx
leaq 0xc678(%rip), %rdi      # 0x19260
movl $0xf, %esi
movl $0x1, %edx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7270