// File: /workspace/github_c_makefile_star2_O0/mbitsnbites[P]SoftFP/softfloat.c
// Function: floatx80_compare_internal
static inline int floatx80_compare_internal(floatx80 a, floatx80 b,
                                            int is_quiet, float_status *status)
{
    flag aSign, bSign;

    if (( ( extractFloatx80Exp( a ) == 0x7fff ) &&
          ( extractFloatx80Frac( a )<<1 ) ) ||
        ( ( extractFloatx80Exp( b ) == 0x7fff ) &&
          ( extractFloatx80Frac( b )<<1 ) )) {
        if (!is_quiet ||
            floatx80_is_signaling_nan( a ) ||
            floatx80_is_signaling_nan( b ) ) {
            float_raise(float_flag_invalid, status);
        }
        return float_relation_unordered;
    }
    aSign = extractFloatx80Sign( a );
    bSign = extractFloatx80Sign( b );
    if ( aSign != bSign ) {

        if ( ( ( (uint16_t) ( ( a.high | b.high ) << 1 ) ) == 0) &&
             ( ( a.low | b.low ) == 0 ) ) {
            /* zero case */
            return float_relation_equal;
        } else {
            return 1 - (2 * aSign);
        }
    } else {
        if (a.low == b.low && a.high == b.high) {
            return float_relation_equal;
        } else {
            return 1 - 2 * (aSign ^ ( lt128( a.high, a.low, b.high, b.low ) ));
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movw %cx, %ax
movw %si, %cx
movq %rdi, -0x18(%rbp)
movw %cx, -0x10(%rbp)
movq %rdx, -0x28(%rbp)
movw %ax, -0x20(%rbp)
movl %r8d, -0x2c(%rbp)
movq %r9, -0x38(%rbp)
movq -0x18(%rbp), %rdi
movzwl -0x10(%rbp), %esi
callq 0x1ab50
cmpl $0x7fff, %eax           # imm = 0x7FFF
jne 0x23100
movq -0x18(%rbp), %rdi
movzwl -0x10(%rbp), %esi
callq 0x1ab30
shlq %rax
cmpq $0x0, %rax
jne 0x2312a
movq -0x28(%rbp), %rdi
movzwl -0x20(%rbp), %esi
callq 0x1ab50
cmpl $0x7fff, %eax           # imm = 0x7FFF
jne 0x2316e
movq -0x28(%rbp), %rdi
movzwl -0x20(%rbp), %esi
callq 0x1ab30
shlq %rax
cmpq $0x0, %rax
je 0x2316e
cmpl $0x0, -0x2c(%rbp)
je 0x23154
movq -0x18(%rbp), %rdi
movzwl -0x10(%rbp), %esi
callq 0x11360
cmpl $0x0, %eax
jne 0x23154
movq -0x28(%rbp), %rdi
movzwl -0x20(%rbp), %esi
callq 0x11360
cmpl $0x0, %eax
je 0x23162
movq -0x38(%rbp), %rsi
movl $0x1, %edi
callq 0x11080
movl $0x2, -0x4(%rbp)
jmp 0x2322a
movq -0x18(%rbp), %rdi
movzwl -0x10(%rbp), %esi
callq 0x1ab70
movb %al, -0x39(%rbp)
movq -0x28(%rbp), %rdi
movzwl -0x20(%rbp), %esi
callq 0x1ab70
movb %al, -0x3a(%rbp)
movzbl -0x39(%rbp), %eax
movzbl -0x3a(%rbp), %ecx
cmpl %ecx, %eax
je 0x231d7
movzwl -0x10(%rbp), %eax
movzwl -0x20(%rbp), %ecx
orl %ecx, %eax
shll %eax
movzwl %ax, %eax
cmpl $0x0, %eax
jne 0x231c5
movq -0x18(%rbp), %rax
orq -0x28(%rbp), %rax
cmpq $0x0, %rax
jne 0x231c5
movl $0x0, -0x4(%rbp)
jmp 0x2322a
movzbl -0x39(%rbp), %ecx
shll %ecx
movl $0x1, %eax
subl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x2322a
movq -0x18(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x231f6
movzwl -0x10(%rbp), %eax
movzwl -0x20(%rbp), %ecx
cmpl %ecx, %eax
jne 0x231f6
movl $0x0, -0x4(%rbp)
jmp 0x2322a
movzbl -0x39(%rbp), %eax
movl %eax, -0x40(%rbp)
movzwl -0x10(%rbp), %eax
movl %eax, %edi
movq -0x18(%rbp), %rsi
movzwl -0x20(%rbp), %eax
movl %eax, %edx
movq -0x28(%rbp), %rcx
callq 0x19d70
movl -0x40(%rbp), %ecx
movzbl %al, %eax
xorl %eax, %ecx
shll %ecx
movl $0x1, %eax
subl %ecx, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)