diff --git a/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscator.java b/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscator.java index b162082d7b..b6594a5241 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscator.java +++ b/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscator.java @@ -322,9 +322,17 @@ public class MultiplicationDeobfuscator implements Deobfuscator return false; } + Instruction poppedIns = null; for (StackContext s : i.getPushes()) - if (s.getPopped().size() > 1) - return false; + for (InstructionContext i2 : s.getPopped()) + { + if (poppedIns == null) + poppedIns = i2.getInstruction(); + else if (poppedIns != i2.getInstruction()) + return false; + } + //if (s.getPopped().size() > 1) + // return false; } return true; } diff --git a/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscatorTest.java b/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscatorTest.java index a7fe8070b0..0c2306aa59 100644 --- a/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscatorTest.java +++ b/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscatorTest.java @@ -466,7 +466,7 @@ public class MultiplicationDeobfuscatorTest Assert.assertEquals(1, constant3.getConstantAsInt()); } - //@Test + @Test public void test8() { ClassGroup group = ClassGroupFactory.generateGroup(); @@ -493,9 +493,9 @@ public class MultiplicationDeobfuscatorTest label3 = new NOP(ins); Instruction body[] = { - new GetStatic(ins, field.getPoolField()), + //new GetStatic(ins, field.getPoolField()), constant1, - new IMul(ins), + //new IMul(ins), constant2, new IMul(ins), @@ -515,6 +515,7 @@ public class MultiplicationDeobfuscatorTest label3, new InvokeStatic(ins, group.findClass("test").findMethod("func2").getPoolMethod()), + //new Pop(ins), new Pop(ins), new Pop(ins), new VReturn(ins) };