// File: /workspace/github_cpp_makefile_star2_O3/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 0x3f96
leaq 0x181c5(%rip), %rcx     # 0x1c130
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x18ca2(%rip), %rsi     # 0x1cc24
leaq 0x18c9f(%rip), %rdx     # 0x1cc28
movq %rbx, %rdi
callq 0x1936c
jmp 0x4246
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x18cdc(%rip), %rsi     # 0x1cc80
leaq 0x18ce1(%rip), %rdx     # 0x1cc8c
movq %rbx, %rdi
callq 0x1936c
jmp 0x4246
cmpb $0x1, 0x28(%r14)
jne 0x3fd5
leaq 0x18c76(%rip), %rsi     # 0x1cc3c
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
leaq 0x18c68(%rip), %rsi     # 0x1cc44
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
cmpl $0x5, 0x10(%r14)
jne 0x42a3
movq 0x20(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3f3e
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
movq %rax, %r15
leaq 0x18c2a(%rip), %rsi     # 0x1cc4c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32c0
cmpl $0x5, 0x10(%r14)
jne 0x42a3
movq 0x18(%r14), %rsi
leaq 0x28(%rsp), %rdi
callq 0x3f3e
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 0x421e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x421e
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x18bec(%rip), %rsi     # 0x1cc78
leaq 0x18bec(%rip), %rdx     # 0x1cc7f
movq %rbx, %rdi
callq 0x1936c
jmp 0x4246
leaq 0x18bc8(%rip), %rsi     # 0x1cc6f
leaq 0x48(%rsp), %rdi
movl $0x8, %edx
callq 0x32c0
cmpl $0x7, 0x10(%r14)
jne 0x42ba
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3f3e
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
jmp 0x421e
leaq 0x18b3a(%rip), %rsi     # 0x1cc29
leaq 0x48(%rsp), %rdi
movl $0x6, %edx
callq 0x32c0
cmpl $0x2, 0x10(%r14)
jne 0x428c
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3f3e
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
movq %rax, %r15
leaq 0x18afb(%rip), %rsi     # 0x1cc30
movl $0x8, %edx
movq %rax, %rdi
callq 0x32c0
cmpl $0x2, 0x10(%r14)
jne 0x428c
movq 0x28(%r14), %rsi
movq %r15, %rdi
callq 0x3220
movq %rax, %r15
leaq 0x18ad6(%rip), %rsi     # 0x1cc39
movl $0x2, %edx
movq %rax, %rdi
callq 0x32c0
cmpl $0x2, 0x10(%r14)
jne 0x428c
movq 0x30(%r14), %rsi
movq %r15, %rdi
callq 0x3220
jmp 0x421e
cmpq %r14, 0x18(%r14)
je 0x4274
leaq 0x18aca(%rip), %rsi     # 0x1cc67
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
cmpl $0x3, 0x10(%r14)
jne 0x42e8
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3f3e
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rdi
callq 0x32c0
jmp 0x421e
leaq 0x18a70(%rip), %rsi     # 0x1cc52
leaq 0x48(%rsp), %rdi
movl $0x7, %edx
callq 0x32c0
cmpl $0x4, 0x10(%r14)
jne 0x42d1
movq 0x18(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3f3e
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 0x4239
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x33a0
movq 0x1fd7b(%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 0x189df(%rip), %rsi     # 0x1cc5a
leaq 0x48(%rsp), %rdi
movl $0xc, %edx
callq 0x32c0
jmp 0x4239
leaq 0x19672(%rip), %rdi     # 0x1d905
leaq 0x193da(%rip), %rsi     # 0x1d674
leaq 0x19671(%rip), %rcx     # 0x1d912
jmp 0x42fd
leaq 0x1965b(%rip), %rdi     # 0x1d905
leaq 0x193c3(%rip), %rsi     # 0x1d674
leaq 0x19684(%rip), %rcx     # 0x1d93c
jmp 0x42fd
leaq 0x19644(%rip), %rdi     # 0x1d905
leaq 0x193ac(%rip), %rsi     # 0x1d674
leaq 0x196e7(%rip), %rcx     # 0x1d9b6
jmp 0x42fd
leaq 0x1962d(%rip), %rdi     # 0x1d905
leaq 0x19395(%rip), %rsi     # 0x1d674
leaq 0x19680(%rip), %rcx     # 0x1d966
jmp 0x42fd
leaq 0x19616(%rip), %rdi     # 0x1d905
leaq 0x1937e(%rip), %rsi     # 0x1d674
leaq 0x19691(%rip), %rcx     # 0x1d98e
movl $0x1fb, %edx            # imm = 0x1FB
callq 0x3170
jmp 0x4341
jmp 0x4361
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4344
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x4344
jmp 0x4341
jmp 0x4341
jmp 0x4341
jmp 0x4361
jmp 0x4361
jmp 0x4361
jmp 0x4361
jmp 0x4361
jmp 0x4361
jmp 0x4361
jmp 0x4341
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4364
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x4364
movq %rax, %rbx
movq 0x1fc5d(%rip), %rsi     # 0x23fc8
leaq 0x48(%rsp), %rdi
callq 0x3130
leaq 0xb8(%rsp), %rdi
callq 0x30a0
movq %rbx, %rdi
callq 0x3400