// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/llgen.c
// Function: openFunctionCall
static int openFunctionCall(FILE *f, const char* functionName, Node argList, Name returnType, Name assignTo, Name ruleName) {
	int level = 0;
	int nrParameters = argList == NULL? 0: 1;
	Boolean assignToRuleOutput = assignTo != NULL && ruleName->ruleResult != NULL && ruleName->ruleResult->returnVariable != NULL && strcmp(assignTo->name, ruleName->ruleResult->returnVariable->name) == 0;

    fputs(targetLanguage->owner, outputFile);
    targetLanguage->startFunctionCall(f, functionName, returnType == NULL || assignToRuleOutput? NULL: returnType->name, assignTo == NULL? NULL: assignTo->name);
	for (Node nPtr = argList; nPtr != NULL; nPtr = nPtr->next) {
        const char *str = (const char *) nPtr->element.name;
        /* Spaces from the input */
		for (int i = nPtr->lineNr; i != 0; i--) {
			fputc(' ', f);
		}
        if (strcmp(str, ",") == 0 && level == 0) {
            targetLanguage->nextCallParameter(f);
			nrParameters++;
        } else {
            targetLanguage->nextCallParameterSymbol(f, str);
            if (strcmp(str, "{") == 0 || strcmp(str, "(") == 0 || strcmp(str, "[") == 0) {
                level++;
            } else if (strcmp(str, "}") == 0 || strcmp(str, ")") == 0 || strcmp(str, "]") == 0) {
                level--;
            }
        }
	}
	return nrParameters;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movq -0x18(%rbp), %rdx
movl $0x1, %eax
xorl %ecx, %ecx
cmpq $0x0, %rdx
cmovel %ecx, %eax
movl %eax, -0x38(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x28(%rbp)
movb %al, -0x55(%rbp)
je 0xb101
movq -0x30(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x50(%rcx)
movb %al, -0x55(%rbp)
je 0xb101
movq -0x30(%rbp), %rax
movq 0x50(%rax), %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x55(%rbp)
je 0xb101
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movq -0x30(%rbp), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq (%rax), %rsi
callq 0x3220
cmpl $0x0, %eax
sete %al
movb %al, -0x55(%rbp)
movb -0x55(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movw %ax, -0x3a(%rbp)
movq 0x1505c(%rip), %rax     # 0x20170
movq 0x38(%rax), %rdi
movq 0x15c19(%rip), %rsi     # 0x20d38
callq 0x3100
movq 0x15045(%rip), %rax     # 0x20170
movq 0x130(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0xb156
movswl -0x3a(%rbp), %eax
cmpl $0x0, %eax
je 0xb15e
xorl %eax, %eax
movq %rax, -0x78(%rbp)
jmp 0xb169
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0xb183
xorl %eax, %eax
movq %rax, -0x88(%rbp)
jmp 0xb191
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x70(%rbp), %rax
movq -0x80(%rbp), %rdx
movq -0x60(%rbp), %rsi
movq -0x68(%rbp), %rdi
movq -0x88(%rbp), %rcx
callq *%rax
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0xb2f0
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x54(%rbp)
cmpl $0x0, -0x54(%rbp)
je 0xb1f2
movq -0x8(%rbp), %rsi
movl $0x20, %edi
callq 0x3120
movl -0x54(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0xb1d3
movq -0x50(%rbp), %rdi
leaq 0x10466(%rip), %rsi     # 0x1b663
callq 0x3220
cmpl $0x0, %eax
jne 0xb22f
cmpl $0x0, -0x34(%rbp)
jne 0xb22f
movq 0x14f5c(%rip), %rax     # 0x20170
movq 0x138(%rax), %rax
movq -0x8(%rbp), %rdi
callq *%rax
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0xb2dd
movq 0x14f3a(%rip), %rax     # 0x20170
movq 0x140(%rax), %rax
movq -0x8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq *%rax
movq -0x50(%rbp), %rdi
leaq 0x10481(%rip), %rsi     # 0x1b6d3
callq 0x3220
cmpl $0x0, %eax
je 0xb286
movq -0x50(%rbp), %rdi
leaq 0xdffa(%rip), %rsi      # 0x19261
callq 0x3220
cmpl $0x0, %eax
je 0xb286
movq -0x50(%rbp), %rdi
leaq 0x104d9(%rip), %rsi     # 0x1b755
callq 0x3220
cmpl $0x0, %eax
jne 0xb291
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0xb2db
movq -0x50(%rbp), %rdi
leaq 0xdfa7(%rip), %rsi      # 0x19243
callq 0x3220
cmpl $0x0, %eax
je 0xb2d0
movq -0x50(%rbp), %rdi
leaq 0xfd4d(%rip), %rsi      # 0x1affe
callq 0x3220
cmpl $0x0, %eax
je 0xb2d0
movq -0x50(%rbp), %rdi
leaq 0x100f6(%rip), %rsi     # 0x1b3bc
callq 0x3220
cmpl $0x0, %eax
jne 0xb2d9
movl -0x34(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0xb2db
jmp 0xb2dd
jmp 0xb2df
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0xb1b2
movl -0x38(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax)