// File: /workspace/github_cpp_makefile_star2_O3/Mariotti94[P]BigFloat/BigFloat.cc
// Function: BigFloat::CompareNum(BigFloat const&, BigFloat const&)
int BigFloat::CompareNum(const BigFloat& left, const BigFloat& right)
{
    if((left.number.size() - left.decimals) > (right.number.size() - right.decimals))
        return 1;
    else if((left.number.size() - left.decimals) < (right.number.size() - right.decimals))
        return 2;

    if(left.decimals > right.decimals) {
        BigFloat tmp;
        tmp = right;
        while(left.decimals > tmp.decimals) {
            tmp.decimals++;
            tmp.number.push_front('0');
        }

        for(int i = left.number.size() - 1; i >= 0; i--) {
            if(left.number[i] > tmp.number[i])
                return 1;
            else if(left.number[i] < tmp.number[i])
                return 2;
        }
        return 0;
    }
    else if(left.decimals < right.decimals) {
        BigFloat tmp;
        tmp = left;
        while(tmp.decimals < right.decimals) {
            tmp.decimals++;
            tmp.number.push_front('0');
        }

        for(int i = tmp.number.size() - 1; i >= 0; i--) {
            if(tmp.number[i] > right.number[i])
                return 1;
            else if(tmp.number[i] < right.number[i])
                return 2;
        }
        return 0;
    }
    else {
        for(int i = left.number.size() - 1; i >= 0; i--) {
            if(left.number[i] > right.number[i])
                return 1;
            else if(left.number[i] < right.number[i])
                return 2;
        }
        return 0;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rsi, %r15
movq %rdi, %r14
movq 0x50(%rdi), %rdx
movq 0x30(%rdi), %rax
movq %rdx, %rcx
movq %rax, 0x20(%rsp)
subq %rax, %rcx
shrq $0x3, %rcx
cmpq $0x1, %rdx
adcq $-0x1, %rcx
shlq $0x9, %rcx
movq 0x38(%rdi), %rdx
movq 0x40(%rdi), %r10
movq 0x18(%rdi), %rax
movq 0x28(%rdi), %r8
movq %rdx, %r11
subq %r10, %r11
addq %r8, %r11
addq %rcx, %r11
movslq 0x58(%rdi), %r9
movq %rax, 0x18(%rsp)
subq %rax, %r11
subq %r9, %r11
movq 0x50(%r15), %rsi
movq 0x18(%r15), %r12
movq 0x30(%r15), %rax
movq %rsi, %rbx
movq %rax, 0x10(%rsp)
subq %rax, %rbx
shrq $0x3, %rbx
cmpq $0x1, %rsi
adcq $-0x1, %rbx
shlq $0x9, %rbx
movq 0x38(%r15), %rax
subq 0x40(%r15), %rax
movslq 0x58(%r15), %rsi
addq 0x28(%r15), %rax
addq %rbx, %rax
movq %r12, %rdi
subq %r12, %rax
subq %rsi, %rax
leaq 0x8(%r14), %r12
leaq 0x58(%r14), %rbx
leaq 0x8(%r15), %r13
leaq 0x58(%r15), %rbp
cmpq %rax, %r11
jbe 0x2f2b
movl $0x1, %ebx
jmp 0x34a9
jae 0x2f37
movl $0x2, %ebx
jmp 0x34a9
cmpl %esi, %r9d
jle 0x3130
leaq 0x28(%rsp), %r12
movq %r12, %rdi
callq 0x27f8
movb (%r15), %al
movb %al, (%r12)
leaq 0x30(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x9c0c
movb 0x4(%rbp), %al
leaq 0x88(%rsp), %rdi
movb %al, -0x4(%rdi)
movl (%rbp), %eax
movl %eax, -0x8(%rdi)
addq $0x60, %r15
movq %r15, %rsi
callq 0x20a0
movl 0x80(%rsp), %eax
cmpl %eax, (%rbx)
jle 0x2fcf
leaq 0xf(%rsp), %r15
incl %eax
movl %eax, 0x80(%rsp)
movb $0x30, 0xf(%rsp)
movq 0x40(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x2fb9
movb $0x30, -0x1(%rax)
decq 0x40(%rsp)
jmp 0x2fc4
movq %r12, %rdi
movq %r15, %rsi
callq 0xb5ba
movl 0x80(%rsp), %eax
cmpl %eax, (%rbx)
jg 0x2f94
movq 0x50(%r14), %rdx
movq 0x18(%r14), %rax
movq 0x30(%r14), %rcx
movl %edx, %r10d
subl %ecx, %r10d
shrl $0x3, %r10d
cmpq $0x1, %rdx
adcl $-0x1, %r10d
shll $0x9, %r10d
movl 0x38(%r14), %edx
movq %rax, %rsi
subq 0x20(%r14), %rsi
movq 0x40(%rsp), %rdi
movq %rdi, %r8
subq 0x48(%rsp), %r8
movq 0x58(%rsp), %r9
addl 0x28(%r14), %edx
addl %r10d, %edx
movl 0x40(%r14), %r10d
addl %eax, %r10d
subl %r10d, %edx
decq %rdx
testl %edx, %edx
js 0x345a
movl %edx, %r11d
andl $0x7fffffff, %r11d      # imm = 0x7FFFFFFF
movq %rsi, %r10
addq %r11, %r10
js 0x304b
cmpq $0x1ff, %r10            # imm = 0x1FF
ja 0x3054
leaq (%rax,%r11), %r14
jmp 0x306c
movq %r10, %rbx
sarq $0x9, %rbx
jmp 0x305b
movq %r10, %rbx
shrq $0x9, %rbx
movq %rbx, %r15
shlq $0x9, %r15
movq %r10, %r14
subq %r15, %r14
addq (%rcx,%rbx,8), %r14
movq %r8, %rbx
addq %r11, %rbx
js 0x3083
cmpq $0x1ff, %rbx            # imm = 0x1FF
ja 0x308c
leaq (%rdi,%r11), %r13
jmp 0x30a4
movq %rbx, %r15
sarq $0x9, %r15
jmp 0x3093
movq %rbx, %r15
shrq $0x9, %r15
movq %r15, %rbp
shlq $0x9, %rbp
movq %rbx, %r13
subq %rbp, %r13
addq (%r9,%r15,8), %r13
movb (%r14), %bpl
cmpb (%r13), %bpl
jg 0x345e
testq %r10, %r10
js 0x30c5
cmpq $0x1ff, %r10            # imm = 0x1FF
ja 0x30ce
leaq (%rax,%r11), %r10
jmp 0x30e3
movq %r10, %r14
sarq $0x9, %r14
jmp 0x30d5
movq %r10, %r14
shrq $0x9, %r14
movq %r14, %r15
shlq $0x9, %r15
subq %r15, %r10
addq (%rcx,%r14,8), %r10
testq %rbx, %rbx
js 0x30f9
cmpq $0x1ff, %rbx            # imm = 0x1FF
ja 0x3102
addq %rdi, %r11
movq %r11, %rbx
jmp 0x3117
movq %rbx, %r11
sarq $0x9, %r11
jmp 0x3109
movq %rbx, %r11
shrq $0x9, %r11
movq %r11, %r14
shlq $0x9, %r14
subq %r14, %rbx
addq (%r9,%r11,8), %rbx
movb (%r10), %r10b
decq %rdx
cmpb (%rbx), %r10b
jge 0x3022
movl $0x2, %ebx
jmp 0x3463
jge 0x3329
leaq 0x28(%rsp), %r13
movq %r13, %rdi
callq 0x27f8
movb (%r14), %al
movb %al, (%r13)
leaq 0x30(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x9c0c
movb 0x4(%rbx), %al
leaq 0x88(%rsp), %rdi
movb %al, -0x4(%rdi)
movl (%rbx), %eax
movl %eax, -0x8(%rdi)
addq $0x60, %r14
movq %r14, %rsi
callq 0x20a0
movl 0x80(%rsp), %eax
cmpl (%rbp), %eax
jge 0x31c6
leaq 0xf(%rsp), %r14
incl %eax
movl %eax, 0x80(%rsp)
movb $0x30, 0xf(%rsp)
movq 0x40(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x31af
movb $0x30, -0x1(%rax)
decq 0x40(%rsp)
jmp 0x31ba
movq %r13, %rdi
movq %r14, %rsi
callq 0xb5ba
movl 0x80(%rsp), %eax
cmpl (%rbp), %eax
jl 0x318a
movq 0x78(%rsp), %rdx
movq 0x40(%rsp), %rax
movq 0x58(%rsp), %rcx
movl %edx, %r10d
subl %ecx, %r10d
shrl $0x3, %r10d
cmpq $0x1, %rdx
adcl $-0x1, %r10d
shll $0x9, %r10d
movl 0x60(%rsp), %edx
movq %rax, %rsi
subq 0x48(%rsp), %rsi
movq 0x18(%r15), %rdi
movq %rdi, %r8
subq 0x20(%r15), %r8
movq 0x30(%r15), %r9
addl 0x50(%rsp), %edx
addl %r10d, %edx
movl 0x68(%rsp), %r10d
addl %eax, %r10d
subl %r10d, %edx
decq %rdx
testl %edx, %edx
js 0x3482
movl %edx, %r11d
andl $0x7fffffff, %r11d      # imm = 0x7FFFFFFF
movq %rsi, %r10
addq %r11, %r10
js 0x3244
cmpq $0x1ff, %r10            # imm = 0x1FF
ja 0x324d
leaq (%rax,%r11), %r14
jmp 0x3265
movq %r10, %rbx
sarq $0x9, %rbx
jmp 0x3254
movq %r10, %rbx
shrq $0x9, %rbx
movq %rbx, %r15
shlq $0x9, %r15
movq %r10, %r14
subq %r15, %r14
addq (%rcx,%rbx,8), %r14
movq %r8, %rbx
addq %r11, %rbx
js 0x327c
cmpq $0x1ff, %rbx            # imm = 0x1FF
ja 0x3285
leaq (%rdi,%r11), %r12
jmp 0x329d
movq %rbx, %r15
sarq $0x9, %r15
jmp 0x328c
movq %rbx, %r15
shrq $0x9, %r15
movq %r15, %rbp
shlq $0x9, %rbp
movq %rbx, %r12
subq %rbp, %r12
addq (%r9,%r15,8), %r12
movb (%r14), %bpl
cmpb (%r12), %bpl
jg 0x3486
testq %r10, %r10
js 0x32be
cmpq $0x1ff, %r10            # imm = 0x1FF
ja 0x32c7
leaq (%rax,%r11), %r10
jmp 0x32dc
movq %r10, %r14
sarq $0x9, %r14
jmp 0x32ce
movq %r10, %r14
shrq $0x9, %r14
movq %r14, %r15
shlq $0x9, %r15
subq %r15, %r10
addq (%rcx,%r14,8), %r10
testq %rbx, %rbx
js 0x32f2
cmpq $0x1ff, %rbx            # imm = 0x1FF
ja 0x32fb
addq %rdi, %r11
movq %r11, %rbx
jmp 0x3310
movq %rbx, %r11
sarq $0x9, %r11
jmp 0x3302
movq %rbx, %r11
shrq $0x9, %r11
movq %r11, %r14
shlq $0x9, %r14
subq %r14, %rbx
addq (%r9,%r11,8), %rbx
movb (%r10), %r10b
decq %rdx
cmpb (%rbx), %r10b
jge 0x321b
movl $0x2, %ebx
jmp 0x348b
movq 0x18(%rsp), %r13
movq %r13, %r12
subq 0x20(%r14), %r12
movq %rdi, %r9
subq 0x20(%r15), %r9
addl %r8d, %edx
addl %edx, %ecx
addl %r13d, %r10d
subl %r10d, %ecx
decq %rcx
movq 0x20(%rsp), %r14
movq 0x10(%rsp), %r15
testl %ecx, %ecx
js 0x347e
movl %ecx, %r11d
andl $0x7fffffff, %r11d      # imm = 0x7FFFFFFF
movq %r12, %r10
addq %r11, %r10
js 0x337d
cmpq $0x1ff, %r10            # imm = 0x1FF
ja 0x3386
leaq (%r11,%r13), %rdx
jmp 0x339e
movq %r10, %rsi
sarq $0x9, %rsi
jmp 0x338d
movq %r10, %rsi
shrq $0x9, %rsi
movq %rsi, %rax
shlq $0x9, %rax
movq %r10, %rdx
subq %rax, %rdx
addq (%r14,%rsi,8), %rdx
movq %r9, %rbx
addq %r11, %rbx
js 0x33b5
cmpq $0x1ff, %rbx            # imm = 0x1FF
ja 0x33be
leaq (%rdi,%r11), %r8
jmp 0x33d6
movq %rbx, %rsi
sarq $0x9, %rsi
jmp 0x33c5
movq %rbx, %rsi
shrq $0x9, %rsi
movq %rsi, %rax
shlq $0x9, %rax
movq %rbx, %r8
subq %rax, %r8
addq (%r15,%rsi,8), %r8
movb (%rdx), %al
cmpb (%r8), %al
jg 0x2f21
testq %r10, %r10
js 0x33f5
cmpq $0x1ff, %r10            # imm = 0x1FF
ja 0x33fe
leaq (%r11,%r13), %r10
jmp 0x3413
movq %r10, %rdx
sarq $0x9, %rdx
jmp 0x3405
movq %r10, %rdx
shrq $0x9, %rdx
movq %rdx, %rax
shlq $0x9, %rax
subq %rax, %r10
addq (%r14,%rdx,8), %r10
testq %rbx, %rbx
js 0x3429
cmpq $0x1ff, %rbx            # imm = 0x1FF
ja 0x3432
addq %rdi, %r11
movq %r11, %rbx
jmp 0x3447
movq %rbx, %rdx
sarq $0x9, %rdx
jmp 0x3439
movq %rbx, %rdx
shrq $0x9, %rdx
movq %rdx, %rax
shlq $0x9, %rax
subq %rax, %rbx
addq (%r15,%rdx,8), %rbx
movb (%r10), %al
decq %rcx
cmpb (%rbx), %al
jge 0x3354
jmp 0x2f2d
xorl %ebx, %ebx
jmp 0x3463
movl $0x1, %ebx
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3479
callq 0x2120
movq %r12, %rdi
jmp 0x34a4
xorl %ebx, %ebx
jmp 0x34a9
xorl %ebx, %ebx
jmp 0x348b
movl $0x1, %ebx
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34a1
callq 0x2120
movq %r13, %rdi
callq 0x28a2
movl %ebx, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x34c3
jmp 0x34c3
jmp 0x34c3
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x2758
movq %rbx, %rdi
callq 0x2200