// File: /workspace/github_c_makefile_star2_O2/hoobaa[P]ficl/float.c
// Function: ficlSystemCompileFloat
void ficlSystemCompileFloat(ficlSystem *system)
{
#if FICL_WANT_FLOAT
    ficlDictionary *dictionary = ficlSystemGetDictionary(system);
    ficlDictionary *environment = ficlSystemGetEnvironment(system);

    FICL_SYSTEM_ASSERT(system, dictionary);
    FICL_SYSTEM_ASSERT(system, environment);

    ficlDictionarySetPrimitive(dictionary, "fconstant", ficlPrimitiveFConstant,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "fvalue", ficlPrimitiveFConstant,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "f2constant", ficlPrimitiveF2Constant,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "f2value",  ficlPrimitiveF2Constant,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "fdepth",    ficlPrimitiveFDepth,         FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "fliteral",  ficlPrimitiveFLiteralImmediate,     FICL_WORD_IMMEDIATE);
    ficlDictionarySetPrimitive(dictionary, "f.",        ficlPrimitiveFDot,           FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "f.s",       ficlVmDisplayFloatStack,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "fe.",       ficlPrimitiveEDot,           FICL_WORD_DEFAULT);

#if FICL_WANT_LOCALS
    ficlDictionarySetPrimitive(dictionary, "(flocal)",   ficlPrimitiveFLocalParen,     FICL_WORD_COMPILE_ONLY);
    ficlDictionarySetPrimitive(dictionary, "(f2local)",  ficlPrimitiveF2LocalParen,  FICL_WORD_COMPILE_ONLY);
#endif /* FICL_WANT_LOCALS */

 /* 
    Missing words:

    d>f
    f>d 
    falign 
    faligned 
    float+
    floats
    floor
    fmax
    fmin
*/

    ficlDictionarySetConstant(environment, "floating",       FICL_FALSE);  /* not all required words are present */
    ficlDictionarySetConstant(environment, "floating-ext",   FICL_FALSE);
    ficlDictionarySetConstant(environment, "floating-stack", system->stackSize);
#else /* FICL_WANT_FLOAT */
	/* get rid of unused parameter warning */
	system = NULL;
#endif
    return;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x399f
movq %rax, %r15
movq %rbx, %rdi
callq 0x39a4
movq %rax, %r14
leaq 0xa4c5(%rip), %rsi      # 0xe21c
leaq 0x10c(%rip), %r12       # 0x3e6a
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa4b4(%rip), %rsi      # 0xe226
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa4a7(%rip), %rsi      # 0xe22d
leaq 0x122(%rip), %r12       # 0x3eaf
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa497(%rip), %rsi      # 0xe238
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa48b(%rip), %rsi      # 0xe240
leaq 0x14c(%rip), %rdx       # 0x3f08
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa47a(%rip), %rsi      # 0xe247
leaq -0x11b(%rip), %rdx      # 0x3cb9
pushq $0x1
popq %rcx
movq %r15, %rdi
callq 0xbbe5
leaq 0xa46a(%rip), %rsi      # 0xe250
leaq 0x135(%rip), %rdx       # 0x3f22
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa455(%rip), %rsi      # 0xe253
leaq -0x379(%rip), %rdx      # 0x3a8c
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa441(%rip), %rsi      # 0xe257
leaq 0x143(%rip), %rdx       # 0x3f60
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xbbe5
leaq 0xa42d(%rip), %rsi      # 0xe25b
movq %r14, %rdi
xorl %edx, %edx
callq 0xba61
leaq 0xa425(%rip), %rsi      # 0xe264
movq %r14, %rdi
xorl %edx, %edx
callq 0xba61
movq 0xb0(%rbx), %rdx
leaq 0xa41a(%rip), %rsi      # 0xe271
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xba61