// File: /workspace/github_c_makefile_star2_O3/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 0x3a0e
movq %rax, %r15
movq %rbx, %rdi
callq 0x3a13
movq %rax, %r14
leaq 0xa445(%rip), %rsi      # 0xe21c
leaq 0x10e(%rip), %r12       # 0x3eec
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa434(%rip), %rsi      # 0xe226
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa427(%rip), %rsi      # 0xe22d
leaq 0x124(%rip), %r12       # 0x3f31
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa417(%rip), %rsi      # 0xe238
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa40b(%rip), %rsi      # 0xe240
leaq 0x14e(%rip), %rdx       # 0x3f8a
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa3fa(%rip), %rsi      # 0xe247
leaq -0x123(%rip), %rdx      # 0x3d31
movq %r15, %rdi
movl $0x1, %ecx
callq 0xc3c8
leaq 0xa3e8(%rip), %rsi      # 0xe250
leaq 0x135(%rip), %rdx       # 0x3fa4
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa3d3(%rip), %rsi      # 0xe253
leaq -0x38f(%rip), %rdx      # 0x3af8
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa3bf(%rip), %rsi      # 0xe257
leaq 0x143(%rip), %rdx       # 0x3fe2
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc3c8
leaq 0xa3ab(%rip), %rsi      # 0xe25b
movq %r14, %rdi
xorl %edx, %edx
callq 0xc217
leaq 0xa3a3(%rip), %rsi      # 0xe264
movq %r14, %rdi
xorl %edx, %edx
callq 0xc217
movq 0xb0(%rbx), %rdx
leaq 0xa398(%rip), %rsi      # 0xe271
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xc217