// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: real_multiply
cell real_multiply(cell a, cell b) {
	cell	r, m, e, ma, mb, ea, eb, neg;

	if (integer_p(a) && integer_p(b))
		return bignum_multiply(a, b);
	if (integer_p(a))
		a = bignum_to_real(a);
	save(a);
	if (integer_p(b))
		b = bignum_to_real(b);
	save(b);
	neg = x_real_negative_flag(a) != x_real_negative_flag(b);
	ea = x_real_exponent(a);
	eb = x_real_exponent(b);
	ma = new_atom(T_INTEGER, x_real_mantissa(a));
	cadr(Stack) = ma;
	mb = new_atom(T_INTEGER, x_real_mantissa(b));
	car(Stack) = mb;
	e = ea + eb;
	m = bignum_multiply(ma, mb);
	unsave(2);
	r = make_real(neg? REAL_NEGATIVE: 0, e, cdr(m));
	return real_normalize(r, "*");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jl 0x8aa6
movq 0x1fbb2(%rip), %rax     # 0x285f0
movq -0x10(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x8aa6
movq 0x1f72b(%rip), %rax     # 0x28180
movq -0x10(%rbp), %rcx
cmpq $-0x18, (%rax,%rcx,8)
jne 0x8aa6
cmpq $0x0, -0x18(%rbp)
jl 0x8aa6
movq 0x1fb82(%rip), %rax     # 0x285f0
movq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x8aa6
movq 0x1f6fb(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
cmpq $-0x18, (%rax,%rcx,8)
jne 0x8aa6
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5910
movq %rax, -0x8(%rbp)
jmp 0x8d05
cmpq $0x0, -0x10(%rbp)
jl 0x8ae3
movq 0x1fb3c(%rip), %rax     # 0x285f0
movq -0x10(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x8ae3
movq 0x1f6b5(%rip), %rax     # 0x28180
movq -0x10(%rbp), %rcx
cmpq $-0x18, (%rax,%rcx,8)
jne 0x8ae3
movq -0x10(%rbp), %rdi
callq 0x6870
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq 0x1f64a(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1f63c(%rip)     # 0x28138
cmpq $0x0, -0x18(%rbp)
jl 0x8b39
movq 0x1fae6(%rip), %rax     # 0x285f0
movq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x8b39
movq 0x1f65f(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
cmpq $-0x18, (%rax,%rcx,8)
jne 0x8b39
movq -0x18(%rbp), %rdi
callq 0x6870
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq 0x1f5f4(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1f5e6(%rip)     # 0x28138
movq 0x1f627(%rip), %rax     # 0x28180
movq 0x1fa70(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
andq $0x1, %rax
movq 0x1f609(%rip), %rcx     # 0x28180
movq 0x1fa52(%rip), %rdx     # 0x285d0
movq -0x18(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
andq $0x1, %rcx
cmpq %rcx, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x58(%rbp)
movq 0x1f5da(%rip), %rax     # 0x28180
movq 0x1fa23(%rip), %rcx     # 0x285d0
movq 0x1fa1c(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq 0x1f5b1(%rip), %rax     # 0x28180
movq 0x1f9fa(%rip), %rcx     # 0x285d0
movq 0x1f9f3(%rip), %rdx     # 0x285d0
movq -0x18(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x50(%rbp)
movq 0x1f9d8(%rip), %rax     # 0x285d0
movq 0x1f9d1(%rip), %rcx     # 0x285d0
movq 0x1f9ca(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rsi
movq $-0x18, %rdi
movl $0x1, %edx
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdx
movq 0x1f54a(%rip), %rax     # 0x28180
movq 0x1f993(%rip), %rcx     # 0x285d0
movq 0x1f4f4(%rip), %rsi     # 0x28138
movq (%rcx,%rsi,8), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x1f97d(%rip), %rax     # 0x285d0
movq 0x1f976(%rip), %rcx     # 0x285d0
movq 0x1f96f(%rip), %rdx     # 0x285d0
movq -0x18(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rsi
movq $-0x18, %rdi
movl $0x1, %edx
callq 0x3780
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdx
movq 0x1f4ef(%rip), %rax     # 0x28180
movq 0x1f4a0(%rip), %rcx     # 0x28138
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x5910
movq %rax, -0x28(%rbp)
movl $0x2, %edi
callq 0x3950
movq -0x58(%rbp), %rcx
xorl %edi, %edi
movl $0x1, %eax
cmpq $0x0, %rcx
cmovnel %eax, %edi
movq -0x30(%rbp), %rsi
movq 0x1f8f0(%rip), %rax     # 0x285d0
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x6350
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x18861(%rip), %rsi     # 0x2155d
callq 0x6460
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nop