// File: /workspace/github_c_makefile_star2_O2/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 %r15
pushq %r14
pushq %rbx
leaq 0x15f(%rip), %rax       # 0x49e9
movq %rax, 0xa417(%rip)      # 0xeca8
leaq 0xa410(%rip), %rax      # 0xeca8
leaq 0x14f(%rip), %rcx       # 0x49ee
movq %rcx, 0xa43a(%rip)      # 0xece0
movq %rax, 0x998b(%rip)      # 0xe238
leaq 0x9ab4(%rip), %rdi      # 0xe368
movl $0x3f5, %esi            # imm = 0x3F5
callq 0x3200
testq %rax, %rax
je 0x49de
movq %rax, %rbx
leaq 0x98ff(%rip), %rdi      # 0xe1d0
callq 0x3180
testl %eax, %eax
js 0x49d6
leaq 0x3e68(%rip), %rsi      # 0x874d
leaq 0x98e4(%rip), %rdx      # 0xe1d0
movq %rbx, %rdi
callq 0x32c0
leaq 0x3a4a(%rip), %rsi      # 0x8345
pushq $0x1
popq %r14
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3050
leaq 0x3c3d(%rip), %rsi      # 0x854e
pushq $0x2
popq %r15
movq %rbx, %rdi
movq %r15, %rdx
callq 0x3050
leaq 0x3a23(%rip), %rsi      # 0x834a
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3050
leaq 0x3a18(%rip), %rsi      # 0x8350
pushq $0x14
popq %rdx
movq %rbx, %rdi
callq 0x3050
leaq 0x3a13(%rip), %rsi      # 0x835d
pushq $0xa
popq %rdx
movq %rbx, %rdi
callq 0x3050
leaq 0x3bb3(%rip), %rsi      # 0x850f
pushq $0x1e
popq %rdx
movq %rbx, %rdi
callq 0x3050
leaq 0x39fa(%rip), %rsi      # 0x8368
pushq $0x64
popq %rdx
movq %rbx, %rdi
callq 0x3050
leaq 0x3c01(%rip), %rsi      # 0x8581
movl $0xc8, %edx
movq %rbx, %rdi
callq 0x3050
leaq 0x39df(%rip), %rsi      # 0x8373
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3050
leaq 0x39e1(%rip), %rsi      # 0x8386
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3050
leaq 0x4172(%rip), %rsi      # 0x8b29
movq %rbx, %rdi
movq %r15, %rdx
callq 0x3050
leaq 0x39d2(%rip), %rsi      # 0x839b
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3050
jmp 0x49e0
movq %rbx, %rdi
callq 0x37d5
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq