// File: 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
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rdi, -0x8(%rbp)
leaq 0xc443a(%rip), %rdi     # 0xd8a30
movq %rdi, -0x1c0(%rbp)
callq 0x1e890
movq -0x1c0(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x28(%rbp)
callq 0x1e890
movq (%rax), %rax
addq $0x48, %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1b8(%rbp)
testq %rax, %rax
je 0x14644
jmp 0x14632
movq -0x1b8(%rbp), %rax
subq $0x2, %rax
je 0x146a4
jmp 0x14a8e
movq $0x0, 0x6b9b9(%rip) # 0x80008
leaq -0x1a0(%rbp), %rdi
callq 0x9790
cmpl $0x0, 0x6b87a(%rip)     # 0x7fedc
je 0x1469f
xorl %eax, %eax
movl %eax, %edi
callq 0x48e0
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rsi
leaq 0x6b826(%rip), %rdi     # 0x7fea8
callq 0x1db20
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rsi
movl $0x3, %edi
callq 0xacf0
jmp 0x14a8e
callq 0x7ef0
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x20960
movq %rax, %rdi
movl $0x16, %esi
callq 0x1e5f0
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x20910
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movq 0x6b867(%rip), %rsi     # 0x7ff48
subq $0x4000, %rsi           # imm = 0x4000
leaq -0x18(%rbp), %rdi
callq 0x4ad0
cmpq $0x0, -0x8(%rbp)
je 0x14719
movq -0x18(%rbp), %rdx
andq $0xffffff, %rdx         # imm = 0xFFFFFF
addq $0x840000, %rdx         # imm = 0x840000
movq -0x8(%rbp), %rcx
leaq 0x71c9b(%rip), %rax     # 0x863b0
movq %rdx, (%rax,%rcx,8)
movq 0x6b828(%rip), %rax     # 0x7ff48
movq %rax, -0x1c8(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x20910
movq -0x1c8(%rbp), %rcx
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0xb930
movq %rax, -0x8(%rbp)
testb $0x1, -0x19(%rbp)
je 0x147e1
movl $0x29, %eax
cmpq 0x6b79d(%rip), %rax     # 0x7ff00
jl 0x147d5
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x6b97a(%rip)     # 0x800f0
movl $0x1, %edi
callq 0xb9a0
movq %rax, %rdx
movq 0x6b776(%rip), %rcx     # 0x7ff00
leaq 0x6fb1f(%rip), %rax     # 0x842b0
movq %rdx, (%rax,%rcx,8)
leaq -0x18(%rbp), %rdi
callq 0x1dfb0
movq %rax, %rdx
movabsq $0x400000000000, %rax   # imm = 0x400000000000
orq %rax, %rdx
movq 0x6b74b(%rip), %rcx     # 0x7ff00
leaq 0x6faf4(%rip), %rax     # 0x842b0
movq %rdx, 0x8(%rax,%rcx,8)
movq 0x6b738(%rip), %rax     # 0x7ff00
addq $0x2, %rax
movq %rax, 0x6b72d(%rip)     # 0x7ff00
jmp 0x147df
movl $0x57, %edi
callq 0x7b40
jmp 0x147e1
movq -0x28(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x18(%rax)
jne 0x147ff
leaq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0x4ad0
jmp 0x1480d
leaq -0x18(%rbp), %rdi
movl $0x4, %esi
callq 0x4ad0
testb $0x1, -0x19(%rbp)
je 0x14869
movq -0x8(%rbp), %rax
addq $0xea0000, %rax         # imm = 0xEA0000
movq %rax, -0x1d8(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x1dfb0
movq %rax, %rcx
movq -0x1d8(%rbp), %rax
subq $0x3, %rcx
shlq $0x9, %rcx
addq %rcx, %rax
movq %rax, -0x1d0(%rbp)
movl $0x5e, %edi
callq 0x80d0
movq -0x1d0(%rbp), %rdi
movq %rax, %rsi
subq $0x200000, %rsi         # imm = 0x200000
callq 0x7da0
movl $0x1, %eax
cmpq -0x8(%rbp), %rax
jge 0x14899
leaq -0x18(%rbp), %rdi
callq 0x1dfb0
addq -0x8(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edi
subq %rax, %rdi
callq 0x8870
movq %rax, %rsi
leaq -0x18(%rbp), %rdi
callq 0x4ad0
leaq 0x6b890(%rip), %rdi     # 0x80130
movl $0x2, %esi
callq 0x1e5f0
testb $0x1, %al
jne 0x148b0
jmp 0x148c4
cmpq $0x1, 0x6b6a8(%rip)     # 0x7ff60
jne 0x148c4
movq $0x3b, -0x10(%rbp)
jmp 0x148cf
movq 0x6b695(%rip), %rax     # 0x7ff60
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x80d0
subq $-0x100000, %rax        # imm = 0xFFF00000
movq %rax, -0x10(%rbp)
cmpq $0x1, -0x8(%rbp)
jne 0x14903
leaq -0x18(%rbp), %rdi
callq 0x1dfb0
movq %rax, %rdi
addq $0xf00000, %rdi         # imm = 0xF00000
callq 0x7c20
jmp 0x14929
cmpq $0x0, -0x8(%rbp)
je 0x14927
leaq -0x18(%rbp), %rdi
callq 0x1dfb0
movq %rax, %rsi
addq $0xfa8000, %rsi         # imm = 0xFA8000
movl $0xf00000, %edi         # imm = 0xF00000
callq 0x7da0
jmp 0x14929
movq -0x10(%rbp), %rdi
callq 0x7f20
movq 0x6b6bf(%rip), %rax     # 0x7fff8
movq %rax, 0x6b5a8(%rip)     # 0x7fee8
cmpq $0x1, 0x6b618(%rip)     # 0x7ff60
je 0x14953
xorl %eax, %eax
movl %eax, %edi
callq 0x7c20
testb $0x1, -0x19(%rbp)
je 0x14963
movl $0x8a7801, %edi         # imm = 0x8A7801
callq 0x7c20
movq -0x30(%rbp), %rax
cmpq $0x0, (%rax)
je 0x149ae
movq 0x700fc(%rip), %rdi     # 0x84a70
callq 0x7c20
movq -0x30(%rbp), %rax
movq (%rax), %rdi
addq $0xdc8000, %rdi         # imm = 0xDC8000
callq 0x7f20
movq -0x30(%rbp), %rax
movq (%rax), %rsi
leaq 0x6b756(%rip), %rdi     # 0x800f0
callq 0x4ad0
movl $0x2, %edi
movl $0x31, %esi
callq 0x8910
cmpq $0x1, 0x6b5aa(%rip)     # 0x7ff60
jne 0x14a7e
cmpq $0x0, 0x6b5c4(%rip)     # 0x7ff88
je 0x149da
cmpq $0x0, 0x6b5c2(%rip)     # 0x7ff90
jne 0x149da
movl $0x41, %edi
callq 0x7b40
movb $0x1, %al
cmpq $0x0, 0x6b5ac(%rip)     # 0x7ff90
movb %al, -0x1d9(%rbp)
je 0x14a1b
xorl %eax, %eax
cmpq $0x0, 0x6b592(%rip)     # 0x7ff88
movb %al, -0x1da(%rbp)
jne 0x14a0f
cmpq $0x64, 0x6b58a(%rip)    # 0x7ff90
sete %al
movb %al, -0x1da(%rbp)
movb -0x1da(%rbp), %al
movb %al, -0x1d9(%rbp)
movb -0x1d9(%rbp), %al
andb $0x1, %al
movb %al, -0x19(%rbp)
cmpq $0x64, 0x6b562(%rip)    # 0x7ff90
jne 0x14a3b
movq $0x4, 0x6b555(%rip) # 0x7ff90
testb $0x1, -0x19(%rbp)
jne 0x14a7c
movq 0x6b548(%rip), %rdi     # 0x7ff90
shlq $0xa, %rdi
callq 0x8870
addq $0xea0000, %rax         # imm = 0xEA0000
movq %rax, -0x1e8(%rbp)
movl $0x1a, %edi
callq 0x80d0
movq -0x1e8(%rbp), %rdi
movq %rax, %rsi
callq 0x7da0
callq 0x7ef0
jmp 0x14a7e
testb $0x1, 0x6b5b4(%rip)     # 0x80039
je 0x14a8c
callq 0x140d0
jmp 0x14a8e
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
nopw (%rax,%rax)