ddisasm is a bi-directional disassembler-assembler. It allows one to disassemble (not decompile) a binary, modiry the assembly and then assemble it back into a binary. In order to do this, it establises a sophisticated relation in a clever version of prolog. (Which is insanely cool.) It builds its dependencies statically, including "capstone", so you do not need to install it separately. It is written in souffle.