- Git — чтобы склонировать репозиторий i12bp8/decomp.wtf.
- Компилятор C (gcc или clang) — чтобы собрать сгенерированный исходник и сравнить результат с оригиналом.
- sha256sum и cmp (Linux/macOS); в Windows — certutil -hashfile и fc /b.
- Ваш собственный бинарник игры, на который у вас есть права.
- Свободное место на диске — конкретный объём в посте не приводится, сверьтесь с README проекта.

git --version. Ожидаемый результат — строка вида git version <номер>.gcc --version или clang --version. Компилятор нужен не для красоты: главный результат работы агента — исходник на C, который компилируется в бинарник, побайтово совпадающий с оригиналом, значит собрать его придётся вам.sha256sum --version и cmp --version. SHA-256 — хэш-функция: она превращает файл в короткую строку, и два одинаковых файла дают одинаковую строку. Это самый быстрый способ увидеть, совпали ли бинарники.Чек-лист перед стартом:
git --version отвечает без ошибокgcc --version (или clang --version) отвечает без ошибокsha256sum и cmp доступныi12bp8/decomp.wtfЧто сделать: склонировать проект i12bp8/decomp.wtf (внутри он называется What The Function — ИИ-агент для декомпиляции игр), зайти в каталог, прочитать README и сразу снять хэш оригинального бинарника.
git clone https://github.com/i12bp8/decomp.wtf.git
cd decomp.wtf
ls -la
git log -1 --oneline
sha256sum ./<ваша-игра> | tee original.sha256
Зачем: README — единственный источник точных команд запуска и требований к окружению для этого проекта; без него дальше идти нельзя. Хэш оригинала нужен как эталон: весь смысл проекта в побайтовом совпадении, а сравнивать не с чем, если эталон не снят заранее.
Как проверить: ls -la показывает файлы проекта, среди них README и файл запуска; git log -1 --oneline печатает один коммит вида <hash> <сообщение>. Команда sha256sum создаёт файл original.sha256 — проверьте: cat original.sha256.
Пример: для бинарника my_game.bin вы увидите в original.sha256 строку <64-символьный-хэш> ./my_game.bin. Эта строка — ваш эталон на весь гайд.
Почему это работает: git копирует репозиторий целиком, а tee одновременно печатает хэш на экран и пишет его в файл, поэтому эталон не потеряется между шагами.

Что сделать: посмотреть справку CLI и запустить агент так, как написано в README, передав ему путь к оригинальному бинарнику и каталог для результата.
./decomp.wtf --help
Дальше — по строке из README. Общий вид команды:
<команда-запуска-из-README> <путь-к-бинарнику> <каталог-вывода>
Точные флаги, имя исполняемого файла и способ передачи пути к бинарнику в посте не приводятся — их нужно взять из --help и README, не угадывать.
Зачем: агент сам выполняет цепочку шагов — разбирает бинарник, восстанавливает логику и пишет исходник на C. Вы не пишете код руками, вы задаёте вход и выход и следите за процессом. Механику таких программ в общем виде разбирает гид по ИИ-агентам для автоматизации задач.
Как проверить: после запуска в каталоге вывода появились файлы .c и, как правило, лог. Проверьте:
ls -la ./out
find ./out -name "*.c" | head
Ожидаемый результат — минимум один файл с расширением .c и ненулевой размер. Если каталог пуст, агент не дошёл до генерации: смотрите лог.
Пример: запуск выглядит как <команда> ./my_game.bin ./out, а через некоторое время в ./out лежит my_game.c. Замерьте время сами — например, обернув вызов в time — и используйте только своё число: в исходном посте цифр производительности нет.
Почему это работает локально: агент не отправляет бинарник в облако, весь разбор идёт на вашей машине, поэтому скорость зависит от вашего процессора и выбранной модели, а не от сети.

Что сделать: скомпилировать полученный .c тем же компилятором и с теми же флагами, которыми собран оригинал, затем сравнить файлы.
gcc -O2 -o rebuilt ./out/my_game.c
sha256sum ./my_game.bin ./rebuilt
cmp ./my_game.bin ./rebuilt && echo "BYTE-IDENTICAL"
Флаги -O2 — пример; реальные флаги оригинала возьмите из README проекта или из сборочного скрипта. Если флаги не совпадут, байты почти наверняка разойдутся.
Зачем: это и есть проверка обещания проекта. cmp сравнивает файлы байт за байтом и молчит, только если они идентичны; sha256sum даёт вторую, независимую проверку.
Как проверить: успех выглядит так — обе строки хэшей одинаковые, cmp ничего не печатает, на экране появляется BYTE-IDENTICAL:
<одинаковый-хэш> ./my_game.bin
<одинаковый-хэш> ./rebuilt
BYTE-IDENTICAL
Если вместо этого вы увидели ./my_game.bin ./rebuilt differ: byte 4021, line 1 — совпадения нет, переходите к разделу проблем. Если нужна помощь с чтением ошибок компилятора C, пригодится подборка ИИ для программистов: помощники для кода.
Дополнительно убедитесь, что собранный файл вообще запускается: file ./rebuilt должен показать тот же формат, что и file ./my_game.bin.
Проблема. Клонирование обрывается на первом шаге.
fatal: repository 'https://github.com/i12bp8/decomp.wtf.git/' not foundgit ls-remote https://github.com/i12bp8/decomp.wtf.git. Если команда тоже падает, сверьте актуальное имя проекта i12bp8/decomp.wtf в README и на странице проекта; при сетевой ошибке проверьте прокси и git config --get http.proxy.Проблема. Файл не запускается после клонирования.
zsh: permission denied: ./decomp.wtfchmod +x ./decomp.wtf и повторите запуск. Проверка: ls -l ./decomp.wtf показывает -rwxr-xr-x.Проблема. Собранный бинарник короче оригинала.
cmp: EOF on ./rebuilt after byte 1048576rebuilt закончился раньше оригинала — почти всегда это другие флаги сборки, другой компилятор или выкинутые секции (отладочные символы, таблицы). Агент восстановил код, но собрали вы его иначе.ls -l ./my_game.bin ./rebuilt. Только после совпадения размеров запускайте cmp снова.Вы склонировали i12bp8/decomp.wtf, сняли хэш оригинала, получили исходник на C и проверили его сборкой до побайтового совпадения через cmp. Дальше перенесите команды шага 1 и шага 3 в скрипт, чтобы каждый новый бинарник проверялся одинаково и без ручных шагов.
Что такое decomp.wtf?
Это проект i12bp8/decomp.wtf с внутренним названием What The Function — ИИ-агент для декомпиляции игр, то есть для восстановления исходного кода из готового бинарника. Результат его работы — исходник на C, который компилируется в бинарник, побайтово совпадающий с оригиналом.
Нужен ли интернет или облако для работы?
Нет, агент работает локально, на машине пользователя. Требования к локальной модели и её параметрам в посте не указаны — сверьтесь с README проекта.
Всегда ли получается побайтовое совпадение?
В описании проекта результат заявлен как побайтово совпадающий бинарник, но статистики успешных и неуспешных прогонов в посте нет. Поэтому проверка обязательна: cmp ./my_game.bin ./rebuilt && echo "BYTE-IDENTICAL".
На каком языке выдаётся результат?
На C. Другие языки на выходе в исходном посте не упоминаются.