// File: /workspace/github_cpp_makefile_star2_O1/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 0x3320
movl 0x10(%r14), %eax
cmpq $0x7, %rax
ja 0x3f24
leaq 0x1810f(%rip), %rcx     # 0x1c008
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x18c54(%rip), %rsi     # 0x1cb64
leaq 0x18c51(%rip), %rdx     # 0x1cb68
movq %rbx, %rdi
callq 0x18ebe
jmp 0x41d4
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x18c8e(%rip), %rsi     # 0x1cbc0
leaq 0x18c93(%rip), %rdx     # 0x1cbcc
movq %rbx, %rdi
callq 0x18ebe
jmp 0x41d4
cmpb $0x1, 0x28(%r14)
jne 0x3f63
leaq 0x18c28(%rip), %rsi     # 0x1cb7c
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
leaq 0x18c1a(%rip), %rsi     # 0x1cb84
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
cmpl $0x5, 0x10(%r14)
jne 0x4231
movq 0x20(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3ecc
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
movq %rax, %r15
leaq 0x18bdc(%rip), %rsi     # 0x1cb8c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32c0
cmpl $0x5, 0x10(%r14)
jne 0x4231
movq 0x18(%r14), %rsi
leaq 0x28(%rsp), %rdi
callq 0x3ecc
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r15, %rdi
callq 0x32c0
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x41ac
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x41ac
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x18b9e(%rip), %rsi     # 0x1cbb8
leaq 0x18b9e(%rip), %rdx     # 0x1cbbf
movq %rbx, %rdi
callq 0x18ebe
jmp 0x41d4
leaq 0x18b7a(%rip), %rsi     # 0x1cbaf
leaq 0x48(%rsp), %rdi
movl $0x8, %edx
callq 0x32c0
cmpl $0x7, 0x10(%r14)
jne 0x4248
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3ecc
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
jmp 0x41ac
leaq 0x18aec(%rip), %rsi     # 0x1cb69
leaq 0x48(%rsp), %rdi
movl $0x6, %edx
callq 0x32c0
cmpl $0x2, 0x10(%r14)
jne 0x421a
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3ecc
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
movq %rax, %r15
leaq 0x18aad(%rip), %rsi     # 0x1cb70
movl $0x8, %edx
movq %rax, %rdi
callq 0x32c0
cmpl $0x2, 0x10(%r14)
jne 0x421a
movq 0x28(%r14), %rsi
movq %r15, %rdi
callq 0x3220
movq %rax, %r15
leaq 0x18a88(%rip), %rsi     # 0x1cb79
movl $0x2, %edx
movq %rax, %rdi
callq 0x32c0
cmpl $0x2, 0x10(%r14)
jne 0x421a
movq 0x30(%r14), %rsi
movq %r15, %rdi
callq 0x3220
jmp 0x41ac
cmpq %r14, 0x18(%r14)
je 0x4202
leaq 0x18a7c(%rip), %rsi     # 0x1cba7
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
cmpl $0x3, 0x10(%r14)
jne 0x4276
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3ecc
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
jmp 0x41ac
leaq 0x18a22(%rip), %rsi     # 0x1cb92
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
cmpl $0x4, 0x10(%r14)
jne 0x425f
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3ecc
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x41c7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x33b0
movq 0x1fded(%rip), %rsi     # 0x23fc8
leaq 0x48(%rsp), %rdi
callq 0x3130
leaq 0xb8(%rsp), %rdi
callq 0x30a0
movq %rbx, %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbx
popq %r14
popq %r15
retq
leaq 0x18991(%rip), %rsi     # 0x1cb9a
leaq 0x48(%rsp), %rdi
movl $0xc, %edx
callq 0x32c0
jmp 0x41c7
leaq 0x19627(%rip), %rdi     # 0x1d848
leaq 0x1938c(%rip), %rsi     # 0x1d5b4
leaq 0x19626(%rip), %rcx     # 0x1d855
jmp 0x428b
leaq 0x19610(%rip), %rdi     # 0x1d848
leaq 0x19375(%rip), %rsi     # 0x1d5b4
leaq 0x19639(%rip), %rcx     # 0x1d87f
jmp 0x428b
leaq 0x195f9(%rip), %rdi     # 0x1d848
leaq 0x1935e(%rip), %rsi     # 0x1d5b4
leaq 0x1969c(%rip), %rcx     # 0x1d8f9
jmp 0x428b
leaq 0x195e2(%rip), %rdi     # 0x1d848
leaq 0x19347(%rip), %rsi     # 0x1d5b4
leaq 0x19635(%rip), %rcx     # 0x1d8a9
jmp 0x428b
leaq 0x195cb(%rip), %rdi     # 0x1d848
leaq 0x19330(%rip), %rsi     # 0x1d5b4
leaq 0x19646(%rip), %rcx     # 0x1d8d1
movl $0x1fb, %edx            # imm = 0x1FB
callq 0x3170
jmp 0x42cf
jmp 0x42ef
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x42d2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x42d2
jmp 0x42cf
jmp 0x42cf
jmp 0x42cf
jmp 0x42ef
jmp 0x42ef
jmp 0x42ef
jmp 0x42ef
jmp 0x42ef
jmp 0x42ef
jmp 0x42ef
jmp 0x42cf
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x42f2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x42f2
movq %rax, %rbx
movq 0x1fccf(%rip), %rsi     # 0x23fc8
leaq 0x48(%rsp), %rdi
callq 0x3130
leaq 0xb8(%rsp), %rdi
callq 0x30a0
movq %rbx, %rdi
callq 0x3410