diff --git a/.classpath b/.classpath index 8b3393b602..bb4ae148a3 100644 --- a/.classpath +++ b/.classpath @@ -12,12 +12,12 @@ - + - + diff --git a/src/main/java/info/sigterm/deob/Deob.java b/src/main/java/info/sigterm/deob/Deob.java index d07ee7d205..771dad7f38 100644 --- a/src/main/java/info/sigterm/deob/Deob.java +++ b/src/main/java/info/sigterm/deob/Deob.java @@ -42,7 +42,7 @@ public class Deob //execute(group); - JarOutputStream jout = new JarOutputStream(new FileOutputStream("d:/rs/07/adamout.jar"), new Manifest()); + JarOutputStream jout = new JarOutputStream(new FileOutputStream(args[1]), new Manifest()); for (ClassFile cf : group.getClasses()) { diff --git a/src/main/java/info/sigterm/deob/Method.java b/src/main/java/info/sigterm/deob/Method.java index d4971630d3..707d5d9d4b 100644 --- a/src/main/java/info/sigterm/deob/Method.java +++ b/src/main/java/info/sigterm/deob/Method.java @@ -21,7 +21,7 @@ public class Method private int nameIndex; private int descriptorIndex; private Attributes attributes; - public List callsTo = new ArrayList<>(), + private List callsTo = new ArrayList<>(), callsFrom = new ArrayList<>(); Method(Methods methods) throws IOException diff --git a/src/main/java/info/sigterm/deob/attributes/code/instruction/types/LVTInstruction.java b/src/main/java/info/sigterm/deob/attributes/code/instruction/types/LVTInstruction.java new file mode 100644 index 0000000000..147f922cd9 --- /dev/null +++ b/src/main/java/info/sigterm/deob/attributes/code/instruction/types/LVTInstruction.java @@ -0,0 +1,7 @@ +package info.sigterm.deob.attributes.code.instruction.types; + +public interface LVTInstruction +{ + public int getVariableIndex(); + public boolean store(); +} diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad.java index e02eb6b5ab..eac85a4ebf 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad.java @@ -1,15 +1,17 @@ package info.sigterm.deob.attributes.code.instructions; +import info.sigterm.deob.Method; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class ALoad extends Instruction +public class ALoad extends Instruction implements LVTInstruction { private int index; @@ -35,4 +37,16 @@ public class ALoad extends Instruction Object obj = frame.getVariables().get(index); frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_0.java index 19ab7c30f0..64333e96e1 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ALoad_0 extends Instruction +public class ALoad_0 extends Instruction implements LVTInstruction { public ALoad_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class ALoad_0 extends Instruction Object obj = frame.getVariables().get(0); frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_1.java index 165aeb76e1..e1b3f93b0b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ALoad_1 extends Instruction +public class ALoad_1 extends Instruction implements LVTInstruction { public ALoad_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class ALoad_1 extends Instruction Object obj = frame.getVariables().get(1); frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_2.java index 8d2847d129..79028efe52 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ALoad_2 extends Instruction +public class ALoad_2 extends Instruction implements LVTInstruction { public ALoad_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class ALoad_2 extends Instruction Object obj = frame.getVariables().get(2); frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_3.java index dce3479ff8..0cacbc1005 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ALoad_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ALoad_3 extends Instruction +public class ALoad_3 extends Instruction implements LVTInstruction { public ALoad_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class ALoad_3 extends Instruction Object obj = frame.getVariables().get(3); frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore.java index af850320d9..eb23324756 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class AStore extends Instruction +public class AStore extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class AStore extends Instruction Object obj = frame.getStack().pop(); frame.getVariables().set(index, obj); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_0.java index 7105335631..9b02a5f42a 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class AStore_0 extends Instruction +public class AStore_0 extends Instruction implements LVTInstruction { public AStore_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class AStore_0 extends Instruction Object obj = frame.getStack().pop(); frame.getVariables().set(0, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_1.java index ae0ad6b66e..30ef8a7c14 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class AStore_1 extends Instruction +public class AStore_1 extends Instruction implements LVTInstruction { public AStore_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class AStore_1 extends Instruction Object obj = frame.getStack().pop(); frame.getVariables().set(1, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_2.java index 5fe5ded856..4dfb48041b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class AStore_2 extends Instruction +public class AStore_2 extends Instruction implements LVTInstruction { public AStore_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class AStore_2 extends Instruction Object obj = frame.getStack().pop(); frame.getVariables().set(2, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_3.java index 92e977cfe5..2940295816 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AStore_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class AStore_3 extends Instruction +public class AStore_3 extends Instruction implements LVTInstruction { public AStore_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class AStore_3 extends Instruction Object obj = frame.getStack().pop(); frame.getVariables().set(3, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad.java index d7ac978dd3..2710811c5f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class DLoad extends Instruction +public class DLoad extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class DLoad extends Instruction double d = (double) frame.getVariables().get(index); frame.getStack().push(this, d); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_0.java index e04ea1e493..c2e672efd4 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DLoad_0 extends Instruction +public class DLoad_0 extends Instruction implements LVTInstruction { public DLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DLoad_0 extends Instruction assert obj instanceof Double; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_1.java index 61707c595d..d4f5bb13b7 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DLoad_1 extends Instruction +public class DLoad_1 extends Instruction implements LVTInstruction { public DLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DLoad_1 extends Instruction assert obj instanceof Double; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_2.java index 1d6d92dce5..9f37a5fbef 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DLoad_2 extends Instruction +public class DLoad_2 extends Instruction implements LVTInstruction { public DLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DLoad_2 extends Instruction assert obj instanceof Double; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_3.java index fea5da2498..3de39ea475 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DLoad_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DLoad_3 extends Instruction +public class DLoad_3 extends Instruction implements LVTInstruction { public DLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DLoad_3 extends Instruction assert obj instanceof Double; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore.java index ed156a3521..b945ab11b6 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class DStore extends Instruction +public class DStore extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class DStore extends Instruction double d = (double) frame.getStack().pop(); frame.getVariables().set(index, d); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_0.java index c662cf9347..79f47d28ab 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DStore_0 extends Instruction +public class DStore_0 extends Instruction implements LVTInstruction { public DStore_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DStore_0 extends Instruction assert obj instanceof Double; frame.getVariables().set(0, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_1.java index caabdf9bc6..f979e891a3 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DStore_1 extends Instruction +public class DStore_1 extends Instruction implements LVTInstruction { public DStore_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DStore_1 extends Instruction assert obj instanceof Double; frame.getVariables().set(1, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_2.java index e409823d12..8022189ffb 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DStore_2 extends Instruction +public class DStore_2 extends Instruction implements LVTInstruction { public DStore_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DStore_2 extends Instruction assert obj instanceof Double; frame.getVariables().set(2, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_3.java index bd229b6b47..f8a9201e71 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DStore_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class DStore_3 extends Instruction +public class DStore_3 extends Instruction implements LVTInstruction { public DStore_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class DStore_3 extends Instruction assert obj instanceof Double; frame.getVariables().set(3, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad.java index d1dbc79960..3df7123a34 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class FLoad extends Instruction +public class FLoad extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class FLoad extends Instruction float f = (float) frame.getVariables().get(index); frame.getStack().push(this, f); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_0.java index f18ce0caaf..4efd804b80 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FLoad_0 extends Instruction +public class FLoad_0 extends Instruction implements LVTInstruction { public FLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FLoad_0 extends Instruction assert obj instanceof Float; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_1.java index ec7948ac72..8ea09c7cf1 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FLoad_1 extends Instruction +public class FLoad_1 extends Instruction implements LVTInstruction { public FLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FLoad_1 extends Instruction assert obj instanceof Float; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_2.java index 10c82978fa..e0228dfa14 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FLoad_2 extends Instruction +public class FLoad_2 extends Instruction implements LVTInstruction { public FLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FLoad_2 extends Instruction assert obj instanceof Float; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_3.java index 667bf80f48..3ae1971bed 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FLoad_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FLoad_3 extends Instruction +public class FLoad_3 extends Instruction implements LVTInstruction { public FLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FLoad_3 extends Instruction assert obj instanceof Float; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore.java index d4c272c29d..5553732d7a 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class FStore extends Instruction +public class FStore extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class FStore extends Instruction float f = (float) frame.getStack().pop(); frame.getVariables().set(index, f); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_0.java index a6a0e26701..b977086db9 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FStore_0 extends Instruction +public class FStore_0 extends Instruction implements LVTInstruction { public FStore_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FStore_0 extends Instruction assert obj instanceof Float; frame.getVariables().set(0, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_1.java index 47635838f5..4a68634e8f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FStore_1 extends Instruction +public class FStore_1 extends Instruction implements LVTInstruction { public FStore_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FStore_1 extends Instruction assert obj instanceof Float; frame.getVariables().set(1, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_2.java index f77a7440c4..ac5e42d922 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FStore_2 extends Instruction +public class FStore_2 extends Instruction implements LVTInstruction { public FStore_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FStore_2 extends Instruction assert obj instanceof Float; frame.getVariables().set(2, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_3.java index 718c9722d9..bcf3ab6e3f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FStore_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class FStore_3 extends Instruction +public class FStore_3 extends Instruction implements LVTInstruction { public FStore_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class FStore_3 extends Instruction assert obj instanceof Float; frame.getVariables().set(3, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IInc.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IInc.java index e7bc03f3bd..4abea45b48 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IInc.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IInc.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class IInc extends Instruction +public class IInc extends Instruction implements LVTInstruction { private byte index; private byte inc; @@ -39,4 +40,16 @@ public class IInc extends Instruction i += inc; frame.getVariables().set(index, i); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return false; // This is a get first + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad.java index 614ac58742..0738c1b82c 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class ILoad extends Instruction +public class ILoad extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class ILoad extends Instruction Object i = frame.getVariables().get(index); frame.getStack().push(this, i); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_0.java index 2c5b4f912d..d077177ded 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ILoad_0 extends Instruction +public class ILoad_0 extends Instruction implements LVTInstruction { public ILoad_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class ILoad_0 extends Instruction assert obj instanceof Integer; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_1.java index 0c999aabc0..4a92ec5b46 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ILoad_1 extends Instruction +public class ILoad_1 extends Instruction implements LVTInstruction { public ILoad_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -20,4 +21,16 @@ public class ILoad_1 extends Instruction Object obj = frame.getVariables().get(1); frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_2.java index 51dfdd7122..50cea129af 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ILoad_2 extends Instruction +public class ILoad_2 extends Instruction implements LVTInstruction { public ILoad_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class ILoad_2 extends Instruction assert obj instanceof Integer; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_3.java index a5188f3e07..7525a1463b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ILoad_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class ILoad_3 extends Instruction +public class ILoad_3 extends Instruction implements LVTInstruction { public ILoad_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class ILoad_3 extends Instruction assert obj instanceof Integer; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore.java index c3fd4ea135..557753c761 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class IStore extends Instruction +public class IStore extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class IStore extends Instruction Object obj = frame.getStack().pop(); frame.getVariables().set(index, obj); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_0.java index dfa6ec4800..7a307a7938 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class IStore_0 extends Instruction +public class IStore_0 extends Instruction implements LVTInstruction { public IStore_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class IStore_0 extends Instruction assert obj instanceof Integer; frame.getVariables().set(0, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_1.java index a56d55fa12..3dfab0b575 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class IStore_1 extends Instruction +public class IStore_1 extends Instruction implements LVTInstruction { public IStore_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class IStore_1 extends Instruction assert obj instanceof Integer; frame.getVariables().set(1, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_2.java index 7dd24e2c2f..60595de817 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class IStore_2 extends Instruction +public class IStore_2 extends Instruction implements LVTInstruction { public IStore_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class IStore_2 extends Instruction assert obj instanceof Integer; frame.getVariables().set(2, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_3.java index fdc3a93de2..5d5fc4e5eb 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IStore_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class IStore_3 extends Instruction +public class IStore_3 extends Instruction implements LVTInstruction { public IStore_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class IStore_3 extends Instruction assert obj instanceof Integer; frame.getVariables().set(3, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad.java index 658dc698d7..92d78f9eb0 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class LLoad extends Instruction +public class LLoad extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class LLoad extends Instruction long l = (long) frame.getVariables().get(index); frame.getStack().push(this, l); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_0.java index d77f4095c7..9db13ec982 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LLoad_0 extends Instruction +public class LLoad_0 extends Instruction implements LVTInstruction { public LLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LLoad_0 extends Instruction assert obj instanceof Long; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_1.java index 91fff05793..7fcd8cc23b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LLoad_1 extends Instruction +public class LLoad_1 extends Instruction implements LVTInstruction { public LLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LLoad_1 extends Instruction assert obj instanceof Long; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_2.java index c1429cdeb8..61e2fc237d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LLoad_2 extends Instruction +public class LLoad_2 extends Instruction implements LVTInstruction { public LLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LLoad_2 extends Instruction assert obj instanceof Long; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_3.java index ff1b5373f1..9791c8477b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LLoad_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LLoad_3 extends Instruction +public class LLoad_3 extends Instruction implements LVTInstruction { public LLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LLoad_3 extends Instruction assert obj instanceof Long; frame.getStack().push(this, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return false; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore.java index 4b523ecb12..4f0cf4ab36 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore.java @@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class LStore extends Instruction +public class LStore extends Instruction implements LVTInstruction { private int index; @@ -35,4 +36,16 @@ public class LStore extends Instruction long l = (long) frame.getStack().pop(); frame.getVariables().set(index, l); } + + @Override + public int getVariableIndex() + { + return index; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_0.java index 91ecf8acda..1931f12a9d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_0.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LStore_0 extends Instruction +public class LStore_0 extends Instruction implements LVTInstruction { public LStore_0(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LStore_0 extends Instruction assert obj instanceof Long; frame.getVariables().set(0, obj); } + + @Override + public int getVariableIndex() + { + return 0; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_1.java index b449ccc78f..6fe9e715d5 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_1.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LStore_1 extends Instruction +public class LStore_1 extends Instruction implements LVTInstruction { public LStore_1(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LStore_1 extends Instruction assert obj instanceof Long; frame.getVariables().set(1, obj); } + + @Override + public int getVariableIndex() + { + return 1; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_2.java index b4841fd62b..0a8b7e1060 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_2.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LStore_2 extends Instruction +public class LStore_2 extends Instruction implements LVTInstruction { public LStore_2(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LStore_2 extends Instruction assert obj instanceof Long; frame.getVariables().set(2, obj); } + + @Override + public int getVariableIndex() + { + return 2; + } + + @Override + public boolean store() + { + return true; + } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_3.java index 40cfbd3c74..d900e7b899 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LStore_3.java @@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions; import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.Instructions; +import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction; import info.sigterm.deob.execution.Frame; import java.io.IOException; -public class LStore_3 extends Instruction +public class LStore_3 extends Instruction implements LVTInstruction { public LStore_3(Instructions instructions, InstructionType type, int pc) throws IOException { @@ -21,4 +22,16 @@ public class LStore_3 extends Instruction assert obj instanceof Long; frame.getVariables().set(3, obj); } + + @Override + public int getVariableIndex() + { + return 3; + } + + @Override + public boolean store() + { + return true; + } }