This directory contains contributions that do not belong to the core engine.
Code here might be helpful for those who want to integrate Capstone into
their own projects.

The license of these code was defined by their authors.
