// File: /workspace/github_c_makefile_star2_O1/WojciechMula[P]pyahocorasick/src/pyahocorasick.c
// Function: PyInit_ahocorasick
PyMODINIT_FUNC
init_function(void) {
    PyObject* module;

#ifdef MEMORY_DEBUG
    PyErr_WarnEx(PyExc_RuntimeWarning,
                 "This is a developer version of pyahocorasick. "
                 "The module was compiled with flag MEMORY_DEBUG.", 1);
    initialize_memory_debug();
#endif

#ifdef PYCALLS_INJECT_FAULTS
    PyErr_WarnEx(PyExc_RuntimeWarning,
                 "This is a developer version of pyahocorasick. "
                 "The module was compiled with flag PYCALLS_INJECT_FAULTS.", 1);
    initialize_pycallfault();
#endif

#if DEBUG_LAYOUT
    PyErr_WarnEx(PyExc_RuntimeWarning,
                 "This is a developer version of pyahocorasick. "
                 "The module was compiled with flag DEBUG_LAYOUT.", 1);
    trienode_dump_layout();
#endif

    automaton_as_sequence.sq_length   = automaton_len;
    automaton_as_sequence.sq_contains = automaton_contains;

    automaton_type.tp_as_sequence = &automaton_as_sequence;

#ifdef PY3K
    module = PyModule_Create(&ahocorasick_module);
#else
    module = Py_InitModule3("ahocorasick", ahocorasick_module_methods, module_doc);
#endif
    if (module == NULL)
        init_return(NULL);


    if (PyType_Ready(&automaton_type) < 0) {
        Py_DECREF(module);
        init_return(NULL);
    }
    else
        PyModule_AddObject(module, "Automaton", (PyObject*)&automaton_type);

#define add_enum_const(name) PyModule_AddIntConstant(module, #name, name)
    add_enum_const(TRIE);
    add_enum_const(AHOCORASICK);
    add_enum_const(EMPTY);

    add_enum_const(STORE_LENGTH);
    add_enum_const(STORE_INTS);
    add_enum_const(STORE_ANY);

    add_enum_const(KEY_STRING);
    add_enum_const(KEY_SEQUENCE);

    add_enum_const(MATCH_EXACT_LENGTH);
    add_enum_const(MATCH_AT_MOST_PREFIX);
    add_enum_const(MATCH_AT_LEAST_PREFIX);
#undef add_enum_const

#ifdef AHOCORASICK_UNICODE
    PyModule_AddIntConstant(module, "unicode", 1);
#else
    PyModule_AddIntConstant(module, "unicode", 0);
#endif

    init_return(module);
}

// Assembly:
pushq %rbx
leaq 0x16a(%rip), %rax       # 0x5647
movq %rax, 0xb7c4(%rip)      # 0x10ca8
leaq 0xb7bd(%rip), %rax      # 0x10ca8
leaq 0x15a(%rip), %rcx       # 0x564c
movq %rcx, 0xb7e7(%rip)      # 0x10ce0
movq %rax, 0xad38(%rip)      # 0x10238
leaq 0xae61(%rip), %rdi      # 0x10368
movl $0x3f5, %esi            # imm = 0x3F5
callq 0x3200
testq %rax, %rax
je 0x5640
movq %rax, %rbx
leaq 0xacac(%rip), %rdi      # 0x101d0
callq 0x3180
testl %eax, %eax
js 0x5633
leaq 0x4215(%rip), %rsi      # 0x974d
leaq 0xac91(%rip), %rdx      # 0x101d0
movq %rbx, %rdi
callq 0x32c0
leaq 0x3df7(%rip), %rsi      # 0x9345
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3fec(%rip), %rsi      # 0x954e
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3dd4(%rip), %rsi      # 0x934a
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3050
leaq 0x3dc9(%rip), %rsi      # 0x9350
movl $0x14, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3dc2(%rip), %rsi      # 0x935d
movl $0xa, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3f60(%rip), %rsi      # 0x950f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3da5(%rip), %rsi      # 0x9368
movl $0x64, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3faa(%rip), %rsi      # 0x9581
movl $0xc8, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3d88(%rip), %rsi      # 0x9373
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3050
leaq 0x3d8a(%rip), %rsi      # 0x9386
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x4519(%rip), %rsi      # 0x9b29
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3d77(%rip), %rsi      # 0x939b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3050
jmp 0x5642
decq (%rbx)
jne 0x5640
movq %rbx, %rdi
callq 0x30d0
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
retq