// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_spect_compare.c
// Function: bcore_compare_num_dominant_sr
s2_t bcore_compare_num_dominant_sr( sr_s sr_a, sr_s sr_b )
{
    if( sr_s_is_numeric( &sr_a ) && sr_s_is_numeric( &sr_b ) && sr_a.o && sr_b.o )
    {
        s2_t c = 0;
        if( sr_s_is_float( &sr_a ) || sr_s_is_float( &sr_b ) )
        {
            f3_t fa = sr_s_to_f3( &sr_a );
            f3_t fb = sr_s_to_f3( &sr_b );
            c = ( fa == fb ) ? 0 : ( fa < fb ) ? 1 : -1;
        }
        else if( sr_s_is_unsigned( &sr_a ) )
        {
            u3_t ua = sr_s_to_u3( &sr_a );
            if( sr_s_is_unsigned( &sr_b ) )
            {
                u3_t ub = sr_s_to_u3( &sr_b );
                c = ( ua == ub ) ? 0 : ( ua < ub ) ? 1 : -1;
            }
            else
            {
                s3_t sb = sr_s_to_s3( &sr_b );
                c = ( ua == sb ) ? 0 : ( ua < sb ) ? 1 : -1;
            }
        }
        else
        {
            s3_t sa = sr_s_to_s3( &sr_a );
            if( sr_s_is_unsigned( &sr_b ) )
            {
                u3_t ub = sr_s_to_u3( &sr_b );
                c = ( sa == ub ) ? 0 : ( sa < ub ) ? 1 : -1;
            }
            else
            {
                s3_t sb = sr_s_to_s3( &sr_b );
                c = ( sa == sb ) ? 0 : ( sa < sb ) ? 1 : -1;
            }
        }
        sr_down( sr_a );
        sr_down( sr_b );
        return c;
    }
    else
    {
        if( sr_s_type( &sr_a ) != sr_s_type( &sr_b ) ) return ( sr_s_type( &sr_a ) < sr_s_type( &sr_b ) ) ? 1 : -1;
        if( sr_s_type( &sr_a ) == 0 ) return 0;
        s2_t c = bcore_compare_num_dominant_typed( sr_s_type( &sr_a ), sr_a.o, sr_b.o );
        sr_down( sr_a );
        sr_down( sr_b );
        return c;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
leaq 0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x10(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0xfc220
testb $0x1, %al
jne 0xdfb69
jmp 0xdfdb6
movq -0x60(%rbp), %rdi
callq 0xfc220
testb $0x1, %al
jne 0xdfb7b
jmp 0xdfdb6
movq -0x58(%rbp), %rax
cmpq $0x0, (%rax)
je 0xdfdb6
movq -0x60(%rbp), %rax
cmpq $0x0, (%rax)
je 0xdfdb6
movq -0x58(%rbp), %rdi
movl $0x0, -0x8(%rbp)
callq 0xfc2a0
testb $0x1, %al
jne 0xdfbba
movq -0x60(%rbp), %rdi
callq 0xfc2a0
testb $0x1, %al
jne 0xdfbba
jmp 0xdfc14
movq -0x58(%rbp), %rdi
callq 0xfc680
movq -0x60(%rbp), %rdi
movsd %xmm0, -0x10(%rbp)
callq 0xfc680
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
ucomisd -0x18(%rbp), %xmm0
jne 0xdfbeb
jp 0xdfbeb
xorl %eax, %eax
movl %eax, -0x64(%rbp)
jmp 0xdfc09
movsd -0x10(%rbp), %xmm1
movsd -0x18(%rbp), %xmm0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x1, %ecx
ucomisd %xmm1, %xmm0
cmoval %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0xdfd67
movq -0x58(%rbp), %rdi
callq 0xfc300
testb $0x1, %al
jne 0xdfc26
jmp 0xdfcc7
movq -0x58(%rbp), %rdi
callq 0xfcab0
movq -0x60(%rbp), %rdi
movq %rax, -0x20(%rbp)
callq 0xfc300
testb $0x1, %al
jne 0xdfc42
jmp 0xdfc83
movq -0x60(%rbp), %rdi
callq 0xfcab0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0xdfc60
xorl %eax, %eax
movl %eax, -0x68(%rbp)
jmp 0xdfc7b
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rsi
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0xdfcc2
movq -0x60(%rbp), %rdi
callq 0xfce10
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0xdfca1
xorl %eax, %eax
movl %eax, -0x6c(%rbp)
jmp 0xdfcbc
movq -0x20(%rbp), %rdx
movq -0x30(%rbp), %rsi
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0xdfd65
movq -0x58(%rbp), %rdi
callq 0xfce10
movq -0x60(%rbp), %rdi
movq %rax, -0x38(%rbp)
callq 0xfc300
testb $0x1, %al
jne 0xdfce3
jmp 0xdfd24
movq -0x60(%rbp), %rdi
callq 0xfcab0
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x40(%rbp), %rax
jne 0xdfd01
xorl %eax, %eax
movl %eax, -0x70(%rbp)
jmp 0xdfd1c
movq -0x38(%rbp), %rdx
movq -0x40(%rbp), %rsi
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0xdfd63
movq -0x60(%rbp), %rdi
callq 0xfce10
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x48(%rbp), %rax
jne 0xdfd42
xorl %eax, %eax
movl %eax, -0x74(%rbp)
jmp 0xdfd5d
movq -0x38(%rbp), %rdx
movq -0x48(%rbp), %rsi
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovll %ecx, %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0xdfd65
jmp 0xdfd67
movq -0x58(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xdfaf0
movq -0x60(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xdfaf0
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xdfe99
movq -0x58(%rbp), %rdi
callq 0xdfad0
movq -0x60(%rbp), %rdi
movq %rax, -0x80(%rbp)
callq 0xdfad0
movq %rax, %rcx
movq -0x80(%rbp), %rax
cmpq %rcx, %rax
je 0xdfe13
movq -0x58(%rbp), %rdi
callq 0xdfad0
movq -0x60(%rbp), %rdi
movq %rax, -0x88(%rbp)
callq 0xdfad0
movq -0x88(%rbp), %rdx
movq %rax, %rsi
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0xdfe99
movq -0x58(%rbp), %rdi
callq 0xdfad0
cmpq $0x0, %rax
jne 0xdfe2b
movl $0x0, -0x4(%rbp)
jmp 0xdfe99
movq -0x58(%rbp), %rdi
callq 0xdfad0
movq -0x58(%rbp), %rcx
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq (%rcx), %rsi
movq (%rax), %rdx
callq 0xdf990
movl %eax, %ecx
movq -0x58(%rbp), %rax
movl %ecx, -0x4c(%rbp)
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xdfaf0
movq -0x60(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xdfaf0
movl -0x4c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)