// File: /workspace/github_c_makefile_star2_O1/lucvoo[P]sparse-dev/evaluate.c
// Function: evaluate_arguments
int evaluate_arguments(struct symbol_list *argtypes, struct expression_list *head)
{
	struct expression *expr;
	struct symbol *argtype;
	int i = 1;

	PREPARE_PTR_LIST(argtypes, argtype);
	FOR_EACH_PTR (head, expr) {
		struct expression **p = THIS_ADDRESS(expr);
		struct symbol *ctype, *target;
		ctype = evaluate_expression(expr);

		if (!ctype)
			return 0;

		target = argtype;
		if (!target) {
			struct symbol *type;
			int class = classify_type(ctype, &type);
			if (is_int(class)) {
				*p = cast_to(expr, integer_promotion(type));
			} else if (class & TYPE_FLOAT) {
				if (type->rank < 0)
					*p = cast_to(expr, &double_ctype);
			} else if (class & TYPE_PTR) {
				if (expr->ctype == &null_ctype)
					*p = cast_to(expr, &ptr_ctype);
				else
					degenerate(expr);
			}
		} else if (!target->forced_arg){
			static char where[30];
			examine_symbol_type(target);
			sprintf(where, "argument %d", i);
			compatible_argument_type(expr, target, p, where);
		}

		i++;
		NEXT_PTR_LIST(argtype);
	} END_FOR_EACH_PTR(expr);
	FINISH_PTR_LIST(argtype);
	return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
testq %rdi, %rdi
je 0x32912
movq %rdi, %r14
cmpb $0x0, (%r14)
jg 0x3291d
movq 0x10(%r14), %r14
cmpq %rdi, %r14
jne 0x328fe
xorl %r12d, %r12d
jmp 0x32918
xorl %r12d, %r12d
xorl %r14d, %r14d
xorl %r13d, %r13d
jmp 0x3292b
movq 0x18(%r14), %r13
andq $-0x4, %r13
movl $0x1, %r12d
testq %rsi, %rsi
je 0x32c3d
movq %rdi, 0x48(%rsp)
movl $0x1, 0x14(%rsp)
movq %rsi, %rbp
movq %rsi, 0x40(%rsp)
movzwl (%rbp), %eax
testb %al, %al
jle 0x32c20
leaq 0x18(%rbp), %rcx
movq %rcx, 0x38(%rsp)
xorl %r15d, %r15d
movq %rbp, 0x30(%rsp)
movq 0x38(%rsp), %rcx
movq (%rcx,%r15,8), %rbx
movzwl %ax, %eax
cmpl $0x100, %eax            # imm = 0x100
setb %al
testq %rbx, %rbx
setne %cl
orb %al, %cl
cmpb $0x1, %cl
jne 0x32bfc
movq %rbx, %rdi
callq 0x32c63
movq %rax, %rcx
testq %rax, %rax
je 0x32bf7
movq 0x38(%rsp), %rax
leaq (%rax,%r15,8), %rax
movq %rax, 0x8(%rsp)
testq %r13, %r13
movq %r13, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
je 0x32ab0
testb $0x2, 0x56(%r13)
jne 0x32ba9
movq 0x20(%rsp), %rbp
movq %rbp, %rdi
callq 0x2b5f4
leaq 0x5e571(%rip), %rdi     # 0x90f50
leaq 0x183a4(%rip), %rsi     # 0x4ad8a
movl 0x14(%rsp), %edx
xorl %eax, %eax
callq 0xe2c0
cmpb $0x3, (%rbp)
movq %rbp, %rax
jne 0x329fe
movq 0x60(%rbp), %rax
cmpb $0xa, (%rax)
jne 0x32a14
movq %rax, %rdi
callq 0x2b5f4
cmpb $0x3, (%rax)
jne 0x32a14
movq 0x60(%rax), %rax
cmpb $0x9, (%rax)
jne 0x32a1d
movq 0x60(%rax), %rax
cmpb $0x8, (%rax)
jne 0x32a94
testb $0x40, 0x56(%rax)
je 0x32a94
movq 0x98(%rax), %rax
movq %rax, 0x28(%rsp)
testq %rax, %rax
je 0x32a94
movq 0x28(%rsp), %r13
movzwl (%r13), %eax
testb %al, %al
jle 0x32a84
xorl %ebp, %ebp
movq 0x18(%r13,%rbp,8), %rdi
movzwl %ax, %eax
cmpl $0x100, %eax            # imm = 0x100
jb 0x32a5d
testq %rdi, %rdi
je 0x32a74
movq 0x8(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x37891
testl %eax, %eax
jne 0x32ba9
incq %rbp
movl (%r13), %eax
movsbq %al, %rcx
cmpq %rcx, %rbp
jl 0x32a49
movq 0x10(%r13), %r13
cmpq 0x28(%rsp), %r13
movq 0x20(%rsp), %rbp
jne 0x32a3e
movq %rbx, %rdi
movq %rbp, %rsi
movq 0x8(%rsp), %rdx
leaq 0x5e4aa(%rip), %rcx     # 0x90f50
callq 0x377d9
jmp 0x32ba9
cmpb $0x3, (%rcx)
jne 0x32abb
movq 0x60(%rcx), %rax
jmp 0x32abe
movq %rcx, %rax
cmpb $0xa, (%rax)
jne 0x32ad4
movq %rax, %rdi
callq 0x2b5f4
cmpb $0x3, (%rax)
jne 0x32ad4
movq 0x60(%rax), %rax
cmpb $0x9, (%rax)
jne 0x32add
movq 0x60(%rax), %rax
movzbl (%rax), %ecx
cmpq $0x2, %rcx
jne 0x32afc
movq 0x60(%rax), %rdx
cmpq 0x2e48f(%rip), %rdx     # 0x60f80
je 0x32b08
cmpq 0x2e446(%rip), %rdx     # 0x60f40
je 0x32b0f
leaq 0x1813d(%rip), %rdx     # 0x4ac40
movl (%rdx,%rcx,4), %edx
jmp 0x32b14
movl $0x1, %edx
jmp 0x32b14
movl $0x9, %edx
movl %edx, %esi
andl $0x9, %esi
cmpl $0x1, %esi
jne 0x32b4a
movq %rax, %rdx
cmpl $0xb, %ecx
jne 0x32b2a
movq 0x60(%rax), %rdx
movl 0x50(%rax), %eax
leaq 0x39c04(%rip), %rsi     # 0x6c738
leaq 0x32bcd(%rip), %rcx     # 0x65708
cmpl (%rcx), %eax
jl 0x32b99
testb $0x2, 0x57(%rdx)
jne 0x32b81
movq %rdx, %rsi
jmp 0x32b99
testb $0x8, %dl
jne 0x32b6f
testb $0x10, %dl
je 0x32ba9
leaq 0x3ae3d(%rip), %rax     # 0x6d998
cmpq %rax, 0x10(%rbx)
je 0x32c11
movq %rbx, %rdi
callq 0x33628
jmp 0x32ba9
testb $0x2, 0x57(%rax)
je 0x32ba9
movq %rbx, %rdi
leaq 0x3a719(%rip), %rsi     # 0x6d298
jmp 0x32b9c
movq 0x68(%rdx), %rax
btl $0xe, %eax
leaq 0x39d68(%rip), %rsi     # 0x6c8f8
jb 0x32b99
leaq 0x39b9f(%rip), %rsi     # 0x6c738
movq %rbx, %rdi
callq 0x334cd
movq 0x8(%rsp), %rcx
movq %rax, (%rcx)
incl 0x14(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x32bd9
movq 0x48(%rsp), %rcx
movq 0x30(%rsp), %rbp
movsbl (%r14), %eax
cmpl %eax, %r12d
jl 0x32be3
movq 0x10(%r14), %r14
xorl %r12d, %r12d
cmpq %rcx, %r14
jne 0x32bbf
xorl %r13d, %r13d
jmp 0x32bf2
xorl %r13d, %r13d
movq 0x30(%rsp), %rbp
jmp 0x32bf2
movslq %r12d, %rax
movq 0x18(%r14,%rax,8), %r13
andq $-0x4, %r13
incl %r12d
movq 0x18(%rsp), %rcx
testq %rcx, %rcx
je 0x32c36
incq %r15
movl (%rbp), %eax
movsbq %al, %rcx
cmpq %rcx, %r15
jl 0x32966
jmp 0x32c20
movq %rbx, %rdi
leaq 0x3a91d(%rip), %rsi     # 0x6d538
jmp 0x32b9c
movq 0x10(%rbp), %rbp
movq 0x40(%rsp), %rsi
cmpq %rsi, %rbp
jne 0x32949
xorl %ecx, %ecx
jmp 0x32c42
movl $0x1, %ecx
jmp 0x32c42
movl $0x6, %ecx
cmpl $0x6, %ecx
je 0x32c4b
testl %ecx, %ecx
jne 0x32c4d
xorl %ecx, %ecx
xorl %eax, %eax
testl %ecx, %ecx
sete %al
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq