// File: /workspace/github_c_makefile_star2_O0/goodpaul6[P]generic/script.c
// Function: compare_values
static char compare_values(script_value_t* a, script_value_t* b)
{
	if(a->type != b->type) return 0;
	switch(a->type)
	{
		case VAL_NATIVE: return a->nat.value == b->nat.value;
		case VAL_BOOL: return a->boolean == b->boolean;
		case VAL_CHAR: return a->code == b->code;
		case VAL_NUMBER: return a->number == b->number;
		case VAL_STRING: return strcmp(a->string.data, b->string.data) == 0;
		case VAL_NULL: return 1;
		case VAL_FUNC: return (a->function.is_extern == b->function.is_extern) && (a->function.index == b->function.index);
		case VAL_ARRAY:
		{
			int min_index = (int)(a->array.length < b->array.length ? a->array.length : b->array.length);
			for(int i = 0; i < min_index; ++i)
			{
				if(!compare_values(vec_get_value(&a->array, i, script_value_t*), vec_get_value(&b->array, i, script_value_t*)))
					return 0;
			}
			
			return 1;
		} break;
		case VAL_STRUCT_INSTANCE:
		{
			if(a->ds.members.length != b->ds.members.length) return 0;
			for(int i = 0; i < a->ds.members.length; ++i)
			{
				if(!compare_values(vec_get_value(&a->ds.members, i, script_value_t*), vec_get_value(&b->ds.members, i, script_value_t*)))
					return 0;
			}
			
			return 1;
		} break;
	}
	
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xc(%rcx), %eax
je 0x110a9
movb $0x0, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
movq %rax, -0x30(%rbp)
subq $0x8, %rax
ja 0x112e4
movq -0x30(%rbp), %rax
leaq 0x262b(%rip), %rcx      # 0x136f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x20(%rcx), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movb %al, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movsbl 0x20(%rax), %eax
movq -0x18(%rbp), %rcx
movsbl 0x20(%rcx), %ecx
cmpl %ecx, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movb %al, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movsbl 0x20(%rax), %eax
movq -0x18(%rbp), %rcx
movsbl 0x20(%rcx), %ecx
cmpl %ecx, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movb %al, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
movq -0x18(%rbp), %rax
ucomisd 0x20(%rax), %xmm0
sete %al
setnp %cl
andb %cl, %al
andb $0x1, %al
movzbl %al, %eax
movb %al, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x2130
cmpl $0x0, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movb %al, -0x1(%rbp)
jmp 0x112e8
movb $0x1, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movsbl 0x20(%rax), %ecx
movq -0x18(%rbp), %rax
movsbl 0x20(%rax), %edx
xorl %eax, %eax
cmpl %edx, %ecx
movb %al, -0x31(%rbp)
jne 0x111bb
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x24(%rcx), %eax
sete %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x30(%rcx), %rax
jae 0x111eb
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x111f7
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movl %eax, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x1125c
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
movslq -0x20(%rbp), %rsi
callq 0x11890
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
addq $0x20, %rdi
movslq -0x20(%rbp), %rsi
callq 0x11890
movq -0x48(%rbp), %rdi
movq (%rax), %rsi
callq 0x11080
cmpb $0x0, %al
jne 0x1124f
movb $0x0, -0x1(%rbp)
jmp 0x112e8
jmp 0x11251
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x11205
movb $0x1, -0x1(%rbp)
jmp 0x112e8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x30(%rcx), %rax
je 0x1127d
movb $0x0, -0x1(%rbp)
jmp 0x112e8
movl $0x0, -0x24(%rbp)
movslq -0x24(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x30(%rcx), %rax
jae 0x112de
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
movslq -0x24(%rbp), %rsi
callq 0x11890
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rdi
addq $0x20, %rdi
movslq -0x24(%rbp), %rsi
callq 0x11890
movq -0x50(%rbp), %rdi
movq (%rax), %rsi
callq 0x11080
cmpb $0x0, %al
jne 0x112d1
movb $0x0, -0x1(%rbp)
jmp 0x112e8
jmp 0x112d3
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x11284
movb $0x1, -0x1(%rbp)
jmp 0x112e8
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)