#1070 Incorrect decompilation of switch statement fixed

This commit is contained in:
2015-12-03 09:40:26 +01:00
parent 35b917eca1
commit 507cc4c29b
4 changed files with 23 additions and 5 deletions
@@ -1297,6 +1297,16 @@ public class AVM2Code implements Cloneable {
return ret;
}
public AVM2Instruction adr2ins(long address) throws ConvertException {
int pos = adr2pos(address, false);
if (pos == code.size()) {
// end
return null;
}
return code.get(pos);
}
public int adr2pos(long address) throws ConvertException {
return adr2pos(address, false);
}
@@ -146,7 +146,6 @@ public class AVM2DeobfuscatorRegistersOld extends AVM2DeobfuscatorSimpleOld {
originalBody.exceptions = body.exceptions;
originalBody.setCode(body.getCode());
}
private int getFirstRegisterSetter(Reference<AVM2Instruction> assignment, int classIndex, boolean isStatic, int scriptIndex, ABC abc, MethodBody body, Set<Integer> ignoredRegisters, Set<Integer> ignoredGets) throws InterruptedException {
@@ -383,6 +383,10 @@ public class AVM2Instruction implements Cloneable, GraphSourceItem {
return offset + 4 /*getBytesLength()*/ + operands[0];
}
public void setTargetOffset(int offset) {
operands[0] = offset;
}
@Override
public List<Integer> getBranches(GraphSource code) {
List<Integer> ret = new ArrayList<>();