// File: /workspace/github_cpp_makefile_star2_O2/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)
je 0xd2e9
movq %rbx, %rdi
callq 0x13ee4
movq (%rax), %rax
movabsq $-0x1000000000000, %rcx # imm = 0xFFFF000000000000
andq %rax, %rcx
notq %rax
andq 0x56786(%rip), %rax     # 0x63a58
movabsq $0xffffffffffff, %rdx   # imm = 0xFFFFFFFFFFFF
andq %rax, %rdx
orq %rdx, %rcx
movq %rcx, 0x5676f(%rip)     # 0x63a58
movq %rbx, %rdi
callq 0x12d6e
cmpq $0x0, (%rax)
je 0xd2fc
xorl %r12d, %r12d
jmp 0xd30c
movq %rbx, %rdi
callq 0x13ee4
testb $-0x80, 0x2(%rax)
sete %r12b
pushq $0x20
popq %rdi
callq 0x390b
movq %rax, %r13
movb $0x1, 0x564db(%rip)     # 0x637f9
movq 0x18(%rbx), %rax
movq %rax, (%r13)
movl $0x25, 0x8(%r13)
movq %rbx, 0x18(%r13)
andq $0x0, 0x10(%r13)
cmpl $0x7, 0x564de(%rip)     # 0x6381c
jne 0xd37c
testb %r12b, %r12b
je 0xd39e
movq %rbx, %rdi
callq 0x12e9c
movq (%rax), %r15
testq %r15, %r15
jne 0xd3a1
pushq $0x26
popq %rdi
callq 0x4f2c
pushq $0x4
popq %rdi
callq 0x3110
movl $0x22b8, (%rax)         # imm = 0x22B8
movq 0x15c0e(%rip), %rsi     # 0x22f80
movq %rax, %rdi
xorl %edx, %edx
callq 0x33e0
testb %r12b, %r12b
je 0xd4fb
movq %rbx, %rdi
callq 0x12e9c
cmpq $0x0, (%rax)
je 0xd4fb
pushq $0x2a
jmp 0xd4f5
xorl %r15d, %r15d
movq %r13, %r14
cmpq %rbx, %r15
sete %al
andb %r12b, %al
cmpb $0x1, %al
je 0xd355
movb $0x1, 0x56440(%rip)     # 0x637f8
callq 0xd048
testb %r12b, %r12b
je 0xd49a
movq 0x566d3(%rip), %rax     # 0x63aa0
movl 0x8(%rax), %ecx
movl 0x20(%r15), %ebp
cmpq $0x27, %rcx
je 0xd3f8
cmpl $0x26, %ecx
jne 0xd40c
pushq $0x27
popq %rdi
cmpl $0x2, %ebp
jne 0xd495
cmpq $0x0, 0x18(%r15)
jne 0xd495
jmp 0xd469
cmpl $0x2, %ebp
jne 0xd43f
cmpq $0x0, 0x18(%r15)
pushq $0x27
popq %rdi
jne 0xd469
jmp 0xd495
cmpl $0x2f, %ecx
ja 0xd435
movq 0x563d8(%rip), %rdx     # 0x637f0
movb $0x2f, %sil
subb %cl, %sil
movzbl %sil, %ecx
btq %rcx, %rdx
jae 0xd435
addl $-0x5, %ebp
pushq $0x27
popq %rdi
cmpl $-0x2, %ebp
jae 0xd469
jmp 0xd495
pushq $0x27
popq %rdi
cmpl $0x3, %ebp
je 0xd469
jmp 0xd495
movq 0x18(%rax), %rdi
callq 0x12e9c
cmpq $0x0, (%rax)
pushq $0x27
popq %rdi
jne 0xd495
cmpl $0x3, %ebp
jne 0xd495
movq 0x56643(%rip), %rax     # 0x63aa0
movl $0x25, 0x8(%rax)
andq $0x0, 0x10(%rax)
movq (%rax), %rsi
movq %rsi, 0x56595(%rip)     # 0x63a08
testq %rsi, %rsi
je 0xd49a
movq 0x18(%r15), %rdx
movq %rsp, %rdi
callq 0x74d4
addq $-0x8, 0xaef1c(%rip)    # 0xbc3a8
cmpb $0x0, (%rsp)
pushq $0x28
popq %rdi
jne 0xd49a
callq 0x4f2c
pushq $0x20
popq %rdi
callq 0x390b
movq %rax, %rbp
andq $0x0, (%rax)
andq $0x0, 0x10(%rax)
movq 0x565eb(%rip), %rax     # 0x63aa0
movq %rax, 0x18(%rbp)
movq %rbp, 0x10(%r14)
testb %r12b, %r12b
je 0xd4cd
movq %r15, %rdi
callq 0x12d6e
movq (%rax), %r15
movl 0x56349(%rip), %eax     # 0x6381c
movq %rbp, %r14
cmpl $0xe, %eax
je 0xd3a4
cmpl $0xc, %eax
jne 0xd4f3
cmpq %rbx, %r15
setne %al
andb %al, %r12b
cmpb $0x1, %r12b
jne 0xd514
pushq $0x29
popq %rdi
callq 0x4f2c
movq %r13, 0x5659e(%rip)     # 0x63aa0
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x48(%rsp), %rdi
callq 0x6316
jmp 0xd4fb