Removal of branch in HLIL or greater #5907
-
so i've been testing things out to see if it's for me and there's something going on that makes me wonder what's going on. w/ disassembly: 0000071c void sub_71c() __noreturn w/ pseudo-c (similarly w/ the various intermediate formats that free allows) 0000071c void sub_71c() __noreturn the whole bit calling sub_878 and sub_680 are just gone from the higher level formats? is this just a free/trial thing or something else? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
It's because the branch to get to those calls is never taken, or well, our analysis is under the assumption it is never taken.
There is two things you can do to fix the dataflow from removing unused code.
Another thing that can do call removals is pure functions with unused return value: |
Beta Was this translation helpful? Give feedback.
-
0000072a 134b ldr r3, [pc, #0x4c] {data_778} ahhh…. i didn’t stare at the disassembly enough before scratching my head at the decompile output. thanks. |
Beta Was this translation helpful? Give feedback.
It's because the branch to get to those calls is never taken, or well, our analysis is under the assumption it is never taken.
There is two things you can do to fix the dataflow from removing unused code.
analysis.keepDeadCodeBranches
which should keep that branch from being removed.data_8004000
writable so that the analysis cannot assume its value never changes, and/or patch it to the desired value.Another thing that can do call removals is pure funct…