// File: Nallantli[P]Rossa/main/number/number.cpp
// Function: number_t::operator/(number_t const&) const
const number_t number_t::operator/(const number_t &n) const noexcept
{
	if (n.getDouble() == 0)
		return number_t::Double(INFINITY);

	switch (type)
	{
	case DOUBLE_NUM:
		switch (n.type)
		{
		case DOUBLE_NUM:
			return number_t::Double(valueDouble / n.valueDouble);
		case LONG_NUM:
			return number_t::Double(valueDouble / static_cast<long_double_t>(n.valueLong));
		}
		break;
	case LONG_NUM:
		switch (n.type)
		{
		case DOUBLE_NUM:
			return number_t::Double(static_cast<long_double_t>(valueLong) / n.valueDouble);
		case LONG_NUM:
			if (valueLong % n.valueLong == 0)
				return number_t::Long(valueLong / n.valueLong);
			else
				return number_t::Double(static_cast<long_double_t>(valueLong) / static_cast<long_double_t>(n.valueLong));
		}
	}
	return number_t();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x9c670
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x9ce43
jp 0x9ce43
movabsq $0x7ff0000000000000, %rax # imm = 0x7FF0000000000000
movq %rax, -0x28(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x9c510
movl %edx, -0x30(%rbp)
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x10(%rbp)
movl -0x30(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0x9d034
movq -0xb8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xbc(%rbp)
testl %eax, %eax
je 0x9ce6d
jmp 0x9ce59
movl -0xbc(%rbp), %eax
subl $0x1, %eax
je 0x9cf11
jmp 0x9d02b
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xc0(%rbp)
testl %eax, %eax
je 0x9ce8d
jmp 0x9ce80
movl -0xc0(%rbp), %eax
subl $0x1, %eax
je 0x9cecc
jmp 0x9cf0c
movq -0xb8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x20(%rbp), %rax
movsd (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x9c510
movl %edx, -0x48(%rbp)
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x10(%rbp)
movl -0x48(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0x9d034
movq -0xb8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x20(%rbp), %rax
cvtsi2sdq (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x9c510
movl %edx, -0x60(%rbp)
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x10(%rbp)
movl -0x60(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0x9d034
jmp 0x9d02b
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xc4(%rbp)
testl %eax, %eax
je 0x9cf34
jmp 0x9cf24
movl -0xc4(%rbp), %eax
subl $0x1, %eax
je 0x9cf74
jmp 0x9d029
movq -0xb8(%rbp), %rax
cvtsi2sdq (%rax), %xmm0
movq -0x20(%rbp), %rax
movsd (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x9c510
movl %edx, -0x78(%rbp)
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x10(%rbp)
movl -0x78(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0x9d034
movq -0xb8(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
cqto
idivq (%rcx)
cmpq $0x0, %rdx
jne 0x9cfd9
movq -0xb8(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
cqto
idivq %rcx
movq %rax, -0x88(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x9c540
movl %edx, -0x90(%rbp)
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x10(%rbp)
movl -0x90(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0x9d034
movq -0xb8(%rbp), %rax
cvtsi2sdq (%rax), %xmm0
movq -0x20(%rbp), %rax
cvtsi2sdq (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x9c510
movl %edx, -0xa8(%rbp)
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x10(%rbp)
movl -0xa8(%rbp), %eax
movl %eax, -0x8(%rbp)
jmp 0x9d034
jmp 0x9d02b
leaq -0x10(%rbp), %rdi
callq 0x9c4f0
movq -0x10(%rbp), %rax
movl -0x8(%rbp), %edx
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)