// File: /workspace/github_cpp_makefile_star2_O3/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x178, %rsp            # imm = 0x178
cmpq $0x2, %rdi
je 0xe6fb
testq %rdi, %rdi
jne 0xeaba
movq $0x0, 0x5628e(%rip) # 0x64948
leaq 0x8(%rsp), %rdi
callq 0x6f40
cmpl $0x0, 0x56151(%rip)     # 0x6481c
je 0xeaba
movabsq $0x7fffffffffff, %rax   # imm = 0x7FFFFFFFFFFF
movq 0x56106(%rip), %rcx     # 0x647e8
andq %rax, %rcx
leaq (%rcx,%rax), %rsi
incq %rsi
movl $0x3, %edi
callq 0x8112
jmp 0xeaba
movq 0xaec76(%rip), %rax     # 0xbd378
movq -0x8(%rax), %r13
cmpb $0x0, 0x56267(%rip)     # 0x64974
jne 0xe71b
movq 0x5ad92(%rip), %rdi     # 0x694a8
callq 0x59a2
movq $0x0, 0x56232(%rip) # 0x64958
movq (%r13), %rax
cmpl $0x2, 0x20(%rax)
jne 0xeacc
movq 0x50(%rax), %rbx
movq 0x58(%rax), %rbp
movq $-0x4000, %rsi          # imm = 0xC000
addq 0x5613e(%rip), %rsi     # 0x64888
movq %rsp, %rdi
callq 0x3c48
testq %rbx, %rbx
je 0xe771
movq (%rsp), %rax
andl $0xffffff, %eax         # imm = 0xFFFFFF
addq $0x840000, %rax         # imm = 0x840000
leaq 0x5c583(%rip), %rcx     # 0x6acf0
movq %rax, (%rcx,%rbx,8)
movq (%r13), %rdi
cmpl $0x2, 0x20(%rdi)
jne 0xeaeb
movq 0x56102(%rip), %rax     # 0x64888
movq %rax, 0x50(%rdi)
callq 0x87ca
movq %rax, %rbx
btl $0x19, %ebp
jae 0xe7f9
cmpq $0x29, 0x560a0(%rip)    # 0x64840
jg 0xe7ef
movq (%r13), %rax
movq (%rax), %rax
movq %rax, 0x56280(%rip)     # 0x64a30
movl $0x1, %edi
callq 0x883d
movq 0x5607f(%rip), %rcx     # 0x64840
leaq 0x5a428(%rip), %rdx     # 0x68bf0
movq %rax, (%rdx,%rcx,8)
movq (%rsp), %rax
shlq $0x17, %rax
sarq $0x17, %rax
btsq $0x2e, %rax
movq %rax, 0x8(%rdx,%rcx,8)
addq $0x2, %rcx
movq %rcx, 0x56053(%rip)     # 0x64840
jmp 0xe7f9
movl $0x57, %edi
callq 0x58ff
movq (%r13), %rax
movzwl 0x6(%rsp), %ecx
shlq $0x30, %rcx
movabsq $0xd00000000003, %rdx   # imm = 0xD00000000003
leaq 0x1(%rdx), %r14
cmpq $0x0, 0x18(%rax)
cmoveq %rdx, %r14
orq %r14, %rcx
btl $0x19, %ebp
movq %rcx, (%rsp)
jae 0xe883
movl %r14d, %eax
andl $0x7, %eax
shll $0x9, %eax
leaq (%rbx,%rax), %r15
addq $0xe9fa00, %r15         # imm = 0xE9FA00
movq 0x5c47b(%rip), %r12     # 0x6acc0
testq %r12, %r12
jne 0xe86c
movq 0x15e1f(%rip), %rax     # 0x24670
movq %rax, 0x561d8(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, %r12
movq %rax, 0x5c454(%rip)     # 0x6acc0
addq $0xbc8000, %r12         # imm = 0xBC8000
movq %r15, %rdi
callq 0x59a2
movq %r12, %rdi
callq 0x59a2
cmpq $0x2, %rbx
jl 0xe8a6
andl $0x7, %r14d
addq %rbx, %r14
negq %r14
movq %r14, %rdi
callq 0x617e
movq %rsp, %rdi
movq %rax, %rsi
callq 0x3c48
movq 0x55ff3(%rip), %rax     # 0x648a0
cmpq $0x1, %rax
movl $0x3b, %r15d
cmovneq %rax, %r15
testb $0x20, 0x561b3(%rip)    # 0x64a75
cmoveq %rax, %r15
leaq 0x5c103(%rip), %r12     # 0x6a9d0
movq (%r12,%r15,8), %r14
testq %r14, %r14
jne 0xe8f9
leaq 0x15aa3(%rip), %rax     # 0x24380
movq (%rax,%r15,8), %rax
movq %rax, 0x56148(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, %r14
movq %rax, (%r12,%r15,8)
addq $0xec8000, %r14         # imm = 0xEC8000
testq %rbx, %rbx
je 0xe945
cmpq $0x1, %rbx
jne 0xe920
movq (%rsp), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
addq $0xf00000, %rbx         # imm = 0xF00000
jmp 0xe93d
movq (%rsp), %rbx
shlq $0x17, %rbx
sarq $0x17, %rbx
addq $0xfa8000, %rbx         # imm = 0xFA8000
movl $0xf00000, %edi         # imm = 0xF00000
callq 0x59a2
movq %rbx, %rdi
callq 0x59a2
movq %r14, %rdi
callq 0x5bb2
movq 0x55fe4(%rip), %rax     # 0x64938
movq %rax, 0x55ecd(%rip)     # 0x64828
cmpq $0x1, 0x55f3d(%rip)     # 0x648a0
je 0xe96c
xorl %edi, %edi
callq 0x59a2
btl $0x19, %ebp
jae 0xe97c
movl $0x8a7801, %edi         # imm = 0x8A7801
callq 0x59a2
cmpq $0x0, 0x48(%r13)
je 0xe9bc
movq 0x5aa26(%rip), %rdi     # 0x693b0
callq 0x59a2
movl $0xdc8000, %edi         # imm = 0xDC8000
addq 0x48(%r13), %rdi
callq 0x5bb2
movq 0x48(%r13), %rsi
leaq 0x56088(%rip), %rdi     # 0x64a30
callq 0x3c48
movl $0x2, %edi
movl $0x31, %esi
callq 0x61d5
cmpq $0x1, 0x55edc(%rip)     # 0x648a0
jne 0xea9b
cmpq $0x0, 0x55ef6(%rip)     # 0x648c8
setne %al
movq 0x55ef4(%rip), %rdi     # 0x648d0
testq %rdi, %rdi
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xe9fa
movl $0x41, %edi
callq 0x58ff
movq 0x55ed6(%rip), %rdi     # 0x648d0
testq %rdi, %rdi
je 0xea9b
cmpq $0x64, %rdi
jne 0xea23
cmpq $0x0, 0x55eb7(%rip)     # 0x648c8
movq $0x4, 0x55eb4(%rip) # 0x648d0
movl $0x4, %edi
je 0xea9b
shlq $0xa, %rdi
callq 0x617e
movq %rax, %rbx
addq $0xea0000, %rbx         # imm = 0xEA0000
movq 0x5c063(%rip), %r14     # 0x6aaa0
testq %r14, %r14
jne 0xea64
movq 0x15a07(%rip), %rax     # 0x24450
movq %rax, 0x55fe0(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, %r14
movq %rax, 0x5c03c(%rip)     # 0x6aaa0
addq $0xdc8000, %r14         # imm = 0xDC8000
movq %rbx, %rdi
callq 0x59a2
movq %r14, %rdi
callq 0x59a2
cmpb $0x0, 0x55ef2(%rip)     # 0x64974
jne 0xea90
movq 0x5aa1d(%rip), %rdi     # 0x694a8
callq 0x59a2
movq $0x0, 0x55ebd(%rip) # 0x64958
cmpb $0x1, 0x55ed7(%rip)     # 0x64979
jne 0xeaba
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xe291
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xecf8(%rip), %rdi      # 0x1d7cb
leaq 0xeb9a(%rip), %rsi      # 0x1d674
leaq 0xed34(%rip), %rcx      # 0x1d815
movl $0x301, %edx            # imm = 0x301
callq 0x3170
leaq 0xecd9(%rip), %rdi      # 0x1d7cb
leaq 0xeb7b(%rip), %rsi      # 0x1d674
leaq 0xecfc(%rip), %rcx      # 0x1d7fc
movl $0x2fd, %edx            # imm = 0x2FD
callq 0x3170