// File: /workspace/github_cpp_makefile_star2_O1/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
movabsq $0xffffffffffff, %rdx   # imm = 0xFFFFFFFFFFFF
cmpq $0x0, 0x18(%rdi)
je 0xeeb7
cmpl $0x2, 0x20(%rbx)
jne 0xf164
movq 0x58(%rbx), %rax
movabsq $-0x1000000000000, %rcx # imm = 0xFFFF000000000000
andq %rax, %rcx
notq %rax
andq %rdx, %rax
andq 0x55bbb(%rip), %rax     # 0x64a68
orq %rax, %rcx
movq %rcx, 0x55bb1(%rip)     # 0x64a68
movl 0x20(%rbx), %eax
testl %eax, %eax
je 0xf126
cmpq $0x0, 0x28(%rbx)
je 0xeecd
xorl %ebp, %ebp
jmp 0xeede
cmpl $0x2, %eax
jne 0xf164
testb $-0x80, 0x5a(%rbx)
sete %bpl
movl $0x20, %edi
callq 0x3d03
movq %rax, %r12
movb $0x1, 0x55917(%rip)     # 0x64809
movq 0x18(%rbx), %rax
movq %rax, (%r12)
movl $0x25, 0x8(%r12)
movq %rbx, 0x18(%r12)
movq $0x0, 0x10(%r12)
cmpl $0x7, 0x55914(%rip)     # 0x6482c
jne 0xef5d
testb %bpl, %bpl
je 0xef85
cmpl $0x2, 0x20(%rbx)
jne 0xf145
movq 0x38(%rbx), %r13
testq %r13, %r13
jne 0xef88
movl $0x26, %edi
callq 0x589e
movl $0x4, %edi
callq 0x3110
movl $0x22b8, (%rax)         # imm = 0x22B8
movq 0x1502d(%rip), %rsi     # 0x23f80
movq %rax, %rdi
xorl %edx, %edx
callq 0x3400
testb %bpl, %bpl
je 0xf101
cmpl $0x2, 0x20(%rbx)
jne 0xf145
cmpq $0x0, 0x38(%rbx)
je 0xf101
movl $0x2a, %edi
jmp 0xf0fc
xorl %r13d, %r13d
xorl %r15d, %r15d
movq %r12, %r14
cmpq %rbx, %r13
sete %al
andb %bpl, %al
cmpb $0x1, %al
je 0xef32
movb $0x1, 0x55866(%rip)     # 0x64808
callq 0xebcc
testb %bpl, %bpl
je 0xf0a1
movq 0x55af9(%rip), %rax     # 0x64ab0
movl 0x8(%rax), %esi
movl 0x20(%r13), %edx
cmpq $0x27, %rsi
je 0xefe7
cmpl $0x26, %esi
jne 0xeffd
movl $0x27, %edi
cmpl $0x2, %edx
jne 0xf09c
cmpq $0x0, 0x18(%r13)
jne 0xf09c
jmp 0xf06e
cmpl $0x2, %edx
jne 0xf040
cmpq $0x0, 0x18(%r13)
jne 0xf06e
movl $0x27, %edi
jmp 0xf09c
cmpl $0x2f, %esi
ja 0xf034
movb $0x2f, %cl
subb %sil, %cl
movl $0x1, %esi
shlq %cl, %rsi
movabsq $0xffffffffffff, %rcx   # imm = 0xFFFFFFFFFFFF
andq %rcx, %rsi
testq %rsi, 0x557dd(%rip)     # 0x64800
je 0xf034
addl $-0x5, %edx
movl $0x27, %edi
cmpl $-0x2, %edx
jae 0xf06e
jmp 0xf09c
movl $0x27, %edi
cmpl $0x3, %edx
je 0xf06e
jmp 0xf09c
movq 0x18(%rax), %rcx
cmpl $0x2, 0x20(%rcx)
jne 0xf145
cmpq $0x0, 0x38(%rcx)
movl $0x27, %edi
jne 0xf09c
cmpl $0x3, %edx
jne 0xf09c
movl $0x25, 0x8(%rax)
movq $0x0, 0x10(%rax)
movq (%rax), %rsi
movq %rsi, 0x559a0(%rip)     # 0x64a18
testq %rsi, %rsi
je 0xf0a1
movq 0x18(%r13), %rdx
movq %rsp, %rdi
callq 0x83b2
addq $-0x8, 0xae327(%rip)    # 0xbd3b8
cmpb $0x0, (%rsp)
movl $0x28, %edi
jne 0xf0a1
callq 0x589e
movl $0x20, %edi
callq 0x3d03
movq %r15, (%rax)
movq %r15, 0x10(%rax)
movq 0x559f7(%rip), %rcx     # 0x64ab0
movq %rcx, 0x18(%rax)
movq %rax, 0x10(%r14)
testb %bpl, %bpl
je 0xf0d1
cmpl $0x0, 0x20(%r13)
je 0xf126
movq 0x28(%r13), %r13
movl 0x55755(%rip), %ecx     # 0x6482c
movq %rax, %r14
cmpl $0xe, %ecx
je 0xef8e
cmpl $0xc, %ecx
jne 0xf0f7
cmpq %rbx, %r13
setne %al
andb %al, %bpl
cmpb $0x1, %bpl
jne 0xf11a
movl $0x29, %edi
callq 0x589e
movq %r12, 0x559a8(%rip)     # 0x64ab0
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x48(%rsp), %rdi
callq 0x6e26
jmp 0xf101
leaq 0xe4ad(%rip), %rdi      # 0x1d5da
leaq 0xe480(%rip), %rsi      # 0x1d5b4
leaq 0xe5b2(%rip), %rcx      # 0x1d6ed
movl $0x2d5, %edx            # imm = 0x2D5
callq 0x3170
leaq 0xe5bf(%rip), %rdi      # 0x1d70b
leaq 0xe461(%rip), %rsi      # 0x1d5b4
leaq 0xe5c1(%rip), %rcx      # 0x1d71b
movl $0x2f1, %edx            # imm = 0x2F1
callq 0x3170
leaq 0xe5a0(%rip), %rdi      # 0x1d70b
leaq 0xe442(%rip), %rsi      # 0x1d5b4
leaq 0xe5dc(%rip), %rcx      # 0x1d755
movl $0x301, %edx            # imm = 0x301
callq 0x3170