// File: /workspace/github_cpp_makefile_star2_O1/besm6[P]pascal-re/pascompl.cc
// Function: parseDecls(long)
void parseDecls(int64_t l3arg1z)
{
    int64_t l3int1z;
    Word frame;
    bool l3var3z;

    IdentRecPtr &l2idr2z = programme::super.back()->l2idr2z;
    int64_t &l2int11z = programme::super.back()->l2int11z;

    switch (l3arg1z) {
    case 0: {
        int93z = 0;
        inSymbol();
        if (SY != IDENT)
            errAndSkip(3, skipToSet + Bits(IDENT));
    } break;
    case 2: {
        padToLeft();
        l3var3z = l2idr2z->flags().has(22);
        l3arg1z = l2idr2z->pos();
        frame.i = moduleOffset - 040000;
        if (l3arg1z != 0)
            symTab[l3arg1z] = 041000000 + (frame.ii & halfWord);
        l2idr2z->pos() = moduleOffset;
        l3arg1z = F3307(l2idr2z);
        if (l3var3z) {
            if (41 >= entryPtCnt) {
                curVal.ii = l2idr2z->id;
                entryPtTable[entryPtCnt] = makeNameWithStars(true);
                entryPtTable[entryPtCnt+1] = (1L << 46) | frame.i;
                entryPtCnt = entryPtCnt + 2;
            } else
                error(87); /* errTooManyEntryProcs */
        };
        if (l2idr2z->typ == NULL) {
            frame.i = 3;
        } else {
            frame.i = 4;
        };
        if (l3var3z)
            form2Insn((KVTM+I14) + l3arg1z + (frame.i - 3) * 01000,
                      getHelperProc(94 /*"P/NN"*/) - 010000000);
        if (1 < l3arg1z) {
            frame.i = getValueOrAllocSymtab(-(frame.i+l3arg1z));
        }
        if (optSflags.m.has(S5) and
            curProcNesting == 1)
            l3int1z = 59;  /* P/LV */
        else
            l3int1z = curProcNesting;
        l3int1z = getHelperProc(l3int1z) - (-04000000);
        if (l3arg1z == 1) {
            form1Insn((KATX+SP) + frame.i);
        } else if (l3arg1z != 0) {
            form2Insn(KATX+SP, (KUTM+SP) + frame.i);
        }
        formAndAlign(l3int1z);
        savedObjIdx = objBufIdx;
        if (curProcNesting != 1)
            form1Insn(0);
        if (l3var3z)
            form1Insn(KVTM+I8+074001);
        if (l2int11z != 0) {
            form1Insn(InsnTemp[XTA]);
            formAndAlign(KVJM+I13 + l2int11z);
            curVal.i = l2int11z;
            P0715(2, 49 /* "P/RDC" */);
        }
        if (curProcNesting == 1) {
            if (heapCallsCnt != 0 and
                heapSize == 0)
                error(65 /*errCannotHaveK0AndNew*/);
            l3var3z = (heapSize == 0) or
                ((heapCallsCnt == 0) and (heapSize == 100));
            if (heapSize == 100)
                heapSize = 4;
            if (not l3var3z) {
                form2Insn(KVTM+I14+getValueOrAllocSymtab(heapSize*02000),
                          getHelperProc(26 /*"P/GD"*/));
                padToLeft();
            }
        }
        if (doPMD)
            formPMD();
    } break;
    } /* case */
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x180, %rsp            # imm = 0x180
cmpq $0x2, %rdi
je 0xe433
testq %rdi, %rdi
jne 0xe81e
movq $0x0, 0x5656e(%rip) # 0x64958
leaq 0x10(%rsp), %rdi
callq 0x6e26
cmpl $0x0, 0x56431(%rip)     # 0x6482c
je 0xe81e
movabsq $0x7fffffffffff, %rax   # imm = 0x7FFFFFFFFFFF
movq 0x563e6(%rip), %rcx     # 0x647f8
andq %rax, %rcx
leaq (%rcx,%rax), %rbx
incq %rbx
movl $0x3, %edi
callq 0x589e
movq %rbx, %rdi
callq 0x7f7c
jmp 0xe81e
movq 0xaef4e(%rip), %rax     # 0xbd388
movq -0x8(%rax), %r12
cmpb $0x0, 0x5653f(%rip)     # 0x64984
jne 0xe453
movq 0x5b06a(%rip), %rdi     # 0x694b8
callq 0x5941
movq $0x0, 0x5650a(%rip) # 0x64968
movq (%r12), %rax
cmpl $0x2, 0x20(%rax)
jne 0xe82f
movq 0x50(%rax), %rbx
movq 0x58(%rax), %r13
movq $-0x4000, %rsi          # imm = 0xC000
addq 0x56416(%rip), %rsi     # 0x64898
leaq 0x8(%rsp), %rdi
callq 0x3bf2
testq %rbx, %rbx
je 0xe4ac
movq 0x8(%rsp), %rax
andl $0xffffff, %eax         # imm = 0xFFFFFF
addq $0x840000, %rax         # imm = 0x840000
leaq 0x5c858(%rip), %rcx     # 0x6ad00
movq %rax, (%rcx,%rbx,8)
movq (%r12), %rdi
cmpl $0x2, 0x20(%rdi)
jne 0xe84e
movq 0x563d7(%rip), %rax     # 0x64898
movq %rax, 0x50(%rdi)
callq 0x87b1
movq %rax, %rbx
btl $0x19, %r13d
jb 0xe505
movq (%r12), %rax
movzwl 0xe(%rsp), %ecx
shlq $0x30, %rcx
movabsq $0xd00000000003, %rdx   # imm = 0xD00000000003
leaq 0x1(%rdx), %rsi
cmpq $0x0, 0x18(%rax)
cmoveq %rdx, %rsi
orq %rcx, %rsi
movq %rsi, 0x8(%rsp)
jmp 0xe5f8
cmpq $0x29, 0x56343(%rip)    # 0x64850
jg 0xe55d
movq (%r12), %rax
movq (%rax), %rax
movq %rax, 0x56523(%rip)     # 0x64a40
movl $0x1, %edi
callq 0x8824
movq 0x56322(%rip), %rcx     # 0x64850
leaq 0x5a6cb(%rip), %rdx     # 0x68c00
movq %rax, (%rdx,%rcx,8)
movq 0x8(%rsp), %rax
shlq $0x17, %rax
sarq $0x17, %rax
btsq $0x2e, %rax
movq %rax, 0x8(%rdx,%rcx,8)
addq $0x2, %rcx
movq %rcx, 0x562f5(%rip)     # 0x64850
jmp 0xe567
movl $0x57, %edi
callq 0x589e
movq (%r12), %rax
movzwl 0xe(%rsp), %ecx
shlq $0x30, %rcx
movabsq $0xd00000000003, %rdx   # imm = 0xD00000000003
leaq 0x1(%rdx), %rsi
cmpq $0x0, 0x18(%rax)
cmoveq %rdx, %rsi
orq %rcx, %rsi
btl $0x19, %r13d
movq %rsi, 0x8(%rsp)
jae 0xe5f8
movq 0x8(%rsp), %rax
shlq $0x17, %rax
sarq $0xe, %rax
leaq (%rbx,%rax), %r14
addq $0xe9fa00, %r14         # imm = 0xE9FA00
cmpq $0x0, 0x5c716(%rip)     # 0x6acd0
jne 0xe5db
movq 0x160bd(%rip), %rax     # 0x24680
movq %rax, 0x56476(%rip)     # 0x64a40
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5ba8
movq %rax, 0x5c6f5(%rip)     # 0x6acd0
movl $0xbc8000, %r15d        # imm = 0xBC8000
addq 0x5c6e8(%rip), %r15     # 0x6acd0
movq %r14, %rdi
callq 0x5941
movq %r15, %rdi
callq 0x5941
cmpq $0x2, %rbx
jl 0xe624
leaq 0x8(%rsp), %r14
movq (%r14), %rdi
shlq $0x17, %rdi
sarq $0x17, %rdi
addq %rbx, %rdi
negq %rdi
callq 0x6128
movq %r14, %rdi
movq %rax, %rsi
callq 0x3bf2
movq 0x56455(%rip), %rax     # 0x64a80
shrq $0x2d, %rax
movq 0x5627a(%rip), %rcx     # 0x648b0
cmpq $0x1, %rcx
movl $0x3b, %edi
cmovneq %rcx, %rdi
testb $0x1, %al
cmoveq %rcx, %rdi
callq 0x5cbc
movq %rax, %r14
addq $0x100000, %r14         # imm = 0x100000
testq %rbx, %rbx
je 0xe69f
cmpq $0x1, %rbx
jne 0xe679
movq 0x8(%rsp), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
addq $0xf00000, %rbx         # imm = 0xF00000
jmp 0xe697
movq 0x8(%rsp), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
addq $0xfa8000, %rbx         # imm = 0xFA8000
movl $0xf00000, %edi         # imm = 0xF00000
callq 0x5941
movq %rbx, %rdi
callq 0x5941
movq %r14, %rdi
callq 0x5b45
movq 0x5629a(%rip), %rax     # 0x64948
movq %rax, 0x56183(%rip)     # 0x64838
cmpq $0x1, 0x561f3(%rip)     # 0x648b0
je 0xe6c6
xorl %edi, %edi
callq 0x5941
btl $0x19, %r13d
jae 0xe6d7
movl $0x8a7801, %edi         # imm = 0x8A7801
callq 0x5941
cmpq $0x0, 0x48(%r12)
je 0xe71a
movq 0x5acda(%rip), %rdi     # 0x693c0
callq 0x5941
movl $0xdc8000, %edi         # imm = 0xDC8000
addq 0x48(%r12), %rdi
callq 0x5b45
movq 0x48(%r12), %rsi
leaq 0x5633a(%rip), %rdi     # 0x64a40
callq 0x3bf2
movl $0x2, %edi
movl $0x31, %esi
callq 0x617f
cmpq $0x1, 0x5618e(%rip)     # 0x648b0
jne 0xe800
cmpq $0x0, 0x561a8(%rip)     # 0x648d8
je 0xe746
cmpq $0x0, 0x561a6(%rip)     # 0x648e0
jne 0xe746
movl $0x41, %edi
callq 0x589e
movq 0x56193(%rip), %rax     # 0x648e0
testq %rax, %rax
je 0xe765
movq %rax, %rcx
xorq $0x64, %rcx
orq 0x56178(%rip), %rcx     # 0x648d8
sete %cl
jmp 0xe767
movb $0x1, %cl
cmpq $0x64, %rax
jne 0xe778
movq $0x4, 0x56168(%rip) # 0x648e0
testb %cl, %cl
jne 0xe800
movq 0x56159(%rip), %rdi     # 0x648e0
shlq $0xa, %rdi
callq 0x6128
movq %rax, %rbx
addq $0xea0000, %rbx         # imm = 0xEA0000
cmpq $0x0, 0x5c30e(%rip)     # 0x6aab0
jne 0xe7c3
movq 0x15cb5(%rip), %rax     # 0x24460
movq %rax, 0x5628e(%rip)     # 0x64a40
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5ba8
movq %rax, 0x5c2ed(%rip)     # 0x6aab0
movl $0xdc8000, %r14d        # imm = 0xDC8000
addq 0x5c2e0(%rip), %r14     # 0x6aab0
movq %rbx, %rdi
callq 0x5941
movq %r14, %rdi
callq 0x5941
cmpb $0x0, 0x5619d(%rip)     # 0x64984
jne 0xe7f5
movq 0x5acc8(%rip), %rdi     # 0x694b8
callq 0x5941
movq $0x0, 0x56168(%rip) # 0x64968
cmpb $0x1, 0x56182(%rip)     # 0x64989
jne 0xe81e
addq $0x180, %rsp            # imm = 0x180
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xdfbf
addq $0x180, %rsp            # imm = 0x180
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0xeed5(%rip), %rdi      # 0x1d70b
leaq 0xed77(%rip), %rsi      # 0x1d5b4
leaq 0xef11(%rip), %rcx      # 0x1d755
movl $0x301, %edx            # imm = 0x301
callq 0x3170
leaq 0xeeb6(%rip), %rdi      # 0x1d70b
leaq 0xed58(%rip), %rsi      # 0x1d5b4
leaq 0xeed9(%rip), %rcx      # 0x1d73c
movl $0x2fd, %edx            # imm = 0x2FD
callq 0x3170