Problem.
Incorrect processing of overlapped registers.
e.g. when decompiling the following code
.......
xor ecx, ecx
mov cl, <memory address="" 1="">
test ecx, ecx
jnz <memory address="" 2="">
..........
boomerang assumes that condition is always false but it is not.</memory></memory>
Solution.
Flag overlappedRegProcessingDone of BasicBlock should by false after new
BasicBlock creation. But 2 of 3 constructors of BasicBlock do not
initialise it.
Attached pathch shoud fix it.
It might be so... but I am currently involved with former 'smartdec', now called 'snowman', so I am looking for a new administrator for the project and will not add anything to it until we find this person.