// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: real_normalize
cell real_normalize(cell x, char *who) {
	cell	m, e, r;
	int	dgs;
	char	buf[50];

	save(x);
	e = x_real_exponent(x);
	m = new_atom(T_INTEGER, x_real_mantissa(x));
	save(m);
	dgs = count_digits(cdr(m));
	while (dgs > MANTISSA_SIZE) {
		r = bignum_shift_right(m);
		m = car(r);
		car(Stack) = m;
		dgs--;
		e++;
	}
	while (!x_bignum_zero_p(m)) {
		r = bignum_shift_right(m);
		if (!x_bignum_zero_p(cdr(r)))
			break;
		m = car(r);
		car(Stack) = m;
		e++;
	}
	if (x_bignum_zero_p(m))
		e = 0;
	r = new_atom(e, NIL);
	unsave(2);
	if (count_digits(r) > DIGITS_PER_WORD) {
		sprintf(buf, "%s: real number overflow",
			who? who: "internal");
		error(buf, NOEXPR);
	}
	return make_real(x_real_flags(x), e, cdr(m));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq 0x21cba(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x21cac(%rip)     # 0x28138
movq 0x21ced(%rip), %rax     # 0x28180
movq 0x22136(%rip), %rcx     # 0x285d0
movq 0x2212f(%rip), %rdx     # 0x285d0
movq -0x8(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq 0x22114(%rip), %rax     # 0x285d0
movq 0x2210d(%rip), %rcx     # 0x285d0
movq 0x22106(%rip), %rdx     # 0x285d0
movq -0x8(%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, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq 0x21c3e(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x21c30(%rip)     # 0x28138
movq 0x220c1(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x63b0
movl %eax, -0x2c(%rbp)
cmpl $0x24, -0x2c(%rbp)
jle 0x6572
movq -0x18(%rbp), %rdi
callq 0x5760
movq %rax, -0x28(%rbp)
movq 0x21c47(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdx
movq 0x21c30(%rip), %rax     # 0x28180
movq 0x21be1(%rip), %rcx     # 0x28138
movq %rdx, (%rax,%rcx,8)
movl -0x2c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2c(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x651f
jmp 0x6574
movq 0x21c05(%rip), %rcx     # 0x28180
movq 0x2204e(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rdx
movq (%rax,%rdx,8), %rdx
xorl %eax, %eax
cmpq $0x0, (%rcx,%rdx,8)
movb %al, -0x61(%rbp)
jne 0x65b7
movq 0x22033(%rip), %rax     # 0x285d0
movq 0x2202c(%rip), %rcx     # 0x285d0
movq -0x18(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x1, (%rax,%rcx,8)
sete %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x65c5
jmp 0x665e
movq -0x18(%rbp), %rdi
callq 0x5760
movq %rax, -0x28(%rbp)
movq 0x21ba7(%rip), %rax     # 0x28180
movq 0x21ff0(%rip), %rcx     # 0x285d0
movq 0x21fe9(%rip), %rdx     # 0x285d0
movq -0x28(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x6622
movq 0x21fcf(%rip), %rax     # 0x285d0
movq 0x21fc8(%rip), %rcx     # 0x285d0
movq 0x21fc1(%rip), %rdx     # 0x285d0
movq -0x28(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0x6624
jmp 0x665e
movq 0x21b55(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdx
movq 0x21b3e(%rip), %rax     # 0x28180
movq 0x21aef(%rip), %rcx     # 0x28138
movq %rdx, (%rax,%rcx,8)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x6574
movq 0x21b1b(%rip), %rax     # 0x28180
movq 0x21f64(%rip), %rcx     # 0x285d0
movq -0x18(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x66a0
movq 0x21f4e(%rip), %rax     # 0x285d0
movq 0x21f47(%rip), %rcx     # 0x285d0
movq -0x18(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x66a0
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq $-0x1, %rsi
movl $0x1, %edx
callq 0x3780
movq %rax, -0x28(%rbp)
movl $0x2, %edi
callq 0x3950
movq -0x28(%rbp), %rdi
callq 0x63b0
cmpq $0x9, %rax
jle 0x671e
leaq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x66eb
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
jmp 0x66f8
leaq 0x19d56(%rip), %rax     # 0x20448
movq %rax, -0x78(%rbp)
jmp 0x66f8
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0x19d28(%rip), %rsi     # 0x2042f
movb $0x0, %al
callq 0x3200
leaq -0x60(%rbp), %rdi
movq $-0x8, %rsi
callq 0x34b0
movq 0x21a5b(%rip), %rax     # 0x28180
movq 0x21ea4(%rip), %rcx     # 0x285d0
movq -0x8(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %edi
movq -0x20(%rbp), %rsi
movq 0x21e8b(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x6350
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax,%rax)