Vector35 / Vector35/binaryninja-api
Simplify condition `(A && B) || (A && !B)` => `A`
Open
Nobody has claimed this yet.
Core: HLIL
Effort: Low
Effort: Medium
IL Optimization
- Dominant language
- C++
- Stars
- 1.3k
- Forks
- 298
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 19
Description
Internal test binary win32_x86.dll @ address 0x10001f68 exhibits this problem.
10001f68 if (eax == 0 || (data_10004040 == 0 && ebx.b != 0) || (data_10004040 == 0 && ebx.b == 0))
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the internal test binary win32_x86.dll and inspect the output at address 0x10001f68, where the redundant condition is shown. Trace the simplification or decompilation entry point that produces this expression; done means the equivalent condition is emitted as A rather than repeating A && B and A && !B.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- reverse-engineering
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100