// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
subq $0x10, %rsp
cmpb $0x1, 0x4f4ec(%rip)     # 0x6397a
jne 0x144d9
testb $0x8, 0x4f5de(%rip)     # 0x63a75
jne 0x144d9
cmpl $0x22, 0x28(%rdi)
jne 0x144d9
callq 0x1464c
movl $0xea0000, %edi         # imm = 0xEA0000
addq 0x4f400(%rip), %rdi     # 0x638b0
callq 0x794e
pushq $0x7
popq %rdi
callq 0x52d1
movq %rax, %rdi
callq 0x794e
movq 0x4f5dc(%rip), %rax     # 0x63aa8
movq (%rax), %rax
movq $0x1, 0x8(%rax)
jmp 0x144f8
movq 0x4f5c8(%rip), %rax     # 0x63aa8
movl 0x40(%rax), %ecx
testl %ecx, %ecx
je 0x14507
cmpl $0x1, %ecx
jne 0x144f3
cmpq $0x0, 0x50(%rax)
je 0x14507
callq 0x1464c
movl $0x1000006, %edi        # imm = 0x1000006
callq 0x794e
jmp 0x145a5
movq 0x38(%rax), %rsi
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x381c
movq 0x4f589(%rip), %rax     # 0x63aa8
movq 0x30(%rax), %rsi
movq %rsp, %rdi
callq 0x381c
movq (%rbx), %rax
shlq $0x17, %rax
sarq $0x17, %rax
leaq -0xf(%rax), %rcx
cmpq $0x3, %rcx
ja 0x14582
leaq 0x5469(%rip), %rax      # 0x199b0
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl $0x1000006, %edi        # imm = 0x1000006
callq 0x794e
jmp 0x14566
movq (%rsp), %rax
shlq $0x17, %rax
je 0x145d8
movq 0x4f53b(%rip), %rax     # 0x63aa8
movq 0x28(%rax), %rdi
shlq $0x17, %rdi
sarq $0x17, %rdi
addq 0x53f30(%rip), %rdi     # 0x684b0
jmp 0x14594
leaq 0x538e7(%rip), %rcx     # 0x67e70
movq 0x53f20(%rip), %rdi     # 0x684b0
addq (%rcx,%rax,8), %rdi
movq (%rsp), %rsi
shlq $0x17, %rsi
sarq $0x17, %rsi
callq 0x798d
movq 0x4f4fc(%rip), %rax     # 0x63aa8
andq $0x0, 0x30(%rax)
movzwl 0x2e(%rax), %ecx
shlq $0x30, %rcx
movabsq $0xd00000000000, %rdx   # imm = 0xD00000000000
orq %rcx, %rdx
movq %rdx, 0x28(%rax)
movq $0x10, 0x38(%rax)
addq $0x10, %rsp
popq %rbx
retq
movq 0x4f4c9(%rip), %rax     # 0x63aa8
movq (%rax), %rax
movq 0x53dc7(%rip), %rcx     # 0x683b0
addq %rcx, 0x10(%rax)
jmp 0x145a5
nop