// File: /workspace/github_cpp_makefile_star2_O3/besm6[P]pascal-re/pascompl.cc
// Function: genFullExpr::genDeref()
void genDeref() {
        Word l5var1z, l5var2z;
        bool doPtrCheck;

        doPtrCheck = checkBounds and not (optSflags.m.has(NoPtrCheck))
            and (curOP == DEREF);
        if (not doPtrCheck and (
                (insnList->st == st0) or
                (insnList->st == st1 and
                 insnList->shift == 0))) {
            l5var1z.i = insnList->ilf7;
            l5var2z.i = insnList->ilf6;
            if (l5var1z.i == 18 or l5var1z.i == 16) {
L5220:          addInsnAndOffset((insnList->ilf5.i + InsnTemp[WTC]), l5var2z.i);
            } else {
                if (l5var1z.i == 17) {
                    if (l5var2z.i == 0) {
                        insnList->next->code = insnList->next->code +
                            InsnTemp[XTA];
                    } else
                        goto L5220;
                } else if (l5var1z.i == 15) {
                    addToInsnList(macro + mcACC2ADDR);
                    goto L5220;
                } else {
                    addInsnAndOffset((indexreg[l5var1z.i] + InsnTemp[WTC]),
                                     l5var2z.i);
                }
            }
        } else {
            P5155();
            if (doPtrCheck) {
                addToInsnList(KVTM+I14 + lineCnt);
                addToInsnList(getHelperProc(7)); /* "P/CA"*/
                insnList->next->mode = 1;
            }
            addToInsnList(macro + mcACC2ADDR);
        }
        insnList->ilf6 = 0;
        insnList->ilf5.i = 0;
        insnList->ilf7 = 16;
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movabsq $-0x1000000000000, %r14 # imm = 0xFFFF000000000000
movabsq $0xd00000000000, %r15   # imm = 0xD00000000000
cmpb $0x1, 0x4d298(%rip)     # 0x6497a
jne 0x17796
testb $0x8, 0x4d386(%rip)     # 0x64a75
jne 0x17796
cmpl $0x22, 0x28(%rdi)
jne 0x17796
callq 0x899b
movq 0x4d39d(%rip), %rax     # 0x64aa8
movl $0x1, 0x20(%rax)
movl $0x0, 0x40(%rax)
movq $0x0, 0x30(%rax)
movq 0x28(%rax), %rcx
andq %r14, %rcx
orq %r15, %rcx
movq %rcx, 0x28(%rax)
movq $0x12, 0x38(%rax)
movl $0xea0000, %edi         # imm = 0xEA0000
addq 0x4d16d(%rip), %rdi     # 0x648b0
callq 0x88f7
movq 0x532b9(%rip), %rdi     # 0x6aa08
testq %rdi, %rdi
jne 0x17776
movq 0xcc5d(%rip), %rax      # 0x243b8
movq %rax, 0x4d2ce(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, %rdi
movq %rax, 0x53292(%rip)     # 0x6aa08
addq $0xdc8000, %rdi         # imm = 0xDC8000
callq 0x88f7
movq 0x4d31f(%rip), %rax     # 0x64aa8
movq (%rax), %rax
movq $0x1, 0x8(%rax)
jmp 0x177e8
movq 0x4d30b(%rip), %rax     # 0x64aa8
movl 0x40(%rax), %ecx
testl %ecx, %ecx
je 0x177fe
cmpl $0x1, %ecx
jne 0x177b0
cmpq $0x0, 0x50(%rax)
je 0x177fe
callq 0x899b
movq 0x4d2ec(%rip), %rax     # 0x64aa8
movl $0x1, 0x20(%rax)
movl $0x0, 0x40(%rax)
movq $0x0, 0x30(%rax)
movq 0x28(%rax), %rcx
andq %r14, %rcx
orq %r15, %rcx
movq %rcx, 0x28(%rax)
movq $0x12, 0x38(%rax)
movl $0x1000006, %edi        # imm = 0x1000006
callq 0x88f7
movq 0x4d2af(%rip), %rax     # 0x64aa8
jmp 0x178aa
movq 0x38(%rax), %rsi
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x3c48
movq 0x4d292(%rip), %rax     # 0x64aa8
movq 0x30(%rax), %rsi
movq %rsp, %rdi
callq 0x3c48
movq (%rbx), %rax
shlq $0x17, %rax
sarq $0x17, %rax
leaq -0xf(%rax), %rcx
cmpq $0x3, %rcx
ja 0x17879
leaq 0x5202(%rip), %rax      # 0x1ca40
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl $0x1000006, %edi        # imm = 0x1000006
callq 0x88f7
jmp 0x1785d
movq (%rsp), %rax
shlq $0x17, %rax
je 0x178cf
movq 0x4d244(%rip), %rax     # 0x64aa8
movq 0x28(%rax), %rdi
shlq $0x17, %rdi
sarq $0x17, %rdi
addq 0x51c39(%rip), %rdi     # 0x694b0
jmp 0x1788b
leaq 0x515f0(%rip), %rcx     # 0x68e70
movq 0x51c29(%rip), %rdi     # 0x694b0
addq (%rcx,%rax,8), %rdi
movq (%rsp), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
callq 0x88f7
movq 0x4d205(%rip), %rax     # 0x64aa8
movq (%rax), %rcx
movq %rbx, 0x18(%rcx)
movq $0x0, 0x30(%rax)
andq 0x28(%rax), %r14
orq %r15, %r14
movq %r14, 0x28(%rax)
movq $0x10, 0x38(%rax)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq 0x4d1d2(%rip), %rax     # 0x64aa8
movq (%rax), %rcx
movq 0x51ad0(%rip), %rdx     # 0x693b0
addq %rdx, 0x10(%rcx)
jmp 0x178aa