// File: /workspace/github_c_makefile_star2_O0/Oric4ever[P]lcc65/6502/build/../src/gen.c
// Function: printfloat
void printfloat(double val)
{
    int i,exp=32,negative=0;
    double two_pow31,two_pow32;
    unsigned long mantissa;

    if (val==0.0) {
        print("\tDB(0)\n");
        print("\tDB(0)\n");
        print("\tDB(0)\n");
        print("\tDB(0)\n");
        print("\tDB(0)\n");
        return;
    }
    if (val<0.0) { negative=1; val= -val; }
    for (two_pow31=1.0,i=0;i<31;i++) two_pow31*=2;
    two_pow32=two_pow31*2;
    while (val>=two_pow32) {
        val/=2;
        exp++;
    }
    while (val<two_pow31) {
        val*=2;
        exp--;
    }
    if (!negative) val-=two_pow31;
    mantissa=val;
    print("\tDB($%x)\n",exp+128);
    print("\tDB($%x)\n",(mantissa>>24)&0xFF);
    print("\tDB($%x)\n",(mantissa>>16)&0xFF);
    print("\tDB($%x)\n",(mantissa>>8)&0xFF);
    print("\tDB($%x)\n",mantissa&0xFF);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movsd %xmm0, -0x8(%rbp)
movl $0x20, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movsd -0x8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x2a676
jp 0x2a676
leaq 0x9ba1(%rip), %rdi      # 0x341d3
movb $0x0, %al
callq 0x1a890
leaq 0x9b93(%rip), %rdi      # 0x341d3
movb $0x0, %al
callq 0x1a890
leaq 0x9b85(%rip), %rdi      # 0x341d3
movb $0x0, %al
callq 0x1a890
leaq 0x9b77(%rip), %rdi      # 0x341d3
movb $0x0, %al
callq 0x1a890
leaq 0x9b69(%rip), %rdi      # 0x341d3
movb $0x0, %al
callq 0x1a890
jmp 0x2a81c
xorps %xmm0, %xmm0
ucomisd -0x8(%rbp), %xmm0
jbe 0x2a6a8
movl $0x1, -0x14(%rbp)
movsd -0x8(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x8(%rbp)
movsd 0x6b38(%rip), %xmm0     # 0x311e8
movsd %xmm0, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
cmpl $0x1f, -0xc(%rbp)
jge 0x2a6df
movsd 0x86de(%rip), %xmm0     # 0x32da8
mulsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x2a6bc
movsd 0x86c1(%rip), %xmm0     # 0x32da8
mulsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x8(%rbp), %xmm0
ucomisd -0x28(%rbp), %xmm0
jb 0x2a71e
movsd -0x8(%rbp), %xmm0
movsd 0x869e(%rip), %xmm1     # 0x32da8
divsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x2a6f1
jmp 0x2a720
movsd -0x8(%rbp), %xmm1
movsd -0x20(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x2a74d
movsd 0x8670(%rip), %xmm0     # 0x32da8
mulsd -0x8(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movl -0x10(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x2a720
cmpl $0x0, -0x14(%rbp)
jne 0x2a766
movsd -0x20(%rbp), %xmm1
movsd -0x8(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
movsd 0x863d(%rip), %xmm2     # 0x32db0
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
cvttsd2si %xmm0, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rbp)
movl -0x10(%rbp), %esi
addl $0x80, %esi
leaq 0x9a36(%rip), %rdi      # 0x341db
movb $0x0, %al
callq 0x1a890
movq -0x30(%rbp), %rsi
shrq $0x18, %rsi
andq $0xff, %rsi
leaq 0x9a19(%rip), %rdi      # 0x341db
movb $0x0, %al
callq 0x1a890
movq -0x30(%rbp), %rsi
shrq $0x10, %rsi
andq $0xff, %rsi
leaq 0x99fc(%rip), %rdi      # 0x341db
movb $0x0, %al
callq 0x1a890
movq -0x30(%rbp), %rsi
shrq $0x8, %rsi
andq $0xff, %rsi
leaq 0x99df(%rip), %rdi      # 0x341db
movb $0x0, %al
callq 0x1a890
movq -0x30(%rbp), %rsi
andq $0xff, %rsi
leaq 0x99c6(%rip), %rdi      # 0x341db
movb $0x0, %al
callq 0x1a890
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)