// File: /workspace/github_cpp_makefile_star2_O1/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
cmpb $0x1, 0x4d670(%rip)     # 0x6498a
jne 0x1732e
testb $0x8, 0x4d762(%rip)     # 0x64a85
jne 0x1732e
cmpl $0x22, 0x28(%rdi)
sete %bl
jmp 0x17330
xorl %ebx, %ebx
movabsq $-0x1000000000000, %r14 # imm = 0xFFFF000000000000
movabsq $0xd00000000000, %r15   # imm = 0xD00000000000
testb %bl, %bl
je 0x17382
callq 0x8989
movq 0x4d764(%rip), %rax     # 0x64ab8
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)
jmp 0x173e0
movq 0x4d72f(%rip), %rax     # 0x64ab8
movl 0x40(%rax), %ecx
testl %ecx, %ecx
je 0x1744c
cmpl $0x1, %ecx
jne 0x173a4
cmpq $0x0, 0x50(%rax)
je 0x1744c
callq 0x8989
movq 0x4d708(%rip), %rax     # 0x64ab8
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)
testb %bl, %bl
je 0x1743d
movl $0xea0000, %edi         # imm = 0xEA0000
addq 0x4d4d4(%rip), %rdi     # 0x648c0
callq 0x88e5
cmpq $0x0, 0x5361f(%rip)     # 0x6aa18
jne 0x1741a
movq 0xcfc6(%rip), %rax      # 0x243c8
movq %rax, 0x4d637(%rip)     # 0x64a40
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5ba8
movq %rax, 0x535fe(%rip)     # 0x6aa18
movl $0xdc8000, %edi         # imm = 0xDC8000
addq 0x535f2(%rip), %rdi     # 0x6aa18
callq 0x88e5
movq 0x4d686(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq $0x1, 0x8(%rax)
movl $0x1000006, %edi        # imm = 0x1000006
callq 0x88e5
jmp 0x174f8
movq 0x38(%rax), %rsi
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x3bf2
movq 0x4d654(%rip), %rax     # 0x64ab8
movq 0x30(%rax), %rsi
movq %rsp, %rdi
callq 0x3bf2
movq (%rbx), %rax
shlq $0x17, %rax
sarq $0x17, %rax
leaq -0xf(%rax), %rcx
cmpq $0x3, %rcx
ja 0x174c7
leaq 0x54f4(%rip), %rax      # 0x1c980
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl $0x1000006, %edi        # imm = 0x1000006
callq 0x88e5
jmp 0x174ab
movq (%rsp), %rax
shlq $0x17, %rax
je 0x17524
movq 0x4d606(%rip), %rax     # 0x64ab8
movq 0x28(%rax), %rdi
shlq $0x17, %rdi
sarq $0x17, %rdi
addq 0x51ffb(%rip), %rdi     # 0x694c0
jmp 0x174d9
leaq 0x519b2(%rip), %rcx     # 0x68e80
movq 0x51feb(%rip), %rdi     # 0x694c0
addq (%rcx,%rax,8), %rdi
movq (%rsp), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
callq 0x88e5
movq 0x4d5c7(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq %rbx, 0x18(%rax)
movq 0x4d5b9(%rip), %rax     # 0x64ab8
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 0x4d58d(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq 0x51e8b(%rip), %rcx     # 0x693c0
addq %rcx, 0x10(%rax)
jmp 0x174f8
nop