// File: /workspace/github_cpp_makefile_star2_O2/besm6[P]pascal-re/pascompl.cc
// Function: Types::p[abi:cxx11]() const
std::string Types::p() const
{
    std::ostringstream ostr;
    switch (k) {
    case kindReal:
        return "REAL";
    case kindRange:
        ostr << "base: "
            << cast<RangeT>().base->p()
            << " range: "
            << cast<RangeT>().left
            << ".."
            << cast<RangeT>().right;
        return ostr.str();
    case kindArray:
        if (cast<ArrayT>().pck) ostr << "packed ";
        ostr << "array ["
             << cast<ArrayT>().range->p()
             << "] of " << cast<ArrayT>().base->p();
        return ostr.str();
    case kindSet:
        ostr << "set of " << cast<SetT>().sbase->p();
        return ostr.str();
    case kindPtr:
        if (this == cast<PtrT>().pbase)
            ostr << "typeless ptr";
        else
            ostr << "ptr to " << cast<PtrT>().pbase->p();
        return ostr.str();
    case kindFile:
        ostr << "file of " << cast<FileT>().fbase->p();
        return ostr.str();
    case kindScalar:
        return "scalar ";
    default:
        return "complex type";
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x48(%rsp), %rdi
callq 0x3310
movl 0x10(%r14), %eax
cmpq $0x7, %rax
ja 0x3ba9
leaq 0x15481(%rip), %rcx     # 0x19008
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x15ffd(%rip), %rsi     # 0x19b94
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x1293e
jmp 0x3dd2
leaq 0x16040(%rip), %rsi     # 0x19bf0
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x1293e
jmp 0x3dd2
movq %r14, %rdi
callq 0x129a4
cmpb $0x1, 0x28(%rax)
jne 0x3be1
leaq 0x15fd5(%rip), %rsi     # 0x19bac
leaq 0x48(%rsp), %rdi
callq 0x3220
leaq 0x15fcc(%rip), %rsi     # 0x19bb4
leaq 0x48(%rsp), %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x129a4
movq 0x20(%rax), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3b5a
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x3200
leaq 0x15f9d(%rip), %rsi     # 0x19bbc
movq %rax, %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x129a4
movq 0x18(%rax), %rsi
leaq 0x28(%rsp), %rdi
callq 0x3b5a
leaq 0x28(%rsp), %rsi
movq %r15, %rdi
callq 0x3200
leaq 0x28(%rsp), %rdi
callq 0x3498
jmp 0x3dbb
leaq 0x15f85(%rip), %rsi     # 0x19be8
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x1293e
jmp 0x3dd2
leaq 0x15f63(%rip), %rsi     # 0x19bdf
leaq 0x48(%rsp), %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x12a22
movq 0x18(%rax), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3b5a
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x3200
jmp 0x3dbb
leaq 0x15ee1(%rip), %rsi     # 0x19b99
leaq 0x48(%rsp), %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x1297a
movq 0x18(%rax), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3b5a
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x3200
leaq 0x15eb1(%rip), %rsi     # 0x19ba0
movq %rax, %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x1297a
movq 0x28(%rax), %rsi
movq %r15, %rdi
callq 0x3210
leaq 0x15e94(%rip), %rsi     # 0x19ba9
movq %rax, %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x1297a
movq 0x30(%rax), %rsi
movq %r15, %rdi
callq 0x3210
jmp 0x3dbb
movq %r14, %rdi
callq 0x129f8
cmpq %r14, 0x18(%rax)
je 0x3dec
leaq 0x15e85(%rip), %rsi     # 0x19bd7
leaq 0x48(%rsp), %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x129f8
movq 0x18(%rax), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3b5a
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x3200
jmp 0x3dbb
leaq 0x15e37(%rip), %rsi     # 0x19bc2
leaq 0x48(%rsp), %rdi
callq 0x3220
movq %rax, %r15
movq %r14, %rdi
callq 0x129ce
movq 0x18(%rax), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3b5a
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x3200
leaq 0x8(%rsp), %rdi
callq 0x3498
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x3380
leaq 0x48(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbx
popq %r14
popq %r15
retq
leaq 0x15dd7(%rip), %rsi     # 0x19bca
leaq 0x48(%rsp), %rdi
callq 0x3220
jmp 0x3dc5
jmp 0x3e28
jmp 0x3e37
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3498
jmp 0x3e2b
jmp 0x3e28
jmp 0x3e28
jmp 0x3e28
jmp 0x3e37
jmp 0x3e37
jmp 0x3e37
jmp 0x3e37
jmp 0x3e37
jmp 0x3e37
jmp 0x3e37
jmp 0x3e28
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3498
jmp 0x3e3a
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33f0