The decompiler makes some assumptions about the input code. Like that call instructions usually return, the memory model is flat, the function frame is set properly, etc. When these assumptions are correct, the output is good. When they are wrong, well, the output does not correspond to the input. Take, for example, the following snippet:
The decompiler produces the following pseudocode:
Apparently, the v3 variable (it corresponds to edx) is not initialized at all. Why?
There are 31,328 total registered users.
[+] expand