// File: /workspace/github_cpp_makefile_star2_O3/besm6[P]pascal-re/pascompl.cc
// Function: parseCallArgs(IdentRec*)
void parseCallArgs(IdentRecPtr l4arg1z)
{
    bool l4var1z;
    ExprPtr l4exp2z, l4exp3z, l4exp4z;
    IdentRecPtr l4idr5z = NULL;
    Operator l4op6z;
    IdClass l4idc7z;

    if (l4arg1z->typ != NULL)
        set146z = set146z - l4arg1z->flags();
    l4var1z = (l4arg1z->list() == NULL) and not (l4arg1z->flags().has(24));
    l4exp3z = new Expr;
    l4exp4z = l4exp3z;
    bool48z = true;
    l4exp3z->typ = l4arg1z->typ;
    l4exp3z->op = ALNUM;
    l4exp3z->id2 = l4arg1z;
    l4exp3z->id1 = NULL;
    if (SY == LPAREN) {
        if (l4var1z) {
            l4idr5z = l4arg1z->argList();
            if (l4idr5z == NULL) {
                error(errTooManyArguments);
                throw 8888;
            }
        }
        do {
            if (l4var1z and l4arg1z == l4idr5z) {
                error(errTooManyArguments);
                throw 8888;
            }
            parsingParam = true;
            expression();
            l4op6z = curExpr->op;
            /* (a) */
            if (l4var1z) {
                l4idc7z = l4idr5z->cl;
                if (l4op6z == PCALL) {
                    if (l4idc7z != ROUTINEID or
                        l4idr5z->typ != NULL) {
L13736:
                        error(39); /*errIncompatibleArgumentKinds*/
                        goto exit_a;
                    }
                } else { /* 13741 */
                    if (l4op6z == FCALL) {
                        if (l4idc7z == ROUTINEID) {
                            if (l4idr5z->typ == NULL)
                                goto L13736;
                        } else if (curExpr->id2->argList() == NULL and
                                   l4idc7z == VARID) {
                            curExpr->op = ALNUM;
                            curExpr->expr1 = NULL;
                        } else
                            goto L13736;
                    } else if (lvalOpSet.has(l4op6z)) {
                        if (l4idc7z != VARID and
                            l4idc7z != FORMALID)
                            goto L13736;
                    } else {
                        if (l4idc7z != VARID)
                            goto L13736;
                    }
                }
                arg1Type = curExpr->typ;
                if (arg1Type != NULL) {
                    if (not typeCheck(arg1Type, l4idr5z->typ))
                        error(40); /*errIncompatibleArgumentTypes*/
                }
            } exit_a:; /* 14006 */
            l4exp2z = new Expr;
            l4exp2z->typ = NULL;
            l4exp2z->expr1 = NULL;
            l4exp2z->expr2 = curExpr;
            l4exp4z->expr1 = l4exp2z;
            l4exp4z = l4exp2z;
            if (l4var1z)
                l4idr5z = l4idr5z->list();
        } while (SY == COMMA);
        if (SY != RPAREN or
            (l4var1z and l4idr5z != l4arg1z))
            error(errNoCommaOrParenOrTooFewArgs);
        else
            inSymbol();
    } else { /* 14035 */
        if (l4var1z and l4arg1z->argList() != NULL)
            error(42); /*errNoArgList*/
    }
    curExpr = l4exp3z;
    /* 14042 */
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, %rbx
cmpq $0x0, 0x18(%rdi)
movl 0x20(%rdi), %eax
je 0xf147
cmpl $0x2, %eax
jne 0xf3e8
movq 0x58(%rbx), %rax
movq %rax, %rcx
notq %rcx
andq 0x55942(%rip), %rcx     # 0x64a58
movabsq $-0x1000000000000, %rdx # imm = 0xFFFF000000000000
andq %rax, %rdx
movabsq $0xffffffffffff, %rax   # imm = 0xFFFFFFFFFFFF
andq %rcx, %rax
orq %rax, %rdx
movq %rdx, 0x5591e(%rip)     # 0x64a58
leaq 0x20(%rbx), %r14
cmpq $0x0, 0x28(%rbx)
jne 0xf15a
jmp 0xf167
testl %eax, %eax
je 0xf3aa
leaq 0x20(%rbx), %r14
cmpq $0x0, 0x28(%rbx)
je 0xf15e
xorl %ebp, %ebp
jmp 0xf16f
cmpl $0x2, %eax
jne 0xf3e8
testb $-0x80, 0x5a(%rbx)
sete %bpl
movl $0x20, %edi
callq 0x3d77
movq %rax, %r15
movb $0x1, 0x55676(%rip)     # 0x647f9
movq 0x18(%rbx), %rax
movq %rax, (%r15)
movl $0x25, 0x8(%r15)
movq %rbx, 0x18(%r15)
movq $0x0, 0x10(%r15)
cmpl $0x7, 0x55677(%rip)     # 0x6481c
jne 0xf1ea
testb %bpl, %bpl
je 0xf212
cmpl $0x2, (%r14)
jne 0xf3c9
movq 0x38(%rbx), %r12
testq %r12, %r12
jne 0xf215
movl $0x26, %edi
callq 0x58ff
movl $0x4, %edi
callq 0x3110
movl $0x22b8, (%rax)         # imm = 0x22B8
movq 0x14da0(%rip), %rsi     # 0x23f80
movq %rax, %rdi
xorl %edx, %edx
callq 0x33f0
testb %bpl, %bpl
je 0xf385
cmpl $0x2, (%r14)
jne 0xf3c9
cmpq $0x0, 0x38(%rbx)
je 0xf385
movl $0x2a, %edi
jmp 0xf380
xorl %r12d, %r12d
xorl %r13d, %r13d
movq %r15, %r14
cmpq %rbx, %r12
sete %al
andb %bpl, %al
cmpb $0x1, %al
je 0xf1bf
movb $0x1, 0x555c9(%rip)     # 0x647f8
callq 0xee5e
testb %bpl, %bpl
je 0xf323
movq 0x5585c(%rip), %rax     # 0x64aa0
movl 0x8(%rax), %edx
movl 0x20(%r12), %ecx
cmpq $0x27, %rdx
je 0xf273
cmpl $0x26, %edx
jne 0xf28a
movl $0x27, %edi
cmpl $0x2, %ecx
jne 0xf31e
cmpq $0x0, 0x18(%r12)
jne 0xf31e
jmp 0xf2ef
cmpl $0x2, %ecx
jne 0xf2c1
cmpq $0x0, 0x18(%r12)
jne 0xf2ef
movl $0x27, %edi
jmp 0xf31e
cmpl $0x2f, %edx
ja 0xf2b5
movq 0x5555a(%rip), %rsi     # 0x647f0
movb $0x2f, %dil
subb %dl, %dil
movzbl %dil, %edx
btq %rdx, %rsi
jae 0xf2b5
addl $-0x5, %ecx
movl $0x27, %edi
cmpl $-0x2, %ecx
jae 0xf2ef
jmp 0xf31e
movl $0x27, %edi
cmpl $0x3, %ecx
je 0xf2ef
jmp 0xf31e
movq 0x18(%rax), %rdx
cmpl $0x2, 0x20(%rdx)
jne 0xf3c9
cmpq $0x0, 0x38(%rdx)
movl $0x27, %edi
jne 0xf31e
cmpl $0x3, %ecx
jne 0xf31e
movl $0x25, 0x8(%rax)
movq $0x0, 0x10(%rax)
movq (%rax), %rsi
movq %rsi, 0x5570f(%rip)     # 0x64a08
testq %rsi, %rsi
je 0xf323
movq 0x18(%r12), %rdx
movq %rsp, %rdi
callq 0x84c6
addq $-0x8, 0xae095(%rip)    # 0xbd3a8
cmpb $0x0, (%rsp)
movl $0x28, %edi
jne 0xf323
callq 0x58ff
movl $0x20, %edi
callq 0x3d77
movq %r13, (%rax)
movq %r13, 0x10(%rax)
movq 0x55765(%rip), %rcx     # 0x64aa0
movq %rcx, 0x18(%rax)
movq %rax, 0x10(%r14)
testb %bpl, %bpl
je 0xf355
cmpl $0x0, 0x20(%r12)
je 0xf3aa
movq 0x28(%r12), %r12
movl 0x554c1(%rip), %ecx     # 0x6481c
movq %rax, %r14
cmpl $0xe, %ecx
je 0xf21b
cmpl $0xc, %ecx
jne 0xf37b
cmpq %rbx, %r12
setne %al
andb %al, %bpl
cmpb $0x1, %bpl
jne 0xf39e
movl $0x29, %edi
callq 0x58ff
movq %r15, 0x55714(%rip)     # 0x64aa0
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x48(%rsp), %rdi
callq 0x6f40
jmp 0xf385
leaq 0xe2e9(%rip), %rdi      # 0x1d69a
leaq 0xe2bc(%rip), %rsi      # 0x1d674
leaq 0xe3ee(%rip), %rcx      # 0x1d7ad
movl $0x2d5, %edx            # imm = 0x2D5
callq 0x3170
leaq 0xe3fb(%rip), %rdi      # 0x1d7cb
leaq 0xe29d(%rip), %rsi      # 0x1d674
leaq 0xe3fd(%rip), %rcx      # 0x1d7db
movl $0x2f1, %edx            # imm = 0x2F1
callq 0x3170
leaq 0xe3dc(%rip), %rdi      # 0x1d7cb
leaq 0xe27e(%rip), %rsi      # 0x1d674
leaq 0xe418(%rip), %rcx      # 0x1d815
movl $0x301, %edx            # imm = 0x301
callq 0x3170