// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/evaluate.c
// Function: examine_fn_arguments
static void examine_fn_arguments(struct symbol *fn)
{
	struct symbol *s;

	FOR_EACH_PTR(fn->arguments, s) {
		struct symbol *arg = evaluate_symbol(s);
		/* Array/function arguments silently degenerate into pointers */
		if (arg) {
			struct symbol *ptr;
			switch(arg->type) {
			case SYM_ARRAY:
			case SYM_FN:
				ptr = alloc_symbol(s->pos, SYM_PTR);
				if (arg->type == SYM_ARRAY)
					ptr->ctype = arg->ctype;
				else
					ptr->ctype.base_type = arg;
				combine_address_space(s->pos, &ptr->ctype.as, s->ctype.as);
				ptr->ctype.modifiers |= s->ctype.modifiers & MOD_PTRINHERIT;

				s->ctype.base_type = ptr;
				s->ctype.as = NULL;
				s->ctype.modifiers &= ~MOD_PTRINHERIT;
				s->bit_size = 0;
				s->examined = 0;
				examine_symbol_type(s);
				break;
			default:
				/* nothing */
				break;
			}
		}
	} END_FOR_EACH_PTR(s);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x4b687
jmp 0x4b824
jmp 0x4b689
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x20(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x4b80c
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x10(%rbp)
movq -0x20(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x4b6db
cmpq $0x0, -0x10(%rbp)
jne 0x4b6db
jmp 0x4b7fe
movq -0x10(%rbp), %rdi
callq 0x4f490
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x4b7fc
movq -0x38(%rbp), %rax
movzbl (%rax), %eax
addl $-0x5, %eax
subl $0x1, %eax
ja 0x4b7f8
jmp 0x4b708
movq -0x10(%rbp), %rax
movq 0x4(%rax), %rdi
movl $0x4, %esi
callq 0x3f4d0
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
andl $0xff, %eax
cmpl $0x6, %eax
jne 0x4b752
movq -0x40(%rbp), %rdi
addq $0x48, %rdi
addq $0x18, %rdi
movq -0x38(%rbp), %rsi
addq $0x48, %rsi
addq $0x18, %rsi
movl $0x28, %edx
callq 0x111d0
jmp 0x4b75e
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rsi
addq $0x48, %rsi
addq $0x18, %rsi
addq $0x20, %rsi
movq -0x10(%rbp), %rcx
movq 0x80(%rcx), %rdx
movq 0x4(%rax), %rdi
callq 0x4b5e0
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rcx
andq $0x1c001e00, %rcx       # imm = 0x1C001E00
movq -0x40(%rbp), %rax
orq 0x68(%rax), %rcx
movq %rcx, 0x68(%rax)
movq -0x40(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x80(%rax)
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rcx
andq $-0x1c001e01, %rcx      # imm = 0xE3FFE1FF
movq %rcx, 0x68(%rax)
movq -0x10(%rbp), %rax
movl $0x0, 0x50(%rax)
movq -0x10(%rbp), %rax
movl 0x54(%rax), %ecx
andl $0xfffff7ff, %ecx       # imm = 0xFFFFF7FF
orl $0x0, %ecx
movl %ecx, 0x54(%rax)
movq -0x10(%rbp), %rdi
callq 0x3f650
jmp 0x4b7fa
jmp 0x4b7fa
jmp 0x4b7fc
jmp 0x4b7fe
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x4b690
jmp 0x4b80e
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq -0x18(%rbp), %rax
jne 0x4b689
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)