// File: /workspace/github_c_makefile_star2_O3/stetre[P]moonnuklear/src/./nuklear/nuklear.h
// Function: nk_dtoa
NK_LIB char*
nk_dtoa(char *s, double n)
{
    int useExp = 0;
    int digit = 0, m = 0, m1 = 0;
    char *c = s;
    int neg = 0;

    NK_ASSERT(s);
    if (!s) return 0;

    if (n == 0.0) {
        s[0] = '0'; s[1] = '\0';
        return s;
    }

    neg = (n < 0);
    if (neg) n = -n;

    /* calculate magnitude */
    m = nk_log10(n);
    useExp = (m >= 14 || (neg && m >= 9) || m <= -9);
    if (neg) *(c++) = '-';

    /* set up for scientific notation */
    if (useExp) {
        if (m < 0)
           m -= 1;
        n = n / (double)nk_pow(10.0, m);
        m1 = m;
        m = 0;
    }
    if (m < 1.0) {
        m = 0;
    }

    /* convert the number */
    while (n > NK_FLOAT_PRECISION || m >= 0) {
        double weight = nk_pow(10.0, m);
        if (weight > 0) {
            double t = (double)n / weight;
            digit = nk_ifloord(t);
            n -= ((double)digit * weight);
            *(c++) = (char)('0' + (char)digit);
        }
        if (m == 0 && n > 0)
            *(c++) = '.';
        m--;
    }

    if (useExp) {
        /* convert the exponent */
        int i, j;
        *(c++) = 'e';
        if (m1 > 0) {
            *(c++) = '+';
        } else {
            *(c++) = '-';
            m1 = -m1;
        }
        m = 0;
        while (m1 > 0) {
            *(c++) = (char)('0' + (char)(m1 % 10));
            m1 /= 10;
            m++;
        }
        c -= m;
        for (i = 0, j = m-1; i<j; i++, j--) {
            /* swap without temporary */
            c[i] ^= c[j];
            c[j] ^= c[i];
            c[i] ^= c[j];
        }
        c += m;
    }
    *(c) = '\0';
    return s;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rdi, %rdi
je 0x5976c
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x5979d
jp 0x5979d
movw $0x30, (%rbx)
jmp 0x599d0
movq 0x2d87d(%rip), %r14     # 0x86ff0
movq (%r14), %rdi
leaq 0x1761f(%rip), %rsi     # 0x70d9c
leaq 0x17636(%rip), %rdx     # 0x70dba
movl $0x1b6c, %ecx           # imm = 0x1B6C
xorl %eax, %eax
callq 0x12d80
movq (%r14), %rdi
callq 0x13780
jmp 0x599d0
movapd 0x140db(%rip), %xmm2    # 0x6d880
movapd %xmm0, %xmm1
xorpd %xmm2, %xmm1
maxsd %xmm0, %xmm1
xorpd %xmm1, %xmm2
maxsd %xmm1, %xmm2
cvttsd2si %xmm2, %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
jl 0x597de
xorl %eax, %eax
movl $0xcccccccd, %edx       # imm = 0xCCCCCCCD
movl %ecx, %esi
imulq %rdx, %rsi
shrq $0x23, %rsi
incl %eax
cmpl $0x63, %ecx
movl %esi, %ecx
ja 0x597cb
xorpd %xmm2, %xmm2
ucomisd %xmm0, %xmm2
seta %cl
movl %eax, %edi
negl %edi
ucomisd %xmm1, %xmm2
cmovbel %eax, %edi
cmpl $0x9, %edi
setge %al
andb %cl, %al
leal -0xe(%rdi), %ecx
cmpl $-0x16, %ecx
setb %dl
orb %al, %dl
ucomisd %xmm0, %xmm2
movq %rbx, %rax
jbe 0x59817
leaq 0x1(%rbx), %rax
movb $0x2d, (%rbx)
testb %dl, %dl
je 0x5986e
movl %edi, %ecx
sarl $0x1f, %ecx
addl %edi, %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
movsd 0x1414f(%rip), %xmm0    # 0x6d980
movsd 0x14157(%rip), %xmm2    # 0x6d990
testb $0x1, %sil
je 0x59843
mulsd %xmm2, %xmm0
movl %esi, %edi
shrl %edi
mulsd %xmm2, %xmm2
cmpl $0x1, %esi
movl %edi, %esi
ja 0x59839
testl %ecx, %ecx
jns 0x59866
movsd 0x14122(%rip), %xmm2    # 0x6d980
divsd %xmm0, %xmm2
movapd %xmm2, %xmm0
divsd %xmm0, %xmm1
xorl %edi, %edi
jmp 0x59875
xorl %ecx, %ecx
testl %edi, %edi
cmovlel %ecx, %edi
movsd 0x14103(%rip), %xmm0    # 0x6d980
xorpd %xmm2, %xmm2
movsd 0x14157(%rip), %xmm3    # 0x6d9e0
movsd 0x140ff(%rip), %xmm4    # 0x6d990
movl %edi, %esi
movapd %xmm0, %xmm5
testl %edi, %edi
je 0x598c6
movl %esi, %edi
negl %edi
cmovsl %esi, %edi
movapd %xmm4, %xmm6
movapd %xmm0, %xmm5
testb $0x1, %dil
je 0x598b4
mulsd %xmm6, %xmm5
movl %edi, %r8d
shrl %r8d
mulsd %xmm6, %xmm6
cmpl $0x1, %edi
movl %r8d, %edi
ja 0x598aa
testl %esi, %esi
jns 0x598d6
movapd %xmm0, %xmm6
divsd %xmm5, %xmm6
movapd %xmm6, %xmm5
ucomisd %xmm2, %xmm5
jbe 0x5990f
movapd %xmm1, %xmm6
divsd %xmm5, %xmm6
cvttsd2si %xmm6, %edi
xorl %r8d, %r8d
ucomisd %xmm6, %xmm2
seta %r8b
subl %r8d, %edi
xorps %xmm6, %xmm6
cvtsi2sd %edi, %xmm6
mulsd %xmm5, %xmm6
subsd %xmm6, %xmm1
addb $0x30, %dil
movb %dil, (%rax)
incq %rax
movl %esi, %edi
subl $0x1, %edi
jae 0x59922
ucomisd %xmm2, %xmm1
jbe 0x59922
movb $0x2e, (%rax)
incq %rax
ucomisd %xmm3, %xmm1
ja 0x59891
testl %esi, %esi
jg 0x59891
testb %dl, %dl
je 0x599cd
movb $0x65, (%rax)
testl %ecx, %ecx
jle 0x5994d
movb $0x2b, 0x1(%rax)
addq $0x2, %rax
jmp 0x5995b
movb $0x2d, 0x1(%rax)
addq $0x2, %rax
testl %ecx, %ecx
je 0x599cd
negl %ecx
movl $0x2, %esi
movl $0xcccccccd, %edi       # imm = 0xCCCCCCCD
movq %rax, %rdx
movl %ecx, %r8d
imulq %rdi, %r8
shrq $0x23, %r8
leal (%r8,%r8), %r9d
leal (%r9,%r9,4), %r9d
movl %ecx, %r10d
subl %r9d, %r10d
orb $0x30, %r10b
movb %r10b, (%rdx)
incq %rdx
decq %rsi
cmpl $0x9, %ecx
movl %r8d, %ecx
ja 0x59968
cmpl $0x1, %esi
je 0x599ca
negq %rsi
xorl %ecx, %ecx
movb (%rax,%rcx), %dil
xorb 0x1(%rax,%rsi), %dil
movb %dil, (%rax,%rcx)
xorb 0x1(%rax,%rsi), %dil
movb %dil, 0x1(%rax,%rsi)
xorb %dil, (%rax,%rcx)
incq %rcx
leaq -0x1(%rsi), %rdi
cmpq %rsi, %rcx
movq %rdi, %rsi
jl 0x599a0
movq %rdx, %rax
movb $0x0, (%rax)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop