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

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


    /*
    ** optional SEARCH-ORDER word set 
    */
    ficlDictionarySetPrimitive(dictionary, ">search",   ficlPrimitiveSearchPush,     FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "search>",   ficlPrimitiveSearchPop,      FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "definitions",
                                    ficlPrimitiveDefinitions,    FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "forth-wordlist",  
                                    ficlPrimitiveForthWordlist,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "get-current",  
                                    ficlPrimitiveGetCurrent,     FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "get-order", ficlPrimitiveGetOrder,       FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "search-wordlist",  
                                    ficlPrimitiveSearchWordlist, FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "set-current",  
                                    ficlPrimitiveSetCurrent,     FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "set-order", ficlPrimitiveSetOrder,       FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "ficl-wordlist", 
                                    ficlPrimitiveFiclWordlist,   FICL_WORD_DEFAULT);

    /*
    ** Set SEARCH environment query values
    */
    ficlDictionarySetConstant(environment, "search-order",      FICL_TRUE);
    ficlDictionarySetConstant(environment, "search-order-ext",  FICL_TRUE);
    ficlDictionarySetConstant(environment, "wordlists",         FICL_MAX_WORDLISTS);

    ficlDictionarySetPrimitive(dictionary, "wid-get-name", ficlPrimitiveWidGetName,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "wid-set-name", ficlPrimitiveWidSetName,  FICL_WORD_DEFAULT);
    ficlDictionarySetPrimitive(dictionary, "wid-set-super", 
                                    ficlPrimitiveSetParentWid,   FICL_WORD_DEFAULT);
    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 0x1e5f(%rip), %rsi      # 0xf87c
leaq 0x171(%rip), %rdx       # 0xdb95
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1e4f(%rip), %rsi      # 0xf884
leaq 0x1a8(%rip), %rdx       # 0xdbe4
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1e3f(%rip), %rsi      # 0xf88c
leaq 0x1df(%rip), %rdx       # 0xdc33
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x5e1(%rip), %rsi       # 0xe046
leaq 0x208(%rip), %rdx       # 0xdc74
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1e1b(%rip), %rsi      # 0xf898
leaq 0x207(%rip), %rdx       # 0xdc8b
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1e0f(%rip), %rsi      # 0xf8a4
leaq 0x206(%rip), %rdx       # 0xdca2
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1e01(%rip), %rsi      # 0xf8ae
leaq 0x23d(%rip), %rdx       # 0xdcf1
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1df9(%rip), %rsi      # 0xf8be
leaq 0x2c2(%rip), %rdx       # 0xdd8e
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1ded(%rip), %rsi      # 0xf8ca
leaq 0x2d1(%rip), %rdx       # 0xddb5
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1ddf(%rip), %rsi      # 0xf8d4
leaq 0x341(%rip), %rdx       # 0xde3d
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1dd5(%rip), %rsi      # 0xf8e2
movq %r14, %rdi
movq $-0x1, %rdx
callq 0xc36c
leaq 0x1dcc(%rip), %rsi      # 0xf8ef
movq %r14, %rdi
movq $-0x1, %rdx
callq 0xc36c
leaq 0x1dc7(%rip), %rsi      # 0xf900
movl $0x10, %edx
movq %r14, %rdi
callq 0xc36c
leaq 0x1dbd(%rip), %rsi      # 0xf90a
leaq 0x31e(%rip), %rdx       # 0xde72
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1db2(%rip), %rsi      # 0xf917
leaq 0x347(%rip), %rdx       # 0xdeb3
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0xc509
leaq 0x1da7(%rip), %rsi      # 0xf924
leaq 0x352(%rip), %rdx       # 0xded6
movq %rbx, %rdi
xorl %ecx, %ecx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xc509