// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: gt_b_7pp
static inline bool gt_b_7pp(s7_scheme *sc, s7_pointer x, s7_pointer y)
    {
        if (type(x) == type(y))
        {
            if (type(x) == T_INTEGER)
                return(integer(x) > integer(y));
            if (type(x) == T_REAL)
                return(real(x) > real(y));
            if (type(x) == T_RATIO)
                return(fraction(x) > fraction(y));
        }

        switch (type(x))
        {
            case T_INTEGER:
                switch (type(y))
                {
                    case T_INTEGER:
                        return(integer(x) > integer(y));

                    case T_RATIO:
                        return(g_greater(sc, set_plist_2(sc, x, y)) != sc->F);

                    case T_REAL:
                        if (is_NaN(real(y))) return(false);
                        return(integer(x) > real(y));

                    default:
                        return(gt_out_y(sc, x, y));
                }
                break;

            case T_RATIO:
                return(g_greater(sc, set_plist_2(sc, x, y)) != sc->F);

            case T_REAL:
                switch (type(y))
                {
                    case T_INTEGER:
                        if (is_NaN(real(x))) return(false);
                        return(real(x) > integer(y));

                    case T_RATIO:
                        if (is_NaN(real(x))) return(false);
                        return(real(x) > fraction(y));

                    case T_REAL:
                        if (is_NaN(real(x))) return(false);
                        return(real(x) > real(y));

                    default:
                        return(gt_out_y(sc, x, y));
                }
                break;

            default:
                return(gt_out_x(sc, x, y));
        }
        return(true);
    }

// Assembly:
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
movzbl (%rsi), %ecx
movzbl (%rdx), %eax
cmpb %al, %cl
jne 0x89e8f
cmpl $0xd, %ecx
je 0x89f38
cmpl $0xc, %ecx
je 0x89ef8
cmpl $0xb, %ecx
jne 0x89eba
movq 0x8(%rsi), %rax
cmpq 0x8(%rdx), %rax
setg %al
jmp 0x89f45
cmpl $0xd, %ecx
je 0x89f4b
cmpl $0xc, %ecx
je 0x89ec7
cmpl $0xb, %ecx
jne 0x89eba
cmpl $0xd, %eax
je 0x89fbf
cmpl $0xc, %eax
je 0x89ec7
cmpl $0xb, %eax
je 0x89e7f
jmp 0x89f71
movq %rbx, %rdi
addq $0x40, %rsp
popq %rbx
jmp 0xb95c6
movq 0x708(%rbx), %rax
movq %rsi, 0x8(%rax)
movq 0x710(%rbx), %rax
movq %rdx, 0x8(%rax)
movq 0x708(%rbx), %rsi
movq %rbx, %rdi
callq 0x6d59d
cmpq 0x120(%rbx), %rax
setne %al
jmp 0x89f45
movq 0x8(%rsi), %rax
movq 0x10(%rsi), %rcx
movq %rax, 0x10(%rsp)
fildll 0x10(%rsp)
movq %rcx, 0x8(%rsp)
fildll 0x8(%rsp)
fdivrp %st, %st(1)
movq 0x8(%rdx), %rax
movq 0x10(%rdx), %rcx
movq %rax, 0x20(%rsp)
fildll 0x20(%rsp)
movq %rcx, 0x18(%rsp)
fildll 0x18(%rsp)
fdivrp %st, %st(1)
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
jmp 0x89f42
movsd 0x8(%rsi), %xmm0
ucomisd 0x8(%rdx), %xmm0
seta %al
addq $0x40, %rsp
popq %rbx
retq
cmpl $0xd, %eax
je 0x89fb2
cmpl $0xc, %eax
je 0x89f7e
cmpl $0xb, %eax
jne 0x89f71
movsd 0x8(%rsi), %xmm0
ucomisd %xmm0, %xmm0
jp 0x89fd9
cvtsi2sdq 0x8(%rdx), %xmm1
ucomisd %xmm1, %xmm0
jmp 0x89f42
movq %rbx, %rdi
addq $0x40, %rsp
popq %rbx
jmp 0xb94ca
movsd 0x8(%rsi), %xmm0
ucomisd %xmm0, %xmm0
jp 0x89fd9
movsd %xmm0, 0x28(%rsp)
fldl 0x28(%rsp)
movq 0x8(%rdx), %rax
movq 0x10(%rdx), %rcx
movq %rax, 0x38(%rsp)
fildll 0x38(%rsp)
movq %rcx, 0x30(%rsp)
fildll 0x30(%rsp)
jmp 0x89f2e
movsd 0x8(%rsi), %xmm0
ucomisd %xmm0, %xmm0
jnp 0x89f3d
jmp 0x89fd9
movsd 0x8(%rdx), %xmm0
ucomisd %xmm0, %xmm0
jp 0x89fd9
cvtsi2sdq 0x8(%rsi), %xmm1
ucomisd %xmm0, %xmm1
jmp 0x89f42
xorl %eax, %eax
jmp 0x89f45