// File: /workspace/github_c_makefile_star2_O0/aerospike[P]aerospike-common/src/main/aerospike/as_msgpack.c
// Function: as_val_cmp
msgpack_compare_t
as_val_cmp(const as_val* v1, const as_val* v2)
{
	as_val_t t1 = as_val_type(v1);
	as_val_t t2 = as_val_type(v2);

	MSGPACK_COMPARE_RET_LESS_OR_GREATER(t1, t2);

	if (t1 == AS_CMP_WILDCARD || t2 == AS_CMP_WILDCARD) {
		return MSGPACK_COMPARE_EQUAL;
	}

	switch (t1) {
	case AS_NIL:
		break;
	case AS_BOOLEAN:
		MSGPACK_COMPARE_RET_LESS_OR_GREATER(
				(unsigned int)((as_boolean*)v1)->value,
				(unsigned int)((as_boolean*)v2)->value);
		break;
	case AS_INTEGER:
		MSGPACK_COMPARE_RET_LESS_OR_GREATER(
				as_integer_get((const as_integer*)v1),
				as_integer_get((const as_integer*)v2));
		break;
	case AS_DOUBLE:
		MSGPACK_COMPARE_RET_LESS_OR_GREATER(as_double_get((const as_double*)v1),
				as_double_get((const as_double*)v2));
		break;
	case AS_STRING:
		return str_cmp(as_string_get((const as_string*)v1),
				as_string_get((const as_string*)v2));
	case AS_GEOJSON:
		return str_cmp(as_geojson_get((const as_geojson*)v1),
				as_geojson_get((const as_geojson*)v2));
	case AS_BYTES:
		return as_bytes_cmp((as_bytes*)v1, (as_bytes*)v2);
	case AS_LIST:
		return as_list_cmp((as_list*)v1, (as_list*)v2);
	case AS_MAP:
		return as_map_cmp((as_map*)v1, (as_map*)v2);
	default:
		return MSGPACK_COMPARE_ERROR;
	}

	return MSGPACK_COMPARE_EQUAL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xd2b4
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %eax
movl %eax, -0x20(%rbp)
jmp 0xd2bb
xorl %eax, %eax
movl %eax, -0x20(%rbp)
jmp 0xd2bb
movl -0x20(%rbp), %eax
movb %al, -0x19(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0xd2d5
movq -0x18(%rbp), %rax
movzbl 0x4(%rax), %eax
movl %eax, -0x24(%rbp)
jmp 0xd2dc
xorl %eax, %eax
movl %eax, -0x24(%rbp)
jmp 0xd2dc
movl -0x24(%rbp), %eax
movb %al, -0x1a(%rbp)
movzbl -0x19(%rbp), %eax
movzbl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jge 0xd2fa
movl $0x0, -0x4(%rbp)
jmp 0xd50e
movzbl -0x19(%rbp), %eax
movzbl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jle 0xd312
movl $0x2, -0x4(%rbp)
jmp 0xd50e
movzbl -0x19(%rbp), %eax
cmpl $0xd, %eax
je 0xd324
movzbl -0x1a(%rbp), %eax
cmpl $0xd, %eax
jne 0xd330
movl $0x1, -0x4(%rbp)
jmp 0xd50e
movzbl -0x19(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0xa, %eax
ja 0xd4fe
movq -0x30(%rbp), %rax
leaq 0x19d5c(%rip), %rcx     # 0x270ac
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0xd507
movq -0x10(%rbp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movq -0x18(%rbp), %rcx
movb 0x8(%rcx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jae 0xd387
movl $0x0, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movq -0x18(%rbp), %rcx
movb 0x8(%rcx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jbe 0xd3b0
movl $0x2, -0x4(%rbp)
jmp 0xd50e
jmp 0xd507
movq -0x10(%rbp), %rdi
callq 0xd520
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd520
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jge 0xd3e3
movl $0x0, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rdi
callq 0xd520
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd520
movq %rax, %rcx
movq -0x40(%rbp), %rax
cmpq %rcx, %rax
jle 0xd411
movl $0x2, -0x4(%rbp)
jmp 0xd50e
jmp 0xd507
movq -0x10(%rbp), %rdi
callq 0xd540
movsd %xmm0, -0x48(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd540
movsd -0x48(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xd444
movl $0x0, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rdi
callq 0xd540
movsd %xmm0, -0x50(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd540
movaps %xmm0, %xmm1
movsd -0x50(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xd475
movl $0x2, -0x4(%rbp)
jmp 0xd50e
jmp 0xd507
movq -0x10(%rbp), %rdi
callq 0xd5b0
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd5b0
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0xd560
movl %eax, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rdi
callq 0xd5d0
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd5d0
movq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0xd560
movl %eax, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xd5f0
movl %eax, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xd6b0
movl %eax, -0x4(%rbp)
jmp 0xd50e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xd7e0
movl %eax, -0x4(%rbp)
jmp 0xd50e
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0xd50e
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)