// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: numbers_are_eqv
static bool numbers_are_eqv(s7_pointer a, s7_pointer b)
                {
                    if (type(a) != type(b)) /* (eqv? 1 1.0) -> #f! */
                        return(false);

                    switch (type(a))
                    {
                        case T_INTEGER:
                            return((integer(a) == integer(b)));

                        case T_RATIO:
                            return((numerator(a) == numerator(b)) &&
                                    (denominator(a) == denominator(b)));

                        case T_REAL:
                            if (is_NaN(real(a)))
                                return(false);
                            return(real(a) == real(b));

                        case T_COMPLEX:
                            if ((is_NaN(real_part(a))) ||
                                    (is_NaN(imag_part(a))))
                                return(false);
                            return((real_part(a) == real_part(b)) &&
                                    (imag_part(a) == imag_part(b)));

                        default:
#if WITH_GMP
                            if ((is_big_number(a)) || (is_big_number(b))) /* this can happen if (member bignum ...) -> memv */
                                return(big_numbers_are_eqv(a, b));
#endif
                            break;
                    }
                    return(false);
                }

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq 0x18(%rsp), %rax
movzbl (%rax), %eax
movq 0x10(%rsp), %rcx
movzbl (%rcx), %ecx
cmpl %ecx, %eax
je 0x3e77c
movb $0x0, 0x27(%rsp)
jmp 0x3e8d4
movq 0x18(%rsp), %rax
movzbl (%rax), %eax
addl $-0xb, %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x3, %eax
ja 0x3e8cd
movq 0x8(%rsp), %rax
leaq 0x19ff69(%rip), %rcx    # 0x1de70c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rsp), %rcx
cmpq 0x8(%rcx), %rax
sete %al
andb $0x1, %al
movb %al, 0x27(%rsp)
jmp 0x3e8d4
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x10(%rsp), %rdx
xorl %eax, %eax
cmpq 0x8(%rdx), %rcx
movb %al, 0x7(%rsp)
jne 0x3e7ff
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rsp), %rcx
cmpq 0x10(%rcx), %rax
sete %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
andb $0x1, %al
movb %al, 0x27(%rsp)
jmp 0x3e8d4
movq 0x18(%rsp), %rax
movsd 0x8(%rax), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x3e823
jmp 0x3e82d
movb $0x0, 0x27(%rsp)
jmp 0x3e8d4
movq 0x18(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0x10(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
sete %al
setnp %cl
andb %cl, %al
andb $0x1, %al
movb %al, 0x27(%rsp)
jmp 0x3e8d4
movq 0x18(%rsp), %rax
movsd 0x8(%rax), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x3e87c
movq 0x18(%rsp), %rax
movsd 0x10(%rax), %xmm0
callq 0x13860
testb $0x1, %al
jne 0x3e87c
jmp 0x3e883
movb $0x0, 0x27(%rsp)
jmp 0x3e8d4
movq 0x18(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0x10(%rsp), %rcx
xorl %eax, %eax
ucomisd 0x8(%rcx), %xmm0
movb %al, 0x6(%rsp)
jne 0x3e8c1
jp 0x3e8c1
movq 0x18(%rsp), %rax
movsd 0x10(%rax), %xmm0
movq 0x10(%rsp), %rax
ucomisd 0x10(%rax), %xmm0
sete %al
setnp %cl
andb %cl, %al
movb %al, 0x6(%rsp)
movb 0x6(%rsp), %al
andb $0x1, %al
movb %al, 0x27(%rsp)
jmp 0x3e8d4
jmp 0x3e8cf
movb $0x0, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nop