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

    if (( ( extractFloat128Exp( a ) == 0x7fff ) &&
          ( extractFloat128Frac0( a ) | extractFloat128Frac1( a ) ) ) ||
        ( ( extractFloat128Exp( b ) == 0x7fff ) &&
          ( extractFloat128Frac0( b ) | extractFloat128Frac1( b ) ) )) {
        if (!is_quiet ||
            float128_is_signaling_nan( a ) ||
            float128_is_signaling_nan( b ) ) {
            float_raise(float_flag_invalid, status);
        }
        return float_relation_unordered;
    }
    aSign = extractFloat128Sign( a );
    bSign = extractFloat128Sign( b );
    if ( aSign != bSign ) {
        if ( ( ( ( a.high | b.high )<<1 ) | 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 $0x60, %rsp
movq %rdi, -0x18(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x28(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x2c(%rbp)
movq %r9, -0x38(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e450
cmpl $0x7fff, %eax           # imm = 0x7FFF
jne 0x23332
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e430
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e410
movq %rax, %rcx
movq -0x48(%rbp), %rax
orq %rcx, %rax
cmpq $0x0, %rax
jne 0x23374
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1e450
cmpl $0x7fff, %eax           # imm = 0x7FFF
jne 0x233b8
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1e430
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1e410
movq %rax, %rcx
movq -0x50(%rbp), %rax
orq %rcx, %rax
cmpq $0x0, %rax
je 0x233b8
cmpl $0x0, -0x2c(%rbp)
je 0x2339e
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x114a0
cmpl $0x0, %eax
jne 0x2339e
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x114a0
cmpl $0x0, %eax
je 0x233ac
movq -0x38(%rbp), %rsi
movl $0x1, %edi
callq 0x11080
movl $0x2, -0x4(%rbp)
jmp 0x23465
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e470
movb %al, -0x39(%rbp)
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1e470
movb %al, -0x3a(%rbp)
movzbl -0x39(%rbp), %eax
movzbl -0x3a(%rbp), %ecx
cmpl %ecx, %eax
je 0x23418
movq -0x10(%rbp), %rax
orq -0x20(%rbp), %rax
shlq %rax
orq -0x18(%rbp), %rax
orq -0x28(%rbp), %rax
cmpq $0x0, %rax
jne 0x23406
movl $0x0, -0x4(%rbp)
jmp 0x23465
movzbl -0x39(%rbp), %ecx
shll %ecx
movl $0x1, %eax
subl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x23465
movq -0x18(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x23435
movq -0x10(%rbp), %rax
cmpq -0x20(%rbp), %rax
jne 0x23435
movl $0x0, -0x4(%rbp)
jmp 0x23465
movzbl -0x39(%rbp), %eax
movl %eax, -0x54(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x19d70
movl -0x54(%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 $0x60, %rsp
popq %rbp
retq
nop