// File: /workspace/github_c_makefile_star2_O3/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       # 0x563c
movq %rax, 0xb7cf(%rip)      # 0x10ca8
leaq 0xb7c8(%rip), %rax      # 0x10ca8
leaq 0x15a(%rip), %rcx       # 0x5641
movq %rcx, 0xb7f2(%rip)      # 0x10ce0
movq %rax, 0xad43(%rip)      # 0x10238
leaq 0xae6c(%rip), %rdi      # 0x10368
movl $0x3f5, %esi            # imm = 0x3F5
callq 0x3200
testq %rax, %rax
je 0x5635
movq %rax, %rbx
leaq 0xacb7(%rip), %rdi      # 0x101d0
callq 0x3180
testl %eax, %eax
js 0x5628
leaq 0x4230(%rip), %rsi      # 0x975d
leaq 0xac9c(%rip), %rdx      # 0x101d0
movq %rbx, %rdi
callq 0x32c0
leaq 0x3e12(%rip), %rsi      # 0x9355
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x4007(%rip), %rsi      # 0x955e
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3def(%rip), %rsi      # 0x935a
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3050
leaq 0x3de4(%rip), %rsi      # 0x9360
movl $0x14, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3ddd(%rip), %rsi      # 0x936d
movl $0xa, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3f7b(%rip), %rsi      # 0x951f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3dc0(%rip), %rsi      # 0x9378
movl $0x64, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3fc5(%rip), %rsi      # 0x9591
movl $0xc8, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3da3(%rip), %rsi      # 0x9383
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3050
leaq 0x3da5(%rip), %rsi      # 0x9396
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x4534(%rip), %rsi      # 0x9b39
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x3d92(%rip), %rsi      # 0x93ab
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3050
jmp 0x5637
decq (%rbx)
jne 0x5635
movq %rbx, %rdi
callq 0x30d0
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
retq