// File: /workspace/github_cpp_makefile_star2_O1/besm6[P]pascal-re/dtran.cc
// Function: Dtran::get_literal[abi:cxx11](unsigned int)
std::string get_literal(uint32 addr) {
    uint64 val = memory[addr + 3];
    std::string ret;
    if ((val >> 24) == 064000000) {
        uint d = val & 077777777;
        if (d > 10000)
            ret = strprintf("%08oB", d);
        else
            ret = strprintf("(%d)", d);
    } else if (is_likely_iso(val)) {
        ret = strprintf("iso('%s')", get_iso_word(val).c_str());
    } else if (is_likely_text(val)) {
        ret = strprintf("%lloC(*\"%s\"*)", val, get_text_word(val).c_str());
    } else if (val >= 0101 && val < 96) {
        ret = strprintf("char('%c')", char(val));
    } else {
        ret = strprintf("(%lloC)", val);
    }
    return ret;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
addl $0x3, %edx
movq 0x48(%rsi,%rdx,8), %r14
leaq 0x10(%rdi), %r12
movq %r12, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movq %r14, %rax
shrq $0x18, %rax
cmpq $0xd00000, %rax         # imm = 0xD00000
jne 0x45cc
cmpl $0x2711, %r14d          # imm = 0x2711
jb 0x46b0
leaq 0x1076(%rip), %rsi      # 0x562e
leaq 0x8(%rsp), %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0x254c
jmp 0x4700
movq %rsi, %r15
movzbl %r14b, %eax
addl $-0x20, %eax
cmpl $0x5e, %eax
ja 0x462f
movl $0x8, %ecx
leaq -0x8(%rcx), %rax
cmpq $0x27, %rax
ja 0x4605
movq %r14, %rdx
shrq %cl, %rdx
movzbl %dl, %edx
addl $-0x20, %edx
addq $0x8, %rcx
cmpl $0x5f, %edx
jb 0x45e0
cmpq $0x28, %rax
jb 0x462f
leaq 0x28(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x4784
movq 0x28(%rsp), %rdx
leaq 0x1018(%rip), %rsi      # 0x5639
leaq 0x8(%rsp), %rdi
xorl %eax, %eax
callq 0x254c
jmp 0x466d
movq %r15, %rdi
movq %r14, %rsi
callq 0x485e
testb %al, %al
je 0x46c8
leaq 0x28(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x364c
movq 0x28(%rsp), %rcx
leaq 0xfe5(%rip), %rsi       # 0x5643
leaq 0x8(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x254c
leaq 0x8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2190
movq (%r14), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4697
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2140
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x472a
movq 0x38(%rsp), %rsi
jmp 0x4722
leaq 0xf7d(%rip), %rsi       # 0x5634
leaq 0x8(%rsp), %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0x254c
jmp 0x4700
leaq -0x41(%r14), %rax
cmpq $0x1e, %rax
ja 0x46ea
leaq 0xf78(%rip), %rsi       # 0x5651
leaq 0x8(%rsp), %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0x254c
jmp 0x4700
leaq 0xf6b(%rip), %rsi       # 0x565c
leaq 0x8(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x254c
leaq 0x8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2190
movq (%r14), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x472a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2140
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x4765
jmp 0x4765
jmp 0x4741
jmp 0x4765
movq %rax, %r14
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4768
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2140
jmp 0x4768
jmp 0x4765
jmp 0x4765
movq %rax, %r14
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x477c
movq (%r12), %rsi
incq %rsi
callq 0x2140
movq %r14, %rdi
callq 0x2220