Есть такая страшная вещь - оптимизация кода при компиляции. После нее бывает такой винигрет, что написать с нуля гораздо проще. Вот утрированный пример, в реальной жизни все еще хуже. Представь - есть 2 подпрограммы. Одна выводит слово "благоустроить", другая "строительство". Компилятор выделит участок, выводящий слово "строит", в отдельную подпрограмму, и будет вызывать ее из 2-х мест. Автор кода, понятное дело, так не задумывал. Но результат все равно одинаковый, а размер программы - меньше. Или такой случай. Есть функция, вычисляющая сложным способом результат на основе полученных аргументов. Функция несомненно имеет смысл, важный для понимания программы. Но, если в данной реализации она вызывается всего один раз и с одним константным аргументом - компилятор вычислит результат и вместо вызова функции сделает присвоение переменной этого результата.
Декомпилированный код (допустим существование гипотетического декомпилятора) не будет идентичен исходному.