Tool

decomp-permuter

Randomly or systematically permutes one C function, recompiling each variant and scoring it against a target object file to search for matching compiler output. PERM macros specify manual alternatives, and the optional permuter@home mode distributes runs to other workers.

Requirements and limitations

  • Each input directory needs a single-function .c file, the target .o, a project-specific compile script and a settings .toml; import.py can generate them for configured Make or Ninja projects. The README lists MIPS (IDO, possibly GCC), PowerPC and ARM32 assembly.
  • Requires Python 3 and toml; pynacl and Levenshtein are optional. permuter@home needs access granted by an existing network member, supports a limited compiler list and does not run on native Windows; workers also need Docker.
  • A zero score means the scored disassembly matches, not that the C is plausible. The README warns that random passes often find nonsensical changes, so a human must still choose readable, non-overfitted code; the tool does not recover names, types or semantics.
  • MIT license. No packaged release; last commit at review: 2026-10-06.

About this entry

Type
Tool
Category
Game analysis tools
Relationship
Foundation tool
Targets
Binary · Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Primary sources

  1. https://github.com/simonlindholm/decomp-permuter/blob/8556c81d80d1c1af98a858c8f4dc951357f29139/README.md
  2. https://github.com/simonlindholm/decomp-permuter/blob/8556c81d80d1c1af98a858c8f4dc951357f29139/LICENSE