After some instructions, value inside some arithmetic flags may be undefined. X86 semantics currently handle this non-uniformly by either using __remill_undefined_* intrinsics, storing arbitrary values, or ignoring the undefined value altogether.
Ideal solution would be to always use __remill_undefined_* but add an extra argument, that can be used to indicate a preferred value.
Unfortunately a list of all affected instructions is rather long. Non-exhaustive list of instructions to check:
After some instructions, value inside some arithmetic flags may be undefined. X86 semantics currently handle this non-uniformly by either using
__remill_undefined_*
intrinsics, storing arbitrary values, or ignoring the undefined value altogether.Ideal solution would be to always use
__remill_undefined_*
but add an extra argument, that can be used to indicate a preferred value. Unfortunately a list of all affected instructions is rather long. Non-exhaustive list of instructions to check: