if ( result->f0 < 1 )
result->f0 += 12;
if ( result->f0 > 12 )
result->f0 -= 12;
Added support for tail calls to vararg functions that do not use the input arguments .
Added support for uninitialized structures passed by value
2-way (or less) switch statements are supported
Calls to alloca() are displayed in the output.
unfortunately, the return value is not linked to the rest of the output Better handling of non-int size arithmetics Better support of the cpuid insn
Decompiler uses structure offset information if present in the disassembler listing
Decompiler does not generate casts for the right operand of a shift operation
If the decompiler detects that a function call uses uninitialized variables, it may correct the callee's prototype on the fly (unless it has been specified by the user)
Improved the logic that handles representation of numbers: more numbers are handled
More robust handling of jumpout cases
References to global names hidden by a local name are
prefixed with :: (x >> n1) >> n2 is optimized into x >> (n1+n2)
Negated hex numbers like 0xFFFFFFB5 are displayed in short form (0xB5) if the meaning of the code stays the same
bugfix: a __thiscall prototype without any arguments could crash the decompiler
bugfix: decompiler could dereference arrays of pointers to udts too many times (it could generate var[idx]->field instead of simply var[idx])
bugfix: decompiler could loop infinitely if a reference to wrongly defined type was present (for example, "struct xxx" while the type library has "enum xxx", not struct)
bugfix: decompiler was offering new structure types without considering the default structure alignment; for packed structures, the result could be wrong
bugfix: functions with invalid basic blocks could be decompiled incompletely (some input code would not be decompiled at all)
bugfix: if the result of a builtin function was truncated before the use, the function would not be recognized
bugfix: in some rare cases the value propagation could produce wrong results
bugfix: instruction combination algorithm could produce incorrect results
bugfix: j[er]cxz could not be decompiled if the operand size and address size
were different
bugfix: references to an array element that was pointed by a structure field were represented incorrectly
bugfix: some unsupported instructions were causing lvar allocation failure
bugfix: the decompiler would wrongly eliminate the cast in "(int64)x << s"
bugfix: the same name could be used as a local variable name and a function argument name at the same time
bugfix: many interrs (mostly rare and difficult to reproduce) have been fixed