// File: 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 %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq 0x73f49(%rip), %rax     # 0x80168
movq 0x38(%rax), %rax
movq %rax, -0x8(%rbp)
movl $0xf, %eax
cmpq -0x8(%rbp), %rax
jge 0xc234
jmp 0xc264
cmpq $0xf, -0x8(%rbp)
jne 0xc247
movl $0x1000006, %edi        # imm = 0x1000006
callq 0xbbb0
jmp 0xc262
movq -0x8(%rbp), %rcx
leaq 0x782de(%rip), %rax     # 0x84530
movq (%rax,%rcx,8), %rdi
addq 0x7890b(%rip), %rdi     # 0x84b68
callq 0xbbb0
jmp 0xc264
movq 0x73efd(%rip), %rdi     # 0x80168
addq $0x18, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1e5f0
andb $0x1, %al
movb %al, -0x19(%rbp)
movq 0x73ee4(%rip), %rax     # 0x80168
movl 0x40(%rax), %eax
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jne 0xc296
testb $0x1, -0x19(%rbp)
je 0xc2a0
movl $0x1000005, %edi        # imm = 0x1000005
callq 0xbc80
cmpl $0x0, -0x20(%rbp)
jne 0xc30a
testb $0x1, -0x19(%rbp)
je 0xc2e2
movq 0x73eb5(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x1dfb0
movq %rax, %rdi
addq 0x788a2(%rip), %rdi     # 0x84b68
movq 0x73e9b(%rip), %rax     # 0x80168
movq 0x30(%rax), %rsi
callq 0xbc40
movl $0x1000013, %edi        # imm = 0x1000013
callq 0xbbb0
jmp 0xc305
movq 0x73e7f(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x1dfb0
movq %rax, %rdi
movq 0x73e6c(%rip), %rax     # 0x80168
movq 0x30(%rax), %rsi
callq 0xbc40
jmp 0xc4c3
movq 0x73e57(%rip), %rax     # 0x80168
movq 0x10(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x24(%rbp)
movq 0x73e46(%rip), %rax     # 0x80168
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x8(%rbp)
movb $0x1, %al
cmpl $0x4, -0x24(%rbp)
movb %al, -0x41(%rbp)
jl 0xc35e
xorl %eax, %eax
cmpl $0x6, -0x24(%rbp)
movb %al, -0x42(%rbp)
jne 0xc358
leaq 0x73de5(%rip), %rdi     # 0x80130
movl $0x3, %esi
callq 0x1e5f0
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
andb $0x1, %al
movb %al, -0x1a(%rbp)
cmpl $0x1, -0x20(%rbp)
jne 0xc455
movq 0x73df1(%rip), %rax     # 0x80168
movq 0x50(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x73dde(%rip), %rcx     # 0x80168
addq 0x48(%rcx), %rax
movq %rax, -0x18(%rbp)
testb $0x1, -0x1a(%rbp)
je 0xc3af
cmpq $0x0, -0x10(%rbp)
je 0xc3ad
movl $0x1e040, %edi          # imm = 0x1E040
subq -0x10(%rbp), %rdi
callq 0xbc80
jmp 0xc3c6
cmpq $0x30, -0x18(%rbp)
je 0xc3c4
movl $0x1e070, %edi          # imm = 0x1E070
subq -0x18(%rbp), %rdi
callq 0xbc80
jmp 0xc3c6
movq 0x7879b(%rip), %rax     # 0x84b68
movq %rax, -0x50(%rbp)
movq 0x73d90(%rip), %rdi     # 0x80168
addq $0x28, %rdi
callq 0x1dfb0
movq -0x50(%rbp), %rdi
addq %rax, %rdi
movq 0x73d79(%rip), %rax     # 0x80168
movq 0x30(%rax), %rsi
callq 0xbc40
xorl %eax, %eax
movl %eax, %edi
movl $0x2f, %esi
callq 0x4a60
movq %rax, -0x38(%rbp)
movl $0x30, %edi
subq -0x18(%rbp), %rdi
movl $0x2f, %esi
subq -0x10(%rbp), %rsi
callq 0x4a60
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x1e4e0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, 0x73caf(%rip)     # 0x800f0
callq 0x8580
movq %rax, %rsi
movl $0x1000016, %edi        # imm = 0x1000016
callq 0xbc40
jmp 0xc4c1
testb $0x1, -0x1a(%rbp)
jne 0xc49d
movq 0x73d06(%rip), %rax     # 0x80168
movq 0x48(%rax), %rax
subq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xc483
movl $0x1e040, %edi          # imm = 0x1E040
subq -0x10(%rbp), %rdi
callq 0xbc80
movq 0x7866e(%rip), %rdi     # 0x84af8
callq 0xbc80
movl $0x1e040, %edi          # imm = 0x1E040
subq -0x8(%rbp), %rdi
callq 0xbc80
movl $0x4d, %edi
callq 0x80d0
movq %rax, %rdi
callq 0xbbb0
movq 0x73cb2(%rip), %rax     # 0x80168
movq (%rax), %rax
movq $0x1, 0x8(%rax)
jmp 0xc4c3
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)