// File: /workspace/github_cpp_makefile_star2_O1/besm6[P]pascal-re/pascompl.cc
// Function: prepStore()
void prepStore()
{
    int64_t l4int1z, l4int2z, l4int3z;
    bool l4bool4z, l4bool5z;
    state l4st6z;
    Kind l4var7z;

    l4int1z = insnList->ilf7;
    if (15 < l4int1z) {
        /* nothing? */
    } else if (l4int1z == 15)  {
        addToInsnList(macro + mcACC2ADDR);
    } else {
        addToInsnList(indexreg[l4int1z] + InsnTemp[UTC]);
    }
    l4bool4z = insnList->regsused.has(0);
    l4st6z = insnList->st;
    if ((l4st6z != st0) or l4bool4z)
        addxToInsnList(macro + mcPUSH);
    if (l4st6z == st0) {
        if (l4bool4z)  {
            addInsnAndOffset(insnList->ilf5.i + InsnTemp[UTC],
                             insnList->ilf6);
            addToInsnList(macro+mcPOP2ADDR);
        } else {
            addInsnAndOffset(insnList->ilf5.i, insnList->ilf6);
        }
    } else {
        l4var7z = insnList->typ->k;
        l4int1z = insnList->typ->bits;
        l4bool5z = (l4var7z < kindSet) or
            ((l4var7z == kindRecord) and optSflags.m.has(S6));
        if (l4st6z == st1) {
            l4int2z = insnList->shift;
            l4int3z = l4int2z + insnList->width;
            if (l4bool5z)  {
                if (l4int2z != 0)
                    addxToInsnList(ASN64 - l4int2z);
            } else {
                if (l4int3z != 48)
                    addxToInsnList(ASN64 + 48 - l4int3z);
            }
            addInsnAndOffset(InsnTemp[UTC] + insnList->ilf5.i,
                             insnList->ilf6);
            curVal.m = BitRange(0,47) - BitRange((48-l4int3z),(47 -l4int2z));
            addInsnAndOffset(macro+22, getFCSToffset());
        } else {
            if (not l4bool5z) {
                l4int2z = (insnList->width - l4int1z);
                if (l4int2z != 0)
                    addxToInsnList(ASN64 - l4int2z);
                addxToInsnList(InsnTemp[YTA]);
                addxToInsnList(ASN64 - l4int1z);
            }
            addToInsnList(getHelperProc(77)); /* "P/STAR" */
            insnList->next->mode = 1;
        }
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq 0x5bda1(%rip), %rax     # 0x64ab8
movq 0x38(%rax), %rax
cmpq $0xf, %rax
jg 0x8d3f
movl $0x1000006, %edi        # imm = 0x1000006
je 0x8d3a
leaq 0x60151(%rip), %rcx     # 0x68e80
movq 0x60782(%rip), %rdi     # 0x694b8
addq (%rcx,%rax,8), %rdi
callq 0x88e5
movq 0x5bd72(%rip), %rax     # 0x64ab8
movq 0x18(%rax), %r14
btq $0x2f, %r14
setae %cl
movl 0x40(%rax), %ebx
testl %ebx, %ebx
sete %al
testb %cl, %al
jne 0x8d68
movl $0x1000005, %edi        # imm = 0x1000005
callq 0x8942
movq 0x5bd49(%rip), %rax     # 0x64ab8
testl %ebx, %ebx
je 0x8d94
movq 0x10(%rax), %rcx
movl 0x10(%rcx), %esi
movb $0x1, %dl
cmpl $0x4, %esi
jl 0x8de3
cmpl $0x6, %esi
jne 0x8de1
movb 0x5bcf9(%rip), %dl      # 0x64a85
andb $0x10, %dl
shrb $0x4, %dl
jmp 0x8de3
movq 0x28(%rax), %rdi
shlq $0x17, %rdi
sarq $0x17, %rdi
btq $0x2f, %r14
jae 0x8dd8
addq 0x6070a(%rip), %rdi     # 0x694b8
movq 0x30(%rax), %rbx
callq 0x88e5
movq 0x5bcfa(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq %rbx, 0x18(%rax)
movl $0x1000013, %edi        # imm = 0x1000013
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x88e5
movq 0x30(%rax), %rbx
jmp 0x8f2e
xorl %edx, %edx
cmpl $0x1, %ebx
jne 0x8e12
movq 0x48(%rax), %rbx
movq 0x50(%rax), %r14
leaq (%rbx,%r14), %r12
testb %dl, %dl
je 0x8e9f
testq %r14, %r14
je 0x8eb2
movl $0x1e040, %edi          # imm = 0x1E040
subq %r14, %rdi
jmp 0x8ead
testb %dl, %dl
jne 0x8e4e
movq 0x8(%rcx), %rbx
movq 0x48(%rax), %rax
cmpq %rbx, %rax
je 0x8e35
movq %rbx, %rdi
subq %rax, %rdi
addq $0x1e040, %rdi          # imm = 0x1E040
callq 0x8942
movq 0x6060c(%rip), %rdi     # 0x69448
callq 0x8942
movl $0x1e040, %edi          # imm = 0x1E040
subq %rbx, %rdi
callq 0x8942
cmpq $0x0, 0x61df2(%rip)     # 0x6ac48
jne 0x8e77
movq 0x1b799(%rip), %rax     # 0x245f8
movq %rax, 0x5bbda(%rip)     # 0x64a40
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5ba8
movq %rax, 0x61dd1(%rip)     # 0x6ac48
movl $0xdc8000, %edi         # imm = 0xDC8000
addq 0x61dc5(%rip), %rdi     # 0x6ac48
callq 0x88e5
movq 0x5bc29(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq $0x1, 0x8(%rax)
jmp 0x8f41
cmpq $0x30, %r12
je 0x8eb2
movl $0x1e070, %edi          # imm = 0x1E070
subq %r12, %rdi
callq 0x8942
movabsq $0xffffffffffff, %r15   # imm = 0xFFFFFFFFFFFF
movq 0x5bbf5(%rip), %rax     # 0x64ab8
movq 0x28(%rax), %rdi
movq 0x30(%rax), %r13
shlq $0x17, %rdi
sarq $0x17, %rdi
addq 0x605de(%rip), %rdi     # 0x694b8
callq 0x88e5
movq 0x5bbd2(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq %r13, 0x18(%rax)
movl $0x30, %eax
subq %r12, %rax
movl $0x2f, %ecx
subq %r14, %rcx
cmpq %rcx, %rax
jg 0x8f1a
decq %r14
xorl %eax, %eax
leal (%r14,%rbx), %ecx
btsq %rcx, %rax
decq %rbx
jne 0x8f07
notq %rax
andq %rax, %r15
movq %r15, 0x5bb1f(%rip)     # 0x64a40
callq 0x5f9d
movq %rax, %rbx
movl $0x1000016, %edi        # imm = 0x1000016
callq 0x88e5
movq 0x5bb7e(%rip), %rax     # 0x64ab8
movq (%rax), %rax
movq %rbx, 0x18(%rax)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq