Depends on the complexity of the program code. When you have a function or function block with only simple operations, then it's you it's relatively easy to manually restore the original source code. An example which is relatively easy to restore, is the source from the Siemens library Cont_c PID FB.
It gets more complicated, when there were used UDTs/structs, At-views, more than one dimensional arrays or external datablocks. Structs or AT-views can't be restored. Some SCL control structures (For / Repeat) will generate the same IL code, so you can't determine which one was used in the original code.