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;
+ }
}