// File: /workspace/github_c_makefile_star2_O1/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 0x3a37
movq %rax, %r15
movq %rbx, %rdi
callq 0x3a3c
movq %rax, %r14
leaq 0xa3fc(%rip), %rsi      # 0xe21c
leaq 0x10e(%rip), %r12       # 0x3f35
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc509
leaq 0xa3eb(%rip), %rsi      # 0xe226
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc509
leaq 0xa3de(%rip), %rsi      # 0xe22d
leaq 0x124(%rip), %r12       # 0x3f7a
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc509
leaq 0xa3ce(%rip), %rsi      # 0xe238
movq %r15, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xc509
leaq 0xa3c2(%rip), %rsi      # 0xe240
leaq 0x14e(%rip), %rdx       # 0x3fd3
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0xa3b1(%rip), %rsi      # 0xe247
leaq -0x123(%rip), %rdx      # 0x3d7a
movq %r15, %rdi
movl $0x1, %ecx
callq 0xc509
leaq 0xa39f(%rip), %rsi      # 0xe250
leaq 0x135(%rip), %rdx       # 0x3fed
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0xa38a(%rip), %rsi      # 0xe253
leaq -0x3ac(%rip), %rdx      # 0x3b24
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0xa376(%rip), %rsi      # 0xe257
leaq 0x143(%rip), %rdx       # 0x402b
movq %r15, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0xa362(%rip), %rsi      # 0xe25b
movq %r14, %rdi
xorl %edx, %edx
callq 0xc36c
leaq 0xa35a(%rip), %rsi      # 0xe264
movq %r14, %rdi
xorl %edx, %edx
callq 0xc36c
movq 0xb0(%rbx), %rdx
leaq 0xa34f(%rip), %rsi      # 0xe271
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xc36c