diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AALoad.java index 25e79f1725..f4469a837b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AALoad.java @@ -29,6 +29,8 @@ public class AALoad extends Instruction StackContext ctx = new StackContext(ins, array.getType().getSubtype()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/AConstNull.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/AConstNull.java index 733be14ecb..1aa389db1f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/AConstNull.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/AConstNull.java @@ -26,6 +26,8 @@ public class AConstNull extends Instruction StackContext ctx = new StackContext(ins, Object.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } 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 4a43daab98..e5d6475be4 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 @@ -65,6 +65,8 @@ public class ALoad extends Instruction implements LVTInstruction, WideInstructio StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 be10643fb5..139e2d47b7 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 @@ -33,6 +33,8 @@ public class ALoad_0 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 d9fadd0186..85c331e103 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 @@ -33,6 +33,8 @@ public class ALoad_1 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 918f4edc92..156688f74c 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 @@ -33,6 +33,8 @@ public class ALoad_2 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 cac03591ef..9cbbfd3493 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 @@ -33,6 +33,8 @@ public class ALoad_3 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ANewArray.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ANewArray.java index 68073069d2..6a2bb248b7 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ANewArray.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ANewArray.java @@ -49,6 +49,8 @@ public class ANewArray extends Instruction StackContext ctx = new StackContext(ins, t); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ArrayLength.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ArrayLength.java index 381a80dad0..3bce31b7ef 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ArrayLength.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ArrayLength.java @@ -30,6 +30,8 @@ public class ArrayLength extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/BALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/BALoad.java index 1dde417217..3bdf5f92a8 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/BALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/BALoad.java @@ -29,6 +29,8 @@ public class BALoad extends Instruction StackContext ctx = new StackContext(ins, int.class); // sign extend stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/BiPush.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/BiPush.java index a0c9b78dfc..57f0467309 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/BiPush.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/BiPush.java @@ -41,6 +41,8 @@ public class BiPush extends Instruction StackContext ctx = new StackContext(ins, int.class); // bipush sign extends the value to an int stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/CALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/CALoad.java index 818b96ca32..057cb0558d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/CALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/CALoad.java @@ -29,6 +29,8 @@ public class CALoad extends Instruction StackContext ctx = new StackContext(ins, int.class); // zero extended to int stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/CheckCast.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/CheckCast.java index 452be308e0..ca7748f5c6 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/CheckCast.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/CheckCast.java @@ -61,6 +61,8 @@ public class CheckCast extends Instruction StackContext exception = new StackContext(ins, new Type("java/lang/Exception")); stack.push(exception); + ins.push(exception); + f.addInstructionContext(ins); f.jump(e.getHandler()); diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/D2F.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/D2F.java index acadb007fd..4924893696 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/D2F.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/D2F.java @@ -30,6 +30,8 @@ public class D2F extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/D2I.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/D2I.java index d02222f5e1..21167b5723 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/D2I.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/D2I.java @@ -30,6 +30,8 @@ public class D2I extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/D2L.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/D2L.java index 8f7828c62b..72c6d850bf 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/D2L.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/D2L.java @@ -30,6 +30,8 @@ public class D2L extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DALoad.java index 1ef544d6cb..9cacaaf037 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DALoad.java @@ -29,6 +29,8 @@ public class DALoad extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DAdd.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DAdd.java index 62a7d1df9c..4ad963c0e6 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DAdd.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DAdd.java @@ -29,6 +29,8 @@ public class DAdd extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpG.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpG.java index d724502ccd..f86aacf791 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpG.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpG.java @@ -31,6 +31,8 @@ public class DCmpG extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpL.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpL.java index ab8e3b000f..dfd9cbc200 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpL.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DCmpL.java @@ -31,6 +31,8 @@ public class DCmpL extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_0.java index af5c19faa4..ff4705f6eb 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_0.java @@ -26,6 +26,8 @@ public class DConst_0 extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_1.java index 9ea40359a6..b50529ed77 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DConst_1.java @@ -26,6 +26,8 @@ public class DConst_1 extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DDiv.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DDiv.java index 6408645320..4ef98f3e9d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DDiv.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DDiv.java @@ -29,6 +29,8 @@ public class DDiv extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } 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 c99fce8262..5c812933d3 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 @@ -67,6 +67,8 @@ public class DLoad extends Instruction implements LVTInstruction, WideInstructio StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 e83c702871..ad7e90510a 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 @@ -35,6 +35,8 @@ public class DLoad_0 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 87856ed32e..4166dbca0f 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 @@ -35,6 +35,8 @@ public class DLoad_1 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 db9ce992d6..7ee1bc41dc 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 @@ -35,6 +35,8 @@ public class DLoad_2 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 971f986997..e186f60a85 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 @@ -35,6 +35,8 @@ public class DLoad_3 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DMul.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DMul.java index 0e8326d724..a322432c1f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DMul.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DMul.java @@ -29,6 +29,8 @@ public class DMul extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DNeg.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DNeg.java index 07f36188be..3203c8c649 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DNeg.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DNeg.java @@ -27,6 +27,8 @@ public class DNeg extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DRem.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DRem.java index 770496cbf8..05ae746b4d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DRem.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DRem.java @@ -29,6 +29,8 @@ public class DRem extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/DSub.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/DSub.java index 3e8b770c37..2788b24531 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/DSub.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/DSub.java @@ -29,6 +29,8 @@ public class DSub extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup.java index 45326cbdce..bf3637a2f1 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup.java @@ -29,9 +29,13 @@ public class Dup extends Instruction StackContext ctx = new StackContext(ins, obj.getType()); stack.push(ctx); + ins.push(ctx); + ctx = new StackContext(ins, obj.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2.java index 5ddfcc68b8..92ee838b39 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2.java @@ -37,20 +37,28 @@ public class Dup2 extends Instruction { StackContext ctx = new StackContext(ins, two.getType()); stack.push(ctx); + + ins.push(ctx); } StackContext ctx = new StackContext(ins, one.getType()); stack.push(one); + + ins.push(ctx); if (two != null) { ctx = new StackContext(ins, two.getType()); stack.push(ctx); + + ins.push(ctx); } ctx = new StackContext(ins, one.getType()); stack.push(one); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X1.java index efd46e9d86..b84909b943 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X1.java @@ -39,23 +39,33 @@ public class Dup2_X1 extends Instruction { StackContext ctx = new StackContext(ins, two.getType()); stack.push(ctx); + + ins.push(ctx); } StackContext ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + ctx = new StackContext(ins, three.getType()); stack.push(ctx); + ins.push(ctx); + if (two != null) { ctx = new StackContext(ins, two.getType()); stack.push(ctx); + + ins.push(ctx); } ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X2.java index 4a55dc775d..1e7d7da866 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup2_X2.java @@ -44,29 +44,41 @@ public class Dup2_X2 extends Instruction { StackContext ctx = new StackContext(ins, two.getType()); stack.push(ctx); + + ins.push(ctx); } StackContext ctx = new StackContext(ins, one.getType()); stack.push(one); + ins.push(ctx); + if (four != null) { ctx = new StackContext(ins, four.getType()); stack.push(ctx); + + ins.push(ctx); } ctx = new StackContext(ins, three.getType()); stack.push(one); + ins.push(ctx); + if (two != null) { ctx = new StackContext(ins, two.getType()); stack.push(ctx); + + ins.push(ctx); } ctx = new StackContext(ins, one.getType()); stack.push(one); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X1.java index 1d44145264..7320cdf6c5 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X1.java @@ -31,12 +31,18 @@ public class Dup_X1 extends Instruction StackContext ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + ctx = new StackContext(ins, two.getType()); stack.push(ctx); + ins.push(ctx); + ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X2.java index dab36ff57d..2839dc9b8f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Dup_X2.java @@ -37,18 +37,26 @@ public class Dup_X2 extends Instruction StackContext ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + if (three != null) { ctx = new StackContext(ins, three.getType()); stack.push(ctx); + + ins.push(ctx); } ctx = new StackContext(ins, two.getType()); stack.push(ctx); + ins.push(ctx); + ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/F2D.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/F2D.java index a6c0b46ccf..c32207c190 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/F2D.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/F2D.java @@ -29,6 +29,8 @@ public class F2D extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/F2I.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/F2I.java index 8ec4291e0c..39ddf6c698 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/F2I.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/F2I.java @@ -29,6 +29,8 @@ public class F2I extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/F2L.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/F2L.java index 7872bdbabc..4eebc18323 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/F2L.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/F2L.java @@ -29,6 +29,8 @@ public class F2L extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FALoad.java index 05e050c124..d21b238f9e 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FALoad.java @@ -29,6 +29,8 @@ public class FALoad extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FAdd.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FAdd.java index 4f864582d3..f854a731b2 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FAdd.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FAdd.java @@ -29,6 +29,8 @@ public class FAdd extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpG.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpG.java index 0e4b9f14cf..f3e5f2871f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpG.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpG.java @@ -31,6 +31,8 @@ public class FCmpG extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpL.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpL.java index 260d7e97f9..5e26dfb078 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpL.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FCmpL.java @@ -31,6 +31,8 @@ public class FCmpL extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_0.java index b58139342b..708e9906d2 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_0.java @@ -26,6 +26,8 @@ public class FConst_0 extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_1.java index 417ef5f3fd..1fe4d511ad 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_1.java @@ -26,6 +26,8 @@ public class FConst_1 extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_2.java index b9a4ae0d60..60a7a775f8 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FConst_2.java @@ -26,6 +26,8 @@ public class FConst_2 extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FDiv.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FDiv.java index 356362dded..aaa2f188e6 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FDiv.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FDiv.java @@ -29,6 +29,8 @@ public class FDiv extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } 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 e253f5c939..16e8e4b91a 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 @@ -67,6 +67,8 @@ public class FLoad extends Instruction implements LVTInstruction, WideInstructio StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 0f0b0d1d41..94ffca1bf0 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 @@ -35,6 +35,8 @@ public class FLoad_0 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 901edf8a13..cf513921f0 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 @@ -35,6 +35,8 @@ public class FLoad_1 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 db9872d7a0..220fbeae25 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 @@ -35,6 +35,8 @@ public class FLoad_2 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 b3fd6d725e..3f5b964c0e 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 @@ -35,6 +35,8 @@ public class FLoad_3 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FMul.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FMul.java index 266f195327..d797ddb4a8 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FMul.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FMul.java @@ -29,6 +29,8 @@ public class FMul extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FNeg.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FNeg.java index 46c9baa59e..4c3d1cac4d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FNeg.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FNeg.java @@ -27,6 +27,8 @@ public class FNeg extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FRem.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FRem.java index 2e3bbadf55..7ea9417b02 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FRem.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FRem.java @@ -29,6 +29,8 @@ public class FRem extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/FSub.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/FSub.java index 077175b819..0fdea7e19e 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/FSub.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/FSub.java @@ -29,6 +29,8 @@ public class FSub extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java index 8129e7d5e4..802ed26c68 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetField.java @@ -47,6 +47,8 @@ public class GetField extends Instruction implements GetFieldInstruction StackContext ctx = new StackContext(ins, new Type(field.getNameAndType().getDescriptorType()).toStackType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java index 674257dbee..a7d35d32f2 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/GetStatic.java @@ -47,6 +47,8 @@ public class GetStatic extends Instruction implements GetFieldInstruction StackContext ctx = new StackContext(ins, new Type(field.getNameAndType().getDescriptorType()).toStackType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2B.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2B.java index 7f8f795cd4..bd6eb3bf63 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2B.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2B.java @@ -29,6 +29,8 @@ public class I2B extends Instruction StackContext ctx = new StackContext(ins, int.class); // sign extneded stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2C.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2C.java index bb09368b44..cd0b53614e 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2C.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2C.java @@ -29,6 +29,8 @@ public class I2C extends Instruction StackContext ctx = new StackContext(ins, int.class); // sign extended stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2D.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2D.java index 68ad226c9c..78c2237797 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2D.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2D.java @@ -29,6 +29,8 @@ public class I2D extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2F.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2F.java index fb8918d2e4..94ce2b8a0a 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2F.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2F.java @@ -29,6 +29,8 @@ public class I2F extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2L.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2L.java index f2b9925660..d570f6a372 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2L.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2L.java @@ -29,6 +29,8 @@ public class I2L extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2S.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2S.java index b7a62fd02b..b2614588a7 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/I2S.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/I2S.java @@ -29,6 +29,8 @@ public class I2S extends Instruction StackContext ctx = new StackContext(ins, int.class); // sign extended stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IALoad.java index 1305ca4fc9..58e35c2f89 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IALoad.java @@ -29,6 +29,8 @@ public class IALoad extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IAdd.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IAdd.java index d51505d854..acf4277186 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IAdd.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IAdd.java @@ -29,6 +29,8 @@ public class IAdd extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IAnd.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IAnd.java index e94eadff11..9add15ec70 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IAnd.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IAnd.java @@ -29,6 +29,8 @@ public class IAnd extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_0.java index 2f7ceaf162..4395e2ffd2 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_0.java @@ -26,6 +26,8 @@ public class IConst_0 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_1.java index ccd61f10de..751932f11f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_1.java @@ -26,6 +26,8 @@ public class IConst_1 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_2.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_2.java index d01fa4cd53..4186e7ff73 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_2.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_2.java @@ -26,6 +26,8 @@ public class IConst_2 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_3.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_3.java index e1668fbf58..bcc003f175 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_3.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_3.java @@ -26,6 +26,8 @@ public class IConst_3 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_4.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_4.java index 5efa37c2b5..1e0cc61593 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_4.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_4.java @@ -26,6 +26,8 @@ public class IConst_4 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_5.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_5.java index d5526100a9..94dfb4ceed 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_5.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_5.java @@ -26,6 +26,8 @@ public class IConst_5 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_M1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_M1.java index 50859f1389..c6648d8314 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_M1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IConst_M1.java @@ -26,6 +26,8 @@ public class IConst_M1 extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IDiv.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IDiv.java index cc638beae2..40b5b89f17 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IDiv.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IDiv.java @@ -29,6 +29,8 @@ public class IDiv extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } 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 f3bb7caeb2..8dd1864047 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 @@ -67,6 +67,8 @@ public class ILoad extends Instruction implements LVTInstruction, WideInstructio StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 b2a7e04efd..638df0b1cc 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 @@ -35,6 +35,8 @@ public class ILoad_0 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 4100491c9a..bd6e15fa81 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 @@ -35,6 +35,8 @@ public class ILoad_1 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 a693fdd71f..a63a281893 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 @@ -35,6 +35,8 @@ public class ILoad_2 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 34c25b000b..e71a1d11d2 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 @@ -35,6 +35,8 @@ public class ILoad_3 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IMul.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IMul.java index fd7fe54294..6a8f041b43 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IMul.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IMul.java @@ -29,6 +29,8 @@ public class IMul extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/INeg.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/INeg.java index 57e1777e88..937a77d652 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/INeg.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/INeg.java @@ -27,6 +27,8 @@ public class INeg extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IOr.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IOr.java index 7a03370894..1a7469ff58 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IOr.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IOr.java @@ -29,6 +29,8 @@ public class IOr extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IRem.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IRem.java index 44b44e5422..eeb3643926 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IRem.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IRem.java @@ -29,6 +29,8 @@ public class IRem extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IShL.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IShL.java index 26aa4ff5a9..8765dc81ac 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IShL.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IShL.java @@ -29,6 +29,8 @@ public class IShL extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IShR.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IShR.java index 910484cb48..3fc94c84a5 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IShR.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IShR.java @@ -29,6 +29,8 @@ public class IShR extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/ISub.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/ISub.java index be2f1cb562..dd2f2027c9 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/ISub.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/ISub.java @@ -29,6 +29,8 @@ public class ISub extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IUShR.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IUShR.java index 84ea684efa..77b68e4b63 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IUShR.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IUShR.java @@ -29,6 +29,8 @@ public class IUShR extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/IXor.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/IXor.java index bf67cfb85e..48917a60e3 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/IXor.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/IXor.java @@ -29,6 +29,8 @@ public class IXor extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/InstanceOf.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/InstanceOf.java index 6628f33cf1..f7dbb764aa 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/InstanceOf.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/InstanceOf.java @@ -45,6 +45,8 @@ public class InstanceOf extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeInterface.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeInterface.java index cbec79016a..e589880e45 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeInterface.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeInterface.java @@ -84,6 +84,8 @@ public class InvokeInterface extends Instruction implements InvokeInstruction { StackContext ctx = new StackContext(ins, new Type(method.getNameAndType().getDescriptor().getReturnValue()).toStackType()); stack.push(ctx); + + ins.push(ctx); } frame.addInstructionContext(ins); @@ -110,6 +112,8 @@ public class InvokeInterface extends Instruction implements InvokeInstruction StackContext ctx = new StackContext(ins, new Type("java/lang/Exception")); stack.push(ctx); + ins.push(ctx); + f.jump(e.getHandler()); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeSpecial.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeSpecial.java index 640aaa2b21..9969809bc3 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeSpecial.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeSpecial.java @@ -79,6 +79,8 @@ public class InvokeSpecial extends Instruction implements InvokeInstruction { StackContext ctx = new StackContext(ins, new Type(method.getNameAndType().getDescriptor().getReturnValue()).toStackType()); stack.push(ctx); + + ins.push(ctx); } frame.addInstructionContext(ins); @@ -105,6 +107,8 @@ public class InvokeSpecial extends Instruction implements InvokeInstruction StackContext ctx = new StackContext(ins, new Type("java/lang/Exception")); stack.push(ctx); + ins.push(ctx); + f.jump(e.getHandler()); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeStatic.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeStatic.java index f310a1742e..f6ede40561 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeStatic.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeStatic.java @@ -76,6 +76,8 @@ public class InvokeStatic extends Instruction implements InvokeInstruction { StackContext ctx = new StackContext(ins, new Type(method.getNameAndType().getDescriptor().getReturnValue()).toStackType()); stack.push(ctx); + + ins.push(ctx); } frame.addInstructionContext(ins); @@ -102,6 +104,8 @@ public class InvokeStatic extends Instruction implements InvokeInstruction StackContext ctx = new StackContext(ins, new Type("java/lang/Exception")); stack.push(ctx); + ins.push(ctx); + f.jump(e.getHandler()); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeVirtual.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeVirtual.java index 1b904f74e5..ddb5b998af 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeVirtual.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/InvokeVirtual.java @@ -80,6 +80,8 @@ public class InvokeVirtual extends Instruction implements InvokeInstruction { StackContext ctx = new StackContext(ins, new Type(method.getNameAndType().getDescriptor().getReturnValue()).toStackType()); stack.push(ctx); + + ins.push(ctx); } frame.addInstructionContext(ins); @@ -106,6 +108,8 @@ public class InvokeVirtual extends Instruction implements InvokeInstruction StackContext ctx = new StackContext(ins, new Type("java/lang/Exception")); stack.push(ctx); + ins.push(ctx); + f.jump(e.getHandler()); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/L2D.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/L2D.java index a9a0253cef..f128dfeb69 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/L2D.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/L2D.java @@ -29,6 +29,8 @@ public class L2D extends Instruction StackContext ctx = new StackContext(ins, double.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/L2F.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/L2F.java index f20c3c5af8..63d75f225c 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/L2F.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/L2F.java @@ -29,6 +29,8 @@ public class L2F extends Instruction StackContext ctx = new StackContext(ins, float.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/L2I.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/L2I.java index 63886a48a8..ee27339ed0 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/L2I.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/L2I.java @@ -29,6 +29,8 @@ public class L2I extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LALoad.java index 74faf97e96..4c28abe878 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LALoad.java @@ -29,6 +29,8 @@ public class LALoad extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LAdd.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LAdd.java index 26a5b04f7b..d0091e7556 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LAdd.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LAdd.java @@ -29,6 +29,8 @@ public class LAdd extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LAnd.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LAnd.java index 7a8ae8e8c2..dc75ec4b71 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LAnd.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LAnd.java @@ -29,6 +29,8 @@ public class LAnd extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LCmp.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LCmp.java index f181cae12e..37f01b6be2 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LCmp.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LCmp.java @@ -31,6 +31,8 @@ public class LCmp extends Instruction StackContext ctx = new StackContext(ins, int.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_0.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_0.java index 08db66503f..cbafdffab0 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_0.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_0.java @@ -26,6 +26,8 @@ public class LConst_0 extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_1.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_1.java index 48a5ef1962..80ee56de11 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_1.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LConst_1.java @@ -26,6 +26,8 @@ public class LConst_1 extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC2_W.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC2_W.java index fe3e15c8c9..feffd6fc2b 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC2_W.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC2_W.java @@ -43,6 +43,8 @@ public class LDC2_W extends Instruction implements PushConstantInstruction StackContext ctx = new StackContext(ins, value.getTypeClass()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC_W.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC_W.java index b412ffd118..76c4864555 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC_W.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LDC_W.java @@ -51,6 +51,8 @@ public class LDC_W extends Instruction implements PushConstantInstruction StackContext ctx = new StackContext(ins, value.getTypeClass()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LDiv.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LDiv.java index 08274a4602..61e5c6c063 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LDiv.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LDiv.java @@ -29,6 +29,8 @@ public class LDiv extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } 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 6389a45517..a15607238a 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 @@ -67,6 +67,8 @@ public class LLoad extends Instruction implements LVTInstruction, WideInstructio StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 7429611b5b..35c08639a3 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 @@ -35,6 +35,8 @@ public class LLoad_0 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 69b7944e86..dfab67040a 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 @@ -35,6 +35,8 @@ public class LLoad_1 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 982b9e659c..9ff38b7d39 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 @@ -35,6 +35,8 @@ public class LLoad_2 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } 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 73437c2354..3cef354910 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 @@ -35,6 +35,8 @@ public class LLoad_3 extends Instruction implements LVTInstruction StackContext ctx = new StackContext(ins, vctx.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LMul.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LMul.java index b62aac79a6..7b4c6da780 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LMul.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LMul.java @@ -29,6 +29,8 @@ public class LMul extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LNeg.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LNeg.java index 1655e90c71..b7fc60355d 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LNeg.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LNeg.java @@ -27,6 +27,8 @@ public class LNeg extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LOr.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LOr.java index 8917902375..906ee90e07 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LOr.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LOr.java @@ -29,6 +29,8 @@ public class LOr extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LRem.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LRem.java index 18e294a0c6..aa1913478c 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LRem.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LRem.java @@ -29,6 +29,8 @@ public class LRem extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LShL.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LShL.java index fceff1d2d5..4b978eaef4 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LShL.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LShL.java @@ -29,6 +29,8 @@ public class LShL extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LShR.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LShR.java index aaf008bef1..f3dbe7b7fb 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LShR.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LShR.java @@ -29,6 +29,8 @@ public class LShR extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LSub.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LSub.java index 0908746b88..38cece1d7f 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LSub.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LSub.java @@ -29,6 +29,8 @@ public class LSub extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LUShR.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LUShR.java index 2130c88beb..c2f5cc5929 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LUShR.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LUShR.java @@ -29,6 +29,8 @@ public class LUShR extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/LXor.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/LXor.java index 2017113c6a..8c74029c84 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/LXor.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/LXor.java @@ -29,6 +29,8 @@ public class LXor extends Instruction StackContext ctx = new StackContext(ins, long.class); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/MultiANewArray.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/MultiANewArray.java index c767d22703..dbac3869c6 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/MultiANewArray.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/MultiANewArray.java @@ -53,6 +53,8 @@ public class MultiANewArray extends Instruction StackContext ctx = new StackContext(ins, t); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/New.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/New.java index e315f0bae6..51152c6dfc 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/New.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/New.java @@ -43,6 +43,8 @@ public class New extends Instruction StackContext ctx = new StackContext(ins, new Type(clazz.getName())); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/NewArray.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/NewArray.java index 516a04e15e..e3242214de 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/NewArray.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/NewArray.java @@ -74,6 +74,8 @@ public class NewArray extends Instruction StackContext ctx = new StackContext(ins, new Type(t.getName())); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/SALoad.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/SALoad.java index ae5f3d0f22..38ac39d086 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/SALoad.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/SALoad.java @@ -29,6 +29,8 @@ public class SALoad extends Instruction StackContext ctx = new StackContext(ins, int.class); // sign extend stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/SiPush.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/SiPush.java index 14bf41f141..cd5b8e0d37 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/SiPush.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/SiPush.java @@ -41,6 +41,8 @@ public class SiPush extends Instruction StackContext ctx = new StackContext(ins, int.class); // sign extend stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } } diff --git a/src/main/java/info/sigterm/deob/attributes/code/instructions/Swap.java b/src/main/java/info/sigterm/deob/attributes/code/instructions/Swap.java index c88e9ae22f..75a1aac35e 100644 --- a/src/main/java/info/sigterm/deob/attributes/code/instructions/Swap.java +++ b/src/main/java/info/sigterm/deob/attributes/code/instructions/Swap.java @@ -29,9 +29,19 @@ public class Swap extends Instruction StackContext ctx = new StackContext(ins, one.getType()); stack.push(ctx); + ins.push(ctx); + ctx = new StackContext(ins, two.getType()); stack.push(ctx); + ins.push(ctx); + frame.addInstructionContext(ins); } + + @Override + public boolean removeStack() + { + throw new UnsupportedOperationException(); + } } diff --git a/src/main/java/info/sigterm/deob/execution/InstructionContext.java b/src/main/java/info/sigterm/deob/execution/InstructionContext.java index dab1a17968..245951e462 100644 --- a/src/main/java/info/sigterm/deob/execution/InstructionContext.java +++ b/src/main/java/info/sigterm/deob/execution/InstructionContext.java @@ -9,7 +9,8 @@ public class InstructionContext { private Instruction ins; private Frame frame; - private List pops = new ArrayList<>(); + private List pops = new ArrayList<>(); // stack contexts popped by instruction execution + private List pushes = new ArrayList<>(); // stack contexts pushed by instruction execution private List reads = new ArrayList<>(); // lvt reads public InstructionContext(Instruction i, Frame f) @@ -24,6 +25,12 @@ public class InstructionContext pops.add(c); } + public void push(StackContext... ctx) + { + for (StackContext c : ctx) + pushes.add(c); + } + public void read(VariableContext... ctx) { for (VariableContext c : ctx)