// File: /workspace/github_c_makefile_star2_O3/azhai[P]mlite/mlite.c
// Function: print_real
int print_real(cell n) {
	int	n_digits;
	cell	m, e;
	char	buf[DIGITS_PER_WORD+2];

	if (!real_p(n))
		return 0;
	m = x_real_mantissa(n);
	n_digits = count_digits(m);
	e = x_real_exponent(n);
	if (n_digits == MANTISSA_SIZE && e < 0) {
		print_real(round_last(m, e, n_digits, x_real_flags(n)));
		return 1;
	}
	if (e+n_digits > -4 && e+n_digits <= 6) {
		print_expanded_real(m, e, n_digits, x_real_negative_flag(n));
		return 1;
	}
	if (x_real_negative_flag(n))
		pr("-");
	ntoa(buf, car(m), 0);
	pr_raw(buf, 1);
	pr(".");
	pr(buf[1] || cdr(m) != NIL? &buf[1]: "0");
	m = cdr(m);
	while (m != NIL) {
		pr(ntoa(buf, car(m), DIGITS_PER_WORD));
		m = cdr(m);
	}
	pr("e");
	if (e+n_digits-1 >= 0)
		pr("+");
	pr(ntoa(buf, e+n_digits-1, 0));
	return 1;
}

// Assembly:
xorl %eax, %eax
testq %rdi, %rdi
js 0x89e9
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq 0x15e03(%rip), %rcx     # 0x1e5e0
testb $0x1, (%rcx,%rdi)
je 0x89db
movq 0x15982(%rip), %r8      # 0x1e170
cmpq $-0x1f, (%r8,%rdi,8)
jne 0x89db
movq 0x15dc0(%rip), %r9      # 0x1e5c0
movq (%r9,%rdi,8), %rdi
movq (%r9,%rdi,8), %r10
movq (%r9,%r10,8), %rbx
movq (%r8,%rbx,8), %rsi
xorl %r11d, %r11d
testq %rsi, %rsi
je 0x8849
movabsq $0x6666666666666667, %r14 # imm = 0x6666666666666667
movq %rsi, %rcx
movq %rcx, %rax
imulq %r14
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x2, %rdx
addq %rax, %rdx
incl %r11d
addq $0x9, %rcx
cmpq $0x12, %rcx
movq %rdx, %rcx
ja 0x8825
cmpl $0x1, %r11d
movl %r11d, %edx
adcl $0x0, %edx
xorl %r12d, %r12d
movq %rbx, %rax
movq (%r9,%rax,8), %rax
addq $0x9, %r12
cmpq $-0x1, %rax
jne 0x8859
movq (%r8,%r10,8), %r15
movl %r11d, %r13d
cmpq $0x1, %r13
movq %r13, %rax
adcq $0x0, %rax
addl %r12d, %eax
cmpl $0x2d, %eax
jne 0x88a2
testq %r15, %r15
jns 0x88a2
movl (%r8,%rdi,8), %ecx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x86da
movq %rax, %rdi
callq 0x87ba
jmp 0x89d6
cmpq $0x1, %r13
movq %r15, %r14
adcq %r13, %r14
leaq (%r14,%r12), %rax
addq $-0x6, %rax
movq (%r8,%rdi,8), %rcx
cmpq $0x9, %rax
ja 0x88d7
addl $-0x9, %edx
addq %r12, %rdx
andl $0x1, %ecx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x85a9
jmp 0x89d6
testb $0x1, %cl
je 0x88f3
leaq 0xd8d1(%rip), %rdi      # 0x161b4
callq 0x3964
movq 0x15881(%rip), %rax     # 0x1e170
movq (%rax,%rbx,8), %rsi
leaq -0x33(%rbp), %rdi
xorl %edx, %edx
callq 0x8468
leaq -0x33(%rbp), %rdi
movl $0x1, %esi
callq 0x38b8
leaq 0xd8af(%rip), %rdi      # 0x161c2
callq 0x3964
leaq -0x33(%rbp), %rax
cmpb $0x0, 0x1(%rax)
jne 0x8934
movq 0x15c97(%rip), %rax     # 0x1e5c0
cmpq $-0x1, (%rax,%rbx,8)
je 0x89ea
leaq -0x32(%rbp), %rdi
leaq (%r14,%r12), %rax
addq $-0x9, %rax
movq %rax, -0x40(%rbp)
callq 0x3964
movq 0x15c70(%rip), %rax     # 0x1e5c0
movq (%rax,%rbx,8), %r14
cmpq $-0x1, %r14
je 0x898f
leaq -0x33(%rbp), %rbx
movq 0x1580b(%rip), %rax     # 0x1e170
movq (%rax,%r14,8), %rsi
movq %rbx, %rdi
movl $0x9, %edx
callq 0x8468
movq %rbx, %rdi
callq 0x3964
movq 0x15c3b(%rip), %rax     # 0x1e5c0
movq (%rax,%r14,8), %r14
cmpq $-0x1, %r14
jne 0x895e
leaq 0xe68e(%rip), %rdi      # 0x17024
callq 0x3964
cmpq $0x1, %r13
adcq %r13, %r15
leaq (%r15,%r12), %rbx
addq $-0xa, %rbx
cmpq $0x0, -0x40(%rbp)
jle 0x89bd
leaq 0xd7fa(%rip), %rdi      # 0x161b2
callq 0x3964
leaq -0x33(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x8468
movq %r14, %rdi
callq 0x3964
movl $0x1, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xdbfb(%rip), %rdi      # 0x165ec
jmp 0x8938