// File: /workspace/github_c_makefile_star2_O1/hoobaa[P]ficl/tools.c
// Function: ficlSystemCompileTools
void ficlSystemCompileTools(ficlSystem *system)
{
    ficlDictionary *dictionary = ficlSystemGetDictionary(system);
    ficlDictionary *environment = ficlSystemGetEnvironment(system);

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


    /*
    ** TOOLS and TOOLS EXT
    */
    ficlDictionarySetPrimitive(dictionary, ".s",        ficlVmDisplayDataStack,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, ".s-simple", ficlVmDisplayDataStackSimple,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "bye",       ficlPrimitiveBye,            FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "forget",    ficlPrimitiveForget,         FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "see",       ficlPrimitiveSee,            FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "words",     ficlPrimitiveWords,      FICL_WORD_DEFAULT);

    /*
    ** Set TOOLS environment query values
    */
    ficlDictionarySetConstant(environment, "tools",            FICL_TRUE);
    ficlDictionarySetConstant(environment, "tools-ext",        FICL_FALSE);

    /*
    ** Ficl extras
    */
    ficlDictionarySetPrimitive(dictionary, "r.s",       ficlVmDisplayReturnStack,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, ".env",      ficlPrimitiveListEnv,        FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "env-constant",
                                    ficlPrimitiveEnvConstant,    FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "env-2constant",
                                    ficlPrimitiveEnv2Constant,   FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "debug-xt",  ficlPrimitiveDebugXT,    FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "parse-order", ficlPrimitiveParseStepList, FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "step-break",ficlPrimitiveStepBreak,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "forget-wid",ficlPrimitiveForgetWid,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "see-xt",    ficlPrimitiveSeeXT,          FICL_WORD_DEFAULT);

#if FICL_WANT_FLOAT
    ficlDictionarySetPrimitive(dictionary, ".hash",     ficlPrimitiveHashSummary,FICL_WORD_DEFAULT);
#endif

    return;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x3a37
movq %rax, %rbx
movq %r14, %rdi
callq 0x3a3c
movq %rax, %r14
leaq 0x9938(%rip), %rsi      # 0xe254
leaq -0x251(%rip), %rdx      # 0x46d2
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a98(%rip), %rsi      # 0xe3cc
leaq -0x25c(%rip), %rdx      # 0x46df
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a8a(%rip), %rsi      # 0xe3d6
leaq 0x170(%rip), %rdx       # 0x4ac3
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a76(%rip), %rsi      # 0xe3da
leaq 0x162(%rip), %rdx       # 0x4acd
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a65(%rip), %rsi      # 0xe3e1
leaq 0x187(%rip), %rdx       # 0x4b0a
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a51(%rip), %rsi      # 0xe3e5
leaq 0x181(%rip), %rdx       # 0x4b1c
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a3f(%rip), %rsi      # 0xe3eb
movq %r14, %rdi
movq $-0x1, %rdx
callq 0xc36c
leaq 0x9a2f(%rip), %rsi      # 0xe3f1
movq %r14, %rdi
xorl %edx, %edx
callq 0xc36c
leaq 0x9a28(%rip), %rsi      # 0xe3fb
leaq -0x23d(%rip), %rdx      # 0x479d
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a14(%rip), %rsi      # 0xe3ff
leaq 0x2a4(%rip), %rdx       # 0x4c96
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x9a01(%rip), %rsi      # 0xe404
leaq 0x346(%rip), %rdx       # 0x4d50
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99f6(%rip), %rsi      # 0xe411
leaq 0x36b(%rip), %rdx       # 0x4d8d
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99ec(%rip), %rsi      # 0xe41f
leaq 0x395(%rip), %rdx       # 0x4dcf
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99dd(%rip), %rsi      # 0xe428
leaq -0x1c1(%rip), %rdx      # 0x4891
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99d1(%rip), %rsi      # 0xe434
leaq 0x3ea(%rip), %rdx       # 0x4e54
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99c4(%rip), %rsi      # 0xe43f
leaq 0x5f8(%rip), %rdx       # 0x507a
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99b7(%rip), %rsi      # 0xe44a
leaq 0x60a(%rip), %rdx       # 0x50a4
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x99a6(%rip), %rsi      # 0xe451
leaq -0x5f1(%rip), %rdx      # 0x44c1
movq %rbx, %rdi
xorl %ecx, %ecx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xc509