Это невозможно. Никто никогда не создавал такой инструмент.
В целом оптимизированный код не может быть преобразован обратно в C++. Оптимизация работает с промежуточным представлением, которое выглядит как ассемблер. Например, оптимизатор может объединять части функций, если они выглядят одинаково. Как вы можете представить это на C++? Если вы дублируете объединенные части, это не будет истинным представлением кода. Существует несколько других подобных случаев с временными переменными, контроль потоков (переходы с if-else и т.п.), исключения подвыражений и другие.
Лучшее, что вы можете сделать, это распечатать ассемблер и попытаться понять, что происходит в коде. Я бы рекомендовал вам играть с небольшими 3-5-строчными функциями и сравнивать списки ассемблеров после небольшой модификации вашей функции. Сравнение различий в функции с разницей в коде ассемблера часто говорит о многом.
Некоторое время назад я столкнулся с «оптимизацией компоновщика». В моей программе было несколько абсолютно идентичных функций (это было необходимо), которые линкер решил объединить в один. Ничего не работало, пока я не понял это.
Google «дизассемблер» – Angew
Вам нужен * unpiler *. Хотя я не уверен, что существует. –
Возможный дубликат [Opensource C/C++ decompiler] (http://stackoverflow.com/questions/711220/opensource-cc-decompiler) –