// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: num_eq_p_pp
static s7_pointer num_eq_p_pp(s7_scheme *sc, s7_pointer x, s7_pointer y)
    {
#if (!MS_WINDOWS)
        if (type(x) == type(y))
        {
            if (type(x) == T_INTEGER)
                return(make_boolean(sc, integer(x) == integer(y)));
            if (type(x) == T_REAL)
                return(make_boolean(sc, real(x) == real(y)));
            if (type(x) == T_COMPLEX)
                return(make_boolean(sc, (real_part(x) == real_part(y)) && (imag_part(x) == imag_part(y))));
            if (type(x) == T_RATIO)
                return(make_boolean(sc, (numerator(x) == numerator(y)) && (denominator(x) == denominator(y))));
        }
#endif

        switch (type(x))
        {
            case T_INTEGER:
                switch (type(y))
                {
                    case T_INTEGER: return(make_boolean(sc, integer(x) == integer(y)));
                    case T_RATIO:   return(sc->F);
                    case T_REAL:    return(make_boolean(sc, integer(x) == real(y)));
                    case T_COMPLEX: return(sc->F);
                    default:
                                    return(eq_out_y(sc, x, y));
                }
                break;

            case T_RATIO:
                switch (type(y))
                {
                    case T_INTEGER: return(sc->F);
                    case T_RATIO:   return(make_boolean(sc, (numerator(x) == numerator(y)) && (denominator(x) == denominator(y))));
                    case T_REAL:    return(make_boolean(sc, fraction(x) == real(y)));            /* this could avoid the divide via numerator == denominator * x */
                    case T_COMPLEX: return(sc->F);
                    default:
                                    return(eq_out_y(sc, x, y));
                }
                break;

            case T_REAL:
                switch (type(y))
                {
                    case T_INTEGER: return(make_boolean(sc, real(x) == integer(y)));
                    case T_RATIO:   return(make_boolean(sc, real(x) == fraction(y)));
                    case T_REAL:    return(make_boolean(sc, real(x) == real(y)));
                    case T_COMPLEX: return(sc->F);
                    default:
                                    return(eq_out_y(sc, x, y));
                }
                break;

            case T_COMPLEX:
                switch (type(y))
                {
                    case T_INTEGER:
                    case T_RATIO:
                    case T_REAL:
                        return(sc->F);

#if (!MS_WINDOWS)
                    case T_COMPLEX:
                        return(make_boolean(sc, (real_part(x) == real_part(y)) && (imag_part(x) == imag_part(y))));
#else
                    case T_COMPLEX:
                        if ((real_part(x) == real_part(y)) && (imag_part(x) == imag_part(y))) return(sc->T); else return(sc->F);
#endif
                    default:
                        return(eq_out_y(sc, x, y));
                }
                break;

            default:
                return(eq_out_x(sc, x, y));
        }
        return(sc->F);
    }

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xb8(%rsp)
movq %rsi, 0xb0(%rsp)
movq %rdx, 0xa8(%rsp)
movq 0xb0(%rsp), %rax
movzbl (%rax), %eax
movq 0xa8(%rsp), %rcx
movzbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0xba7e0
movq 0xb0(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0xba66c
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0xa8(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jne 0xba640
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x80(%rsp)
jmp 0xba657
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xd, %eax
jne 0xba6d6
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
jne 0xba6b0
jp 0xba6b0
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x78(%rsp)
jmp 0xba6c4
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xe, %eax
jne 0xba75e
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
jne 0xba738
jp 0xba738
movq 0xb0(%rsp), %rax
movsd 0x10(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x10(%rax), %xmm0
jne 0xba738
jp 0xba738
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0xba74c
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xc, %eax
jne 0xba7de
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0xa8(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jne 0xba7b8
movq 0xb0(%rsp), %rax
movq 0x10(%rax), %rax
movq 0xa8(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jne 0xba7b8
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x68(%rsp)
jmp 0xba7cc
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
jmp 0xba7e0
movq 0xb0(%rsp), %rax
movzbl (%rax), %eax
addl $-0xb, %eax
movl %eax, %ecx
movq %rcx, 0x60(%rsp)
subl $0x3, %eax
ja 0xbad72
movq 0x60(%rsp), %rax
leaq 0x124732(%rip), %rcx    # 0x1def3c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xa8(%rsp), %rax
movzbl (%rax), %eax
addl $-0xb, %eax
movl %eax, %ecx
movq %rcx, 0x58(%rsp)
subl $0x3, %eax
ja 0xba92f
movq 0x58(%rsp), %rax
leaq 0x12472f(%rip), %rcx    # 0x1def6c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0xa8(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jne 0xba876
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x50(%rsp)
jmp 0xba88a
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
cvtsi2sdq 0x8(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
jne 0xba8ed
jp 0xba8ed
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x48(%rsp)
jmp 0xba901
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
callq 0x1da290
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xa8(%rsp), %rax
movzbl (%rax), %eax
addl $-0xb, %eax
movl %eax, %ecx
movq %rcx, 0x40(%rsp)
subl $0x3, %eax
ja 0xbaab7
movq 0x40(%rsp), %rax
leaq 0x1245d9(%rip), %rcx    # 0x1def5c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0xa8(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jne 0xba9f2
movq 0xb0(%rsp), %rax
movq 0x10(%rax), %rax
movq 0xa8(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jne 0xba9f2
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x38(%rsp)
jmp 0xbaa06
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x10(%rax), %rax
movq %rcx, 0x90(%rsp)
fildll 0x90(%rsp)
movq %rax, 0x88(%rsp)
fildll 0x88(%rsp)
fdivrp %st, %st(1)
movq 0xa8(%rsp), %rax
fldl 0x8(%rax)
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
jne 0xbaa75
jp 0xbaa75
jmp 0xbaa5f
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x30(%rsp)
jmp 0xbaa89
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
callq 0x1da290
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xa8(%rsp), %rax
movzbl (%rax), %eax
addl $-0xb, %eax
movl %eax, %ecx
movq %rcx, 0x28(%rsp)
subl $0x3, %eax
ja 0xbac6c
movq 0x28(%rsp), %rax
leaq 0x124441(%rip), %rcx    # 0x1def4c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0xa8(%rsp), %rax
cvtsi2sdq 0x8(%rax), %xmm1
ucomisd %xmm1, %xmm0
jne 0xbab4d
jp 0xbab4d
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0xbab61
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
fldl 0x8(%rax)
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x10(%rax), %rax
movq %rcx, 0xa0(%rsp)
fildll 0xa0(%rsp)
movq %rax, 0x98(%rsp)
fildll 0x98(%rsp)
fdivrp %st, %st(1)
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
jne 0xbabd0
jp 0xbabd0
jmp 0xbabba
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0xbabe4
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
jne 0xbac2a
jp 0xbac2a
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0xbac3e
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
callq 0x1da290
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xa8(%rsp), %rax
movzbl (%rax), %eax
movl %eax, 0xc(%rsp)
addl $-0xb, %eax
subl $0x3, %eax
jb 0xbacbd
jmp 0xbacaf
movl 0xc(%rsp), %eax
subl $0xe, %eax
je 0xbacd9
jmp 0xbad4b
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
jne 0xbad2a
jp 0xbad2a
movq 0xb0(%rsp), %rax
movsd 0x10(%rax), %xmm0
movq 0xa8(%rsp), %rax
ucomisd 0x10(%rax), %xmm0
jne 0xbad2a
jp 0xbad2a
movq 0xb8(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, (%rsp)
jmp 0xbad3d
movq 0xb8(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
callq 0x1da290
movq %rax, 0xc0(%rsp)
jmp 0xbad97
movq 0xb8(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
callq 0x173860
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
addq $0xc8, %rsp
retq
nopw (%rax,%rax)