// File: /workspace/github_cpp_makefile_star2_O3/besm6[P]pascal-re/pascompl.cc
// Function: prepLoad()
void prepLoad()
{
    int64_t helper, l4int2z, l4int3z;
    TypesPtr l4typ4z;
    Kind l4var5z;
    state l4st6z;
    bool l4bool7z, l4bool8z, l4bool9z;

    l4typ4z = insnList->typ;
    switch (insnList->ilm) {
        case ilCONST: {
            curVal = insnList->ilf5;
            if (l4typ4z->size == 1)
              curVal.i = getFCSToffset();
            addToInsnList(constRegTemplate + curInsnTemplate + curVal.i);
        } break;
        case il1: {
            helper = insnList->ilf7;
            l4int2z = insnList->ilf5.i;
            l4int3z = insnList->ilf6;
            if (15 < helper) {
                /* empty */
            } else {
                if (helper == 15) { /* P/CP */
                    addToInsnList(macro + mcACC2ADDR);
                } else {
                    helper = indexreg[insnList->ilf7];
                    if ((l4int2z == 0) and (insnList->st == st0)) {
                        addInsnAndOffset(helper + curInsnTemplate,
                                         l4int3z);
                        goto L4602;
                    } else {
                        addToInsnList(helper + InsnTemp[UTC]);
                    }
                }
            }
            l4st6z = insnList->st;
            if (l4st6z == st0) {
                addInsnAndOffset(l4int2z + curInsnTemplate, l4int3z);
            } else {
                l4var5z = l4typ4z->k;
                if (l4var5z < kindSet or
                    (l4var5z == kindRecord and optSflags.m.has(S6))) {
                    l4bool7z = true;
                    l4bool8z = typeCheck(l4typ4z, IntegerType);
                } else {
                    l4bool7z = false;
                    l4bool8z = false;
                }
                if (l4st6z == st1) {
                    if ((l4int3z != l4int2z) or
                        (helper != 18) or /* P/RC */
                        (l4int2z != 0))
                        addInsnAndOffset(l4int2z + InsnTemp[XTA],
                                         l4int3z);
                    l4int3z = insnList->shift;
                    l4int2z = insnList->width;
                    l4bool9z = true;
                    helper = l4int3z + l4int2z;
                    if (l4bool7z) {
                        if (30 < l4int3z) {
                            addToInsnList(ASN64-48 + l4int3z);
                            addToInsnList(InsnTemp[YTA]);
                            if (helper == 48) /* P/RDR */
                                l4bool9z = false;
                        } else {
                            if (l4int3z != 0)
                                addToInsnList(ASN64 + l4int3z);
                        }; /* 4477 */
                        if (l4bool9z) {
                            curVal.m = BitRange(48 - l4int2z, 47);
                            addToInsnList(KAAX+I8 + getFCSToffset());
                        }
                    } else { /* 4511 */
                        if (helper != 48)
                            addToInsnList(ASN64-48 + helper);
                        curVal.m = BitRange(0, l4int2z-1);
                        addToInsnList(KAAX+I8 + getFCSToffset());
                    }; /* 4525 */
                    if (l4bool8z)
                        addToInsnList(KAEX+ZERO);
                } else { /* 4531 */
                    if (l4bool7z)
                        helper = l4bool8z+74; /* P/LDAR[IN] */
                    else
                        helper = 56; /* P/RR */
                    addToInsnList(getHelperProc(helper));
                    insnList->next->mode = 1;
                }
            }
            goto L4545;
        } break;
        case il2: {
L4545:      if (bool49z and (l4typ4z == BooleanType) and
                insnList->regsused.has(16))
                addToInsnList(KAEX+E1);
        } break;
        case il3: { /* 4555 */
            if (bool49z)
                addInsnAndOffset(macro+20,
                                 insnList->regsused.has(16)*010000 + insnList->ilf5.i);
        } break;
    } /* case */
L4602:
    insnList->ilm = il2;
    insnList->regsused = insnList->regsused + Bits(0L);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq 0x5c0f8(%rip), %rax     # 0x64aa8
movl 0x20(%rax), %ecx
cmpq $0x3, %rcx
ja 0x8e29
movq 0x10(%rax), %rbx
leaq 0x13bf4(%rip), %rdx     # 0x1c5bc
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq 0x28(%rax), %rdi
movq %rdi, 0x5c054(%rip)     # 0x64a30
cmpq $0x1, (%rbx)
jne 0x89fd
callq 0x5ff3
leaq 0x5c042(%rip), %rdi     # 0x64a30
movq %rax, %rsi
callq 0x3c48
movq 0x5c033(%rip), %rdi     # 0x64a30
movq 0x5be5c(%rip), %rax     # 0x64860
addq 0x1b875(%rip), %rax     # 0x24280
shlq $0x17, %rdi
sarq $0x17, %rdi
addq %rax, %rdi
jmp 0x8e24
movq 0x38(%rax), %r15
movq 0x28(%rax), %r14
movq 0x30(%rax), %r13
shlq $0x17, %r14
cmpq $0xf, %r15
jg 0x8aae
jne 0x8a85
movl $0xf, %r15d
movl $0x1000006, %edi        # imm = 0x1000006
jmp 0x8aa9
cmpb $0x1, 0x5bdb3(%rip)     # 0x647fa
jne 0x8e29
movl 0x18(%rax), %ecx
shrl $0x13, %ecx
andl $0x1000, %ecx           # imm = 0x1000
movq 0x28(%rax), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
addq %rcx, %rbx
movl $0x1000014, %edi        # imm = 0x1000014
callq 0x88f7
movq 0x5c02f(%rip), %rax     # 0x64aa8
movq (%rax), %rax
movq %rbx, 0x18(%rax)
jmp 0x8e29
leaq 0x603e4(%rip), %rcx     # 0x68e70
movq (%rcx,%r15,8), %r15
testq %r14, %r14
jne 0x8a9f
cmpl $0x0, 0x40(%rax)
je 0x8e61
movq 0x60a02(%rip), %rdi     # 0x694a8
addq %r15, %rdi
callq 0x88f7
sarq $0x17, %r14
movq 0x5bfef(%rip), %rax     # 0x64aa8
movl 0x40(%rax), %ebp
testl %ebp, %ebp
je 0x8aee
movl 0x10(%rbx), %eax
cmpl $0x4, %eax
jge 0x8b10
movq 0x5bf19(%rip), %rdx     # 0x649e8
movq %rsp, %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x84c6
movb (%r12), %al
addq $-0x8, 0xb48bf(%rip)    # 0xbd3a8
movb $0x1, %r12b
jmp 0x8b23
addq 0x5bd6b(%rip), %r14     # 0x64860
movq %r14, %rdi
callq 0x88f7
movq 0x5bfa4(%rip), %rax     # 0x64aa8
movq (%rax), %rax
movq %r13, 0x18(%rax)
jmp 0x8e00
cmpl $0x6, %eax
jne 0x8b1e
testb $0x10, 0x5bf59(%rip)    # 0x64a75
jne 0x8ac8
xorl %eax, %eax
xorl %r12d, %r12d
cmpl $0x1, %ebp
jne 0x8b5c
movl %eax, %ebp
xorq $0x12, %r15
movq %r14, %rax
orq %r13, %rax
orq %r15, %rax
je 0x8bca
addq 0x6086c(%rip), %r14     # 0x693b0
movq %r14, %rdi
callq 0x88f7
movq 0x5bf55(%rip), %rax     # 0x64aa8
movq (%rax), %rcx
movq %r13, 0x18(%rcx)
jmp 0x8bd1
movzbl %al, %eax
orq $0x4a, %rax
testb %r12b, %r12b
movl $0x38, %r14d
cmovneq %rax, %r14
leaq 0x61e59(%rip), %r15     # 0x6a9d0
movq (%r15,%r14,8), %rdi
testq %rdi, %rdi
jne 0x8ba7
leaq 0x1b7f9(%rip), %rax     # 0x24380
shll $0x3, %r14d
movq (%r14,%rax), %rax
movq %rax, 0x5be9a(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, %rdi
movq %rax, (%r14,%r15)
addq $0xdc8000, %rdi         # imm = 0xDC8000
callq 0x88f7
movq 0x5beee(%rip), %rax     # 0x64aa8
movq (%rax), %rax
movq $0x1, 0x8(%rax)
jmp 0x8e00
movq 0x5bed7(%rip), %rax     # 0x64aa8
movq 0x48(%rax), %r15
movq 0x50(%rax), %rdi
leaq (%r15,%rdi), %r14
testb %r12b, %r12b
je 0x8c13
cmpq $0x1f, %rdi
jl 0x8cb9
addq $0x1e010, %rdi          # imm = 0x1E010
callq 0x88f7
movq 0x60839(%rip), %rdi     # 0x69438
callq 0x88f7
cmpq $0x30, %r14
jne 0x8cca
jmp 0x8df1
cmpq $0x30, %r14
je 0x8c28
addq $0x1e010, %r14          # imm = 0x1E010
movq %r14, %rdi
callq 0x88f7
testq %r15, %r15
jle 0x8dd7
leaq 0x1(%r15), %rax
andq $-0x2, %rax
decq %r15
movq %r15, %xmm0
pshufd $0x44, %xmm0, %xmm2     # xmm2 = xmm0[0,1,0,1]
xorpd %xmm1, %xmm1
movdqa 0x133be(%rip), %xmm4    # 0x1c010
movdqa 0x133c6(%rip), %xmm5    # 0x1c020
movdqa 0x133ce(%rip), %xmm6    # 0x1c030
movapd 0x133d6(%rip), %xmm7    # 0x1c040
movdqa 0x133dd(%rip), %xmm8    # 0x1c050
movapd %xmm1, %xmm0
movdqa %xmm4, %xmm3
movdqa %xmm5, %xmm1
psubq %xmm4, %xmm1
movdqa %xmm6, %xmm9
psllq %xmm1, %xmm9
pshufd $0xee, %xmm1, %xmm10    # xmm10 = xmm1[2,3,2,3]
movdqa %xmm6, %xmm1
psllq %xmm10, %xmm1
movsd %xmm9, %xmm1            # xmm1 = xmm9[0],xmm1[1]
andpd %xmm7, %xmm1
orpd %xmm0, %xmm1
paddq %xmm8, %xmm4
addq $-0x2, %rax
jne 0x8c73
jmp 0x8d88
testq %rdi, %rdi
je 0x8cca
addq $0x1e040, %rdi          # imm = 0x1E040
callq 0x88f7
testq %r15, %r15
jle 0x8dd7
movl $0x30, %ecx
subq %r15, %rcx
leaq 0x1(%r15), %rax
andq $-0x2, %rax
decq %r15
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm3     # xmm3 = xmm0[0,1,0,1]
paddq 0x13318(%rip), %xmm3    # 0x1c010
movq %r15, %xmm0
pshufd $0x44, %xmm0, %xmm2     # xmm2 = xmm0[0,1,0,1]
xorpd %xmm1, %xmm1
movl $0x2, %ecx
movdqa 0x1330d(%rip), %xmm4    # 0x1c020
movdqa 0x13315(%rip), %xmm5    # 0x1c030
movapd 0x1331d(%rip), %xmm6    # 0x1c040
movdqa 0x13325(%rip), %xmm7    # 0x1c050
movapd %xmm1, %xmm0
movdqa %xmm4, %xmm1
psubq %xmm3, %xmm1
movdqa %xmm5, %xmm8
psllq %xmm1, %xmm8
pshufd $0xee, %xmm1, %xmm9     # xmm9 = xmm1[2,3,2,3]
movdqa %xmm5, %xmm1
psllq %xmm9, %xmm1
movsd %xmm8, %xmm1            # xmm1 = xmm8[0],xmm1[1]
andpd %xmm6, %xmm1
orpd %xmm0, %xmm1
paddq %xmm7, %xmm3
leaq (%rax,%rcx), %rdx
addq $-0x2, %rdx
addq $-0x2, %rcx
cmpq $0x2, %rdx
jne 0x8d2b
negq %rcx
movq %rcx, %xmm3
pshufd $0x44, %xmm3, %xmm3     # xmm3 = xmm3[0,1,0,1]
por 0x13288(%rip), %xmm3    # 0x1c010
movdqa 0x132d0(%rip), %xmm4    # 0x1c060
pxor %xmm4, %xmm2
pxor %xmm4, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm2, %xmm4
pshufd $0xa0, %xmm4, %xmm5     # xmm5 = xmm4[0,0,2,2]
pcmpeqd %xmm2, %xmm3
pshufd $0xf5, %xmm3, %xmm2     # xmm2 = xmm3[1,1,3,3]
pand %xmm5, %xmm2
pshufd $0xf5, %xmm4, %xmm3     # xmm3 = xmm4[1,1,3,3]
por %xmm2, %xmm3
pand %xmm3, %xmm0
pandn %xmm1, %xmm3
por %xmm0, %xmm3
pshufd $0xee, %xmm3, %xmm0     # xmm0 = xmm3[2,3,2,3]
por %xmm3, %xmm0
movq %xmm0, %rax
jmp 0x8dd9
xorl %eax, %eax
movq %rax, 0x5bc50(%rip)     # 0x64a30
callq 0x5ff3
leaq 0x809000(%rax), %rdi
callq 0x88f7
testb %bpl, %bpl
je 0x8e00
movl $0x10a009, %edi         # imm = 0x10A009
callq 0x88f7
cmpb $0x1, 0x5b9f3(%rip)     # 0x647fa
jne 0x8e29
cmpq 0x5bbc8(%rip), %rbx     # 0x649d8
jne 0x8e29
movq 0x5bc8f(%rip), %rax     # 0x64aa8
testb $-0x80, 0x1b(%rax)
je 0x8e29
movl $0x10a008, %edi         # imm = 0x10A008
callq 0x88f7
movq 0x5bc78(%rip), %rax     # 0x64aa8
movl $0x2, 0x20(%rax)
movabsq $0x7fffffffffff, %rcx   # imm = 0x7FFFFFFFFFFF
movq 0x18(%rax), %rdx
andq %rcx, %rdx
addq %rdx, %rcx
incq %rcx
movq %rcx, 0x18(%rax)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq 0x5b9f8(%rip), %r15     # 0x64860
movq %r15, %rdi
callq 0x88f7
movq 0x5bc31(%rip), %rax     # 0x64aa8
movq (%rax), %rax
movq %r13, 0x18(%rax)
jmp 0x8e29