// File: 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
movq %rsp, %rbp
subq $0xe0, %rsp
movq 0x74446(%rip), %rax     # 0x80168
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
movq 0x74437(%rip), %rax     # 0x80168
movl 0x20(%rax), %eax
movq %rax, -0xb0(%rbp)
subq $0x3, %rax
ja 0xc173
movq -0xb0(%rbp), %rax
leaq 0x257b5(%rip), %rcx     # 0x31508
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x74405(%rip), %rax     # 0x80168
movq 0x28(%rax), %rax
movq %rax, 0x74382(%rip)     # 0x800f0
movq -0x20(%rbp), %rax
cmpq $0x1, (%rax)
jne 0xbd8c
callq 0x8580
movq %rax, %rsi
leaq 0x74369(%rip), %rdi     # 0x800f0
callq 0x4ad0
movq 0x3355d(%rip), %rax     # 0x3f2f0
addq 0x74186(%rip), %rax     # 0x7ff20
movq %rax, -0xb8(%rbp)
leaq 0x74348(%rip), %rdi     # 0x800f0
callq 0x1dfb0
movq -0xb8(%rbp), %rdi
addq %rax, %rdi
callq 0xbbb0
jmp 0xc173
movq 0x743a0(%rip), %rax     # 0x80168
movq 0x38(%rax), %rax
movq %rax, -0x8(%rbp)
movq 0x74391(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x1dfb0
movq %rax, -0x10(%rbp)
movq 0x7437d(%rip), %rax     # 0x80168
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
movl $0xf, %eax
cmpq -0x8(%rbp), %rax
jge 0xbe00
jmp 0xbe6e
cmpq $0xf, -0x8(%rbp)
jne 0xbe13
movl $0x1000006, %edi        # imm = 0x1000006
callq 0xbbb0
jmp 0xbe6c
movq 0x7434e(%rip), %rax     # 0x80168
movq 0x38(%rax), %rcx
leaq 0x7870b(%rip), %rax     # 0x84530
movq (%rax,%rcx,8), %rax
movq %rax, -0x8(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0xbe5a
movq 0x7432d(%rip), %rax     # 0x80168
cmpl $0x0, 0x40(%rax)
jne 0xbe5a
movq -0x8(%rbp), %rdi
addq 0x740d4(%rip), %rdi     # 0x7ff20
movq -0x18(%rbp), %rsi
callq 0xbc40
jmp 0xc175
movq -0x8(%rbp), %rdi
addq 0x78d03(%rip), %rdi     # 0x84b68
callq 0xbbb0
jmp 0xbe6c
jmp 0xbe6e
movq 0x742f3(%rip), %rax     # 0x80168
movl 0x40(%rax), %eax
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jne 0xbe9a
movq -0x10(%rbp), %rdi
addq 0x74094(%rip), %rdi     # 0x7ff20
movq -0x18(%rbp), %rsi
callq 0xbc40
jmp 0xc0dd
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x24(%rbp)
cmpl $0x4, -0x24(%rbp)
jl 0xbec7
cmpl $0x6, -0x24(%rbp)
jne 0xbf2d
leaq 0x74279(%rip), %rdi     # 0x80130
movl $0x3, %esi
callq 0x1e5f0
testb $0x1, %al
jne 0xbec7
jmp 0xbf2d
movb $0x1, -0x29(%rbp)
movq -0x20(%rbp), %rsi
movq 0x741d2(%rip), %rdx     # 0x800a8
leaq -0x78(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0xb280
movq -0xc8(%rbp), %rdi
callq 0x1e950
movb %al, -0xb9(%rbp)
jmp 0xbefa
movb -0xb9(%rbp), %al
andb $0x1, %al
movb %al, -0x2a(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x1e9c0
jmp 0xbf35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x1e9c0
jmp 0xc1da
movb $0x0, -0x29(%rbp)
movb $0x0, -0x2a(%rbp)
cmpl $0x1, -0x28(%rbp)
jne 0xc097
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jne 0xbf57
cmpq $0x12, -0x8(%rbp)
jne 0xbf57
cmpq $0x0, -0x10(%rbp)
je 0xbf6b
movq -0x10(%rbp), %rdi
addq 0x78b0e(%rip), %rdi     # 0x84a70
movq -0x18(%rbp), %rsi
callq 0xbc40
movq 0x741f6(%rip), %rax     # 0x80168
movq 0x50(%rax), %rax
movq %rax, -0x18(%rbp)
movq 0x741e7(%rip), %rax     # 0x80168
movq 0x48(%rax), %rax
movq %rax, -0x10(%rbp)
movb $0x1, -0x2b(%rbp)
movq -0x18(%rbp), %rax
addq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
testb $0x1, -0x29(%rbp)
je 0xc034
movl $0x1e, %eax
cmpq -0x18(%rbp), %rax
jge 0xbfd7
movq -0x18(%rbp), %rdi
addq $0x1e010, %rdi          # imm = 0x1E010
callq 0xbbb0
movq 0x78b33(%rip), %rdi     # 0x84af8
callq 0xbbb0
cmpq $0x30, -0x8(%rbp)
jne 0xbfd5
movb $0x0, -0x2b(%rbp)
jmp 0xbff0
cmpq $0x0, -0x18(%rbp)
je 0xbfee
movq -0x18(%rbp), %rdi
addq $0x1e040, %rdi          # imm = 0x1E040
callq 0xbbb0
jmp 0xbff0
testb $0x1, -0x2b(%rbp)
je 0xc032
movl $0x30, %edi
subq -0x10(%rbp), %rdi
movl $0x2f, %esi
callq 0x4a60
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, 0x740d2(%rip)     # 0x800f0
callq 0x8580
movq %rax, %rdi
addq $0x809000, %rdi         # imm = 0x809000
callq 0xbbb0
jmp 0xc085
cmpq $0x30, -0x8(%rbp)
je 0xc04b
movq -0x8(%rbp), %rdi
addq $0x1e010, %rdi          # imm = 0x1E010
callq 0xbbb0
movq -0x10(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x4a60
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, 0x7407f(%rip)     # 0x800f0
callq 0x8580
movq %rax, %rdi
addq $0x809000, %rdi         # imm = 0x809000
callq 0xbbb0
testb $0x1, -0x2a(%rbp)
je 0xc095
movl $0x10a009, %edi         # imm = 0x10A009
callq 0xbbb0
jmp 0xc0db
testb $0x1, -0x29(%rbp)
je 0xc0b0
movb -0x2a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
addl $0x4a, %eax
cltq
movq %rax, -0x8(%rbp)
jmp 0xc0b8
movq $0x38, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x80d0
movq %rax, %rdi
callq 0xbbb0
movq 0x74098(%rip), %rax     # 0x80168
movq (%rax), %rax
movq $0x1, 0x8(%rax)
jmp 0xc0dd
jmp 0xc0e1
jmp 0xc0e1
testb $0x1, 0x73dd2(%rip)     # 0x7feba
je 0xc11c
movq -0x20(%rbp), %rax
cmpq 0x73fa3(%rip), %rax     # 0x80098
jne 0xc11c
movq 0x7406a(%rip), %rdi     # 0x80168
addq $0x18, %rdi
movl $0x10, %esi
callq 0x1e5f0
testb $0x1, %al
jne 0xc112
jmp 0xc11c
movl $0x10a008, %edi         # imm = 0x10A008
callq 0xbbb0
jmp 0xc173
testb $0x1, 0x73d95(%rip)     # 0x7feba
je 0xc171
movq 0x7403a(%rip), %rdi     # 0x80168
addq $0x18, %rdi
movl $0x10, %esi
callq 0x1e5f0
andb $0x1, %al
movzbl %al, %eax
shll $0xc, %eax
cltq
movq %rax, -0xd0(%rbp)
movq 0x74014(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x1dfb0
movq -0xd0(%rbp), %rsi
addq %rax, %rsi
movl $0x1000014, %edi        # imm = 0x1000014
callq 0xbc40
jmp 0xc173
jmp 0xc175
movq 0x73fec(%rip), %rax     # 0x80168
movl $0x2, 0x20(%rax)
movq 0x73fde(%rip), %rax     # 0x80168
addq $0x18, %rax
movq %rax, -0xd8(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x48e0
movq -0xd8(%rbp), %rdi
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rsi
callq 0x1db20
movq %rax, -0xa0(%rbp)
movq 0x73fa2(%rip), %rax     # 0x80168
movq -0xa0(%rbp), %rcx
movq %rcx, 0x18(%rax)
addq $0xe0, %rsp
popq %rbp
retq
movq -0x80(%rbp), %rdi
callq 0x44c0
nopw %cs:(%rax,%rax)