\myheading{Difference between toy decompiler and commercial-grade one} Perhaps, someone, who currently reading this text, may rush into extending my source code. As an exercise, I would say, that the first step could be support of partial registers: i.e., AL, AX, EAX. This is tricky, but doable. Another task may be support of \ac{FPU} x86 instructions (\ac{FPU} stack modeling isn't a big deal). The gap between toy decompiler and a commercial decompiler like Hex-Rays is still enormous. Several tricky problems must be solved, at least these: \begin{itemize} \item C data types: arrays, structures, pointers, etc. This problem is virtually non-existent for \ac{JVM} (Java, etc) and .NET decompilers, because type information is present in binary files. \item Basic blocks, C/C++ statements. Mike Van Emmerik in his thesis \footnote{\url{https://yurichev.com/mirrors/vanEmmerik_ssa.pdf}} shows how this can be tackled using \ac{SSA} forms (which are also used heavily in compilers). \item Memory support, including local stack. Keep in mind pointer aliasing problem. Again, decompilers of \ac{JVM} and .NET files are simpler here. \end{itemize}