Tests pass again. I see some cases of longs math not simplifying tho
This commit is contained in:
@@ -16,9 +16,11 @@ import net.runelite.deob.attributes.code.instructions.IAdd;
|
|||||||
import net.runelite.deob.attributes.code.instructions.IConst_M1;
|
import net.runelite.deob.attributes.code.instructions.IConst_M1;
|
||||||
import net.runelite.deob.attributes.code.instructions.IMul;
|
import net.runelite.deob.attributes.code.instructions.IMul;
|
||||||
import net.runelite.deob.attributes.code.instructions.ISub;
|
import net.runelite.deob.attributes.code.instructions.ISub;
|
||||||
|
import net.runelite.deob.attributes.code.instructions.LAdd;
|
||||||
import net.runelite.deob.attributes.code.instructions.LDC2_W;
|
import net.runelite.deob.attributes.code.instructions.LDC2_W;
|
||||||
import net.runelite.deob.attributes.code.instructions.LDC_W;
|
import net.runelite.deob.attributes.code.instructions.LDC_W;
|
||||||
import net.runelite.deob.attributes.code.instructions.LMul;
|
import net.runelite.deob.attributes.code.instructions.LMul;
|
||||||
|
import net.runelite.deob.attributes.code.instructions.LSub;
|
||||||
import net.runelite.deob.attributes.code.instructions.SiPush;
|
import net.runelite.deob.attributes.code.instructions.SiPush;
|
||||||
import net.runelite.deob.execution.Execution;
|
import net.runelite.deob.execution.Execution;
|
||||||
import net.runelite.deob.execution.Frame;
|
import net.runelite.deob.execution.Frame;
|
||||||
@@ -130,7 +132,8 @@ public class MultiplicationDeobfuscator implements Deobfuscator
|
|||||||
// this is ok? just don't include it?
|
// this is ok? just don't include it?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (i.getInstruction().getClass() == want)
|
else if (i.getInstruction() instanceof IAdd || i.getInstruction() instanceof ISub
|
||||||
|
|| i.getInstruction() instanceof LAdd || i.getInstruction() instanceof LSub)
|
||||||
{
|
{
|
||||||
// imul using result of iadd or isub. evaluate expression
|
// imul using result of iadd or isub. evaluate expression
|
||||||
try
|
try
|
||||||
@@ -170,7 +173,8 @@ public class MultiplicationDeobfuscator implements Deobfuscator
|
|||||||
MultiplicationExpression other = parseExpression(e, orig.getPushed(), want);
|
MultiplicationExpression other = parseExpression(e, orig.getPushed(), want);
|
||||||
// this expression is used elsewhere like 'pushConstant' so any changes
|
// this expression is used elsewhere like 'pushConstant' so any changes
|
||||||
// done to it affect that, too. so multiply it by existing values?
|
// done to it affect that, too. so multiply it by existing values?
|
||||||
if (orig.getPushed().getInstruction() instanceof IAdd || orig.getPushed().getInstruction() instanceof ISub)
|
if (orig.getPushed().getInstruction() instanceof IAdd || orig.getPushed().getInstruction() instanceof ISub
|
||||||
|
|| orig.getPushed().getInstruction() instanceof LAdd || orig.getPushed().getInstruction() instanceof LSub)
|
||||||
{
|
{
|
||||||
me.subexpressions.add(other);
|
me.subexpressions.add(other);
|
||||||
}
|
}
|
||||||
@@ -202,7 +206,8 @@ public class MultiplicationDeobfuscator implements Deobfuscator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// this is an iadd/sub
|
// this is an iadd/sub
|
||||||
else if (ctx.getInstruction() instanceof IAdd || ctx.getInstruction() instanceof ISub)
|
else if (ctx.getInstruction() instanceof IAdd || ctx.getInstruction() instanceof ISub
|
||||||
|
|| ctx.getInstruction() instanceof LAdd || ctx.getInstruction() instanceof LSub)
|
||||||
{
|
{
|
||||||
MultiplicationExpression other = parseExpression(e, i, want); // parse this side of the add/sub
|
MultiplicationExpression other = parseExpression(e, i, want); // parse this side of the add/sub
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user