<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://runewiki.lostcity.rs/index.php?action=history&amp;feed=atom&amp;title=OpenRS2_Deobfuscator</id>
	<title>OpenRS2 Deobfuscator - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://runewiki.lostcity.rs/index.php?action=history&amp;feed=atom&amp;title=OpenRS2_Deobfuscator"/>
	<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;action=history"/>
	<updated>2026-07-18T06:00:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=224&amp;oldid=prev</id>
		<title>Pazaz at 22:16, 18 November 2022</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=224&amp;oldid=prev"/>
		<updated>2022-11-18T22:16:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:16, 18 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l201&quot;&gt;Line 201:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 201:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====BytecodeDeobfuscatorModule.kt====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====BytecodeDeobfuscatorModule.kt====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Removed: &amp;lt;code&amp;gt;UnusedLocalTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedMethodTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedArgTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Removed: &amp;lt;code&amp;gt;UnusedLocalTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedMethodTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedArgTransformer&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ConstantArgTransformer&lt;/ins&gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The ones I've outlined aren't necessary, I've just had the Unused* transformers remove code I wanted to keep. Patcher transformer is a good one, but has some changes specific to OpenRS2 / 2009 RS.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The ones I've outlined aren't necessary, I've just had the Unused* transformers &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and ConstantArg transformer &lt;/ins&gt;remove code I wanted to keep. Patcher transformer is a good one, but has some changes specific to OpenRS2 / 2009 RS &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;so you can be more selective in that module file&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Some client versions may require commenting out FinalFieldTransformer, possibly due to a deobfuscation edge case?&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Some client versions may require commenting out FinalFieldTransformer, possibly due to a deobfuscation edge case?&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l216&quot;&gt;Line 216:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 216:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.CanvasTransformer&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.CanvasTransformer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.ClassLiteralTransformer&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.ClassLiteralTransformer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;import org.openrs2.deob.bytecode.transform.ConstantArgTransformer&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.CopyPropagationTransformer&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.CopyPropagationTransformer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.CounterTransformer&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;import org.openrs2.deob.bytecode.transform.CounterTransformer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l266&quot;&gt;Line 266:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 265:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(FieldOrderTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(FieldOrderTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(BitwiseOpTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(BitwiseOpTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(ConstantArgTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//&lt;/ins&gt;binder.addBinding().to(ConstantArgTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(CopyPropagationTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         binder.addBinding().to(CopyPropagationTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // binder.addBinding().to(UnusedLocalTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // binder.addBinding().to(UnusedLocalTransformer::class.java)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-223:rev-224 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=223&amp;oldid=prev</id>
		<title>Pazaz: /* 2004 - 2006 RS2 Client */</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=223&amp;oldid=prev"/>
		<updated>2022-11-14T11:47:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;2004 - 2006 RS2 Client&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:47, 14 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===2004 - 2006 RS2 Client===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===2004 - 2006 RS2 Client===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is by no means a comprehensive guide, just some steps I took when deobfuscating &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;194 and &lt;/del&gt;225. Some transformers had to be disabled to get it working properly, expect to play around with the transformers &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;more &lt;/del&gt;for &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;versions like 317 etc&lt;/del&gt;. The deobfuscator code was designed for 2009-2010 RS2 and has had some minor work to partially support 2004.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is by no means a comprehensive guide, just some steps I took when deobfuscating 225. Some transformers had to be disabled to get it working properly, expect to play around with the transformers for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;any other version&lt;/ins&gt;. The deobfuscator code was designed for 2009-2010 RS2 and has had some minor work to partially support 2004 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(specifically 225)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''NOTE: If any mistakes are made the nonfree folder needs to be cleared out before re-running the build. You can leave lib alone. Check for share/deob/map/client.yaml if you re-run gradle build after deob, it will process whatever the last output was.''&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''NOTE: If any mistakes are made the nonfree folder needs to be cleared out before re-running the build. You can leave lib alone. Check for share/deob/map/client.yaml if you re-run gradle build after deob, it will process whatever the last output was.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-222:rev-223 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=222&amp;oldid=prev</id>
		<title>Pazaz at 11:46, 14 November 2022</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=222&amp;oldid=prev"/>
		<updated>2022-11-14T11:46:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:46, 14 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l61&quot;&gt;Line 61:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 61:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== BytecodeDeobfuscator.kt ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====BytecodeDeobfuscator.kt====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Removed: all but client processing code&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Removed: all but client processing code&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;package org.openrs2.deob.bytecode&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;package org.openrs2.deob.bytecode&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l203&quot;&gt;Line 203:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 203:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Removed: &amp;lt;code&amp;gt;UnusedLocalTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedMethodTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedArgTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Removed: &amp;lt;code&amp;gt;UnusedLocalTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedMethodTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedArgTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;These are optional really. &lt;/del&gt;I &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;do it as a precaution because &lt;/del&gt;I've had the Unused* transformers remove code I wanted to keep. Patcher transformer is a good one, but has some changes specific to OpenRS2 / 2009 RS.&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The ones &lt;/ins&gt;I&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'ve outlined aren't necessary, &lt;/ins&gt;I've &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;just &lt;/ins&gt;had the Unused* transformers remove code I wanted to keep. Patcher transformer is a good one, but has some changes specific to OpenRS2 / 2009 RS.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Some client versions may require commenting out FinalFieldTransformer, possibly due to a deobfuscation edge case?&lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;package org.openrs2.deob.bytecode&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;package org.openrs2.deob.bytecode&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-221:rev-222 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=221&amp;oldid=prev</id>
		<title>Pazaz: /* 2004 - 2006 RS2 Client */</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=221&amp;oldid=prev"/>
		<updated>2022-11-14T11:39:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;2004 - 2006 RS2 Client&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;amp;diff=221&amp;amp;oldid=220&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=220&amp;oldid=prev</id>
		<title>Pazaz: /* 2004 - 2006 RS2 Client */</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=220&amp;oldid=prev"/>
		<updated>2022-11-14T11:38:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;2004 - 2006 RS2 Client&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:38, 14 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1. Create &amp;lt;code&amp;gt;nonfree/lib/&amp;lt;/code&amp;gt; directory&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1. Create &amp;lt;code&amp;gt;nonfree/lib/&amp;lt;/code&amp;gt; directory&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, place obfuscated &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;nonfree/lib/&amp;lt;/code&amp;gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;2. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Place obfuscated &lt;/del&gt;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;runescape.jar&amp;lt;&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code&amp;gt; in &amp;lt;code&amp;gt;nonfree&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;lib&lt;/del&gt;/&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;2. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Delete profile mappings from &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;share&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;deob&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;map&lt;/ins&gt;/&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;3. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Delete profile mappings from &lt;/del&gt;&amp;lt;code&amp;gt;share/deob/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;map/&lt;/del&gt;&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;3. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Add signlink entries to &lt;/ins&gt;&amp;lt;code&amp;gt;share/deob/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;profile.yaml&lt;/ins&gt;&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. See below&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;4. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Add signlink entries to &lt;/del&gt;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;share&lt;/del&gt;/deob/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;profile&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;yaml&lt;/del&gt;&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;4. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Remove &amp;lt;code&amp;gt;GlRegistry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GlRegistryProvider&amp;lt;/code&amp;gt;, and &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GlTransformer&amp;lt;&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code&amp;gt; from &amp;lt;code&amp;gt;&lt;/ins&gt;deob&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-ast&amp;lt;&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code&amp;gt;'s &amp;lt;code&amp;gt;AstDeobfuscatorModule&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kt&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(expect some linting errors to clean up from unused imports)&lt;/ins&gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;5. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Remove &lt;/del&gt;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GlRegistry&lt;/del&gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GlRegistryProvider&lt;/del&gt;&amp;lt;/code&amp;gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GlTransformer&lt;/del&gt;&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;from &lt;/del&gt;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;deob-ast&lt;/del&gt;&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'s &lt;/del&gt;&amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AstDeobfuscatorModule.kt&lt;/del&gt;&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(expect some linting errors &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;clean up from unused imports)&lt;/del&gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;5. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Edit &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscator.kt&amp;lt;/code&amp;gt;. Change client to load &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;JarLibraryReader&lt;/ins&gt;&amp;lt;/code&amp;gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;remove &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gl&lt;/ins&gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;loader&lt;/ins&gt;&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;unpack&lt;/ins&gt;&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;signlink&lt;/ins&gt;&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and reduce remapping code &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;only the client remapper&lt;/ins&gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;6. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Edit &lt;/del&gt;&amp;lt;code&amp;gt;deob-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bytecode&lt;/del&gt;&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;BytecodeDeobfuscator&lt;/del&gt;.kt&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Change client to load &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;JarLibraryReader&amp;lt;/code&amp;gt;, remove &amp;lt;code&amp;gt;gl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;loader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unpack&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signlink&amp;lt;/code&amp;gt;, and reduce remapping code to only the client remapper&lt;/del&gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;6. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Remove everything other than client from &lt;/ins&gt;&amp;lt;code&amp;gt;deob-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;util&lt;/ins&gt;&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Module&lt;/ins&gt;.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;everything other than client &lt;/del&gt;from &amp;lt;code&amp;gt;deob-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;util&lt;/del&gt;&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Module&lt;/del&gt;.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Recommended) &lt;/ins&gt;Remove &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s &lt;/ins&gt;from &amp;lt;code&amp;gt;deob-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bytecode&lt;/ins&gt;&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;BytecodeDeobfuscatorModule&lt;/ins&gt;.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;8&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. (Recommended) Remove &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s from &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscatorModule.kt&amp;lt;/code&amp;gt;. See below.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;8. Build and run:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;9&lt;/del&gt;. Build and run:&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;gradlew build&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;gradlew build&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-219:rev-220 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=219&amp;oldid=prev</id>
		<title>Pazaz: /* 2004 - 2006 RS2 Client */</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=219&amp;oldid=prev"/>
		<updated>2022-11-14T11:37:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;2004 - 2006 RS2 Client&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:37, 14 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;8. (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Optional&lt;/del&gt;) Remove &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s from &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscatorModule.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;8. (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Recommended&lt;/ins&gt;) Remove &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s from &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscatorModule.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;9. Build and run:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;9. Build and run:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-218:rev-219 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=218&amp;oldid=prev</id>
		<title>Pazaz: /* 2004 - 2006 RS2 Client */</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=218&amp;oldid=prev"/>
		<updated>2022-11-14T11:37:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;2004 - 2006 RS2 Client&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:37, 14 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;8. Remove &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s from &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscatorModule.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;8. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Optional) &lt;/ins&gt;Remove &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s from &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscatorModule.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;9. Build and run:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;9. Build and run:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-217:rev-218 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=217&amp;oldid=prev</id>
		<title>Pazaz: /* 2004 - 2006 RS2 Client */</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=217&amp;oldid=prev"/>
		<updated>2022-11-14T11:36:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;2004 - 2006 RS2 Client&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:36, 14 November 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;5. Remove &amp;lt;code&amp;gt;GlRegistry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GlRegistryProvider&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;GlTransformer&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;deob-ast&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;AstDeobfuscatorModule.kt&amp;lt;/code&amp;gt; (expect some linting errors to clean up from unused imports). See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;5. Remove &amp;lt;code&amp;gt;GlRegistry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GlRegistryProvider&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;GlTransformer&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;deob-ast&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;AstDeobfuscatorModule.kt&amp;lt;/code&amp;gt; (expect some linting errors to clean up from unused imports). See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;6. Edit &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscator.kt&amp;lt;/code&amp;gt;. Change client to load &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;JarLibraryReader&amp;lt;/code&amp;gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;comment out &lt;/del&gt;&amp;lt;code&amp;gt;gl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;loader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unpack&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signlink&amp;lt;/code&amp;gt;, and reduce remapping code to only the client remapper. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;6. Edit &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscator.kt&amp;lt;/code&amp;gt;. Change client to load &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;JarLibraryReader&amp;lt;/code&amp;gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;remove &lt;/ins&gt;&amp;lt;code&amp;gt;gl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;loader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unpack&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signlink&amp;lt;/code&amp;gt;, and reduce remapping code to only the client remapper. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;7. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot;&gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== profile.yaml ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====profile.yaml====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;---&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;---&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-216:rev-217 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=216&amp;oldid=prev</id>
		<title>Pazaz at 11:35, 14 November 2022</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=216&amp;oldid=prev"/>
		<updated>2022-11-14T11:35:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;amp;diff=216&amp;amp;oldid=214&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
	<entry>
		<id>https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=214&amp;oldid=prev</id>
		<title>Pazaz: Created page with &quot;Install Java 11 &amp; kotlinc  &lt;code&gt;git clone &lt;nowiki&gt;https://git.openrs2.org/openrs2/openrs2.git&lt;/nowiki&gt;&lt;/code&gt;  === 2004 - 2006 RS2 Client === This is by no means a comprehens...&quot;</title>
		<link rel="alternate" type="text/html" href="https://runewiki.lostcity.rs/index.php?title=OpenRS2_Deobfuscator&amp;diff=214&amp;oldid=prev"/>
		<updated>2022-11-14T11:02:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Install Java 11 &amp;amp; kotlinc  &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://git.openrs2.org/openrs2/openrs2.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;  === 2004 - 2006 RS2 Client === This is by no means a comprehens...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Install Java 11 &amp;amp; kotlinc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://git.openrs2.org/openrs2/openrs2.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2004 - 2006 RS2 Client ===&lt;br /&gt;
This is by no means a comprehensive guide, just some steps I took when deobfuscating 194 and 225. Some transformers had to be disabled to get it working properly, expect to play around with the transformers more for versions like 317 etc. The deobfuscator code was designed for 2009-2010 RS2 and has had some minor work to partially support 2004.&lt;br /&gt;
&lt;br /&gt;
''NOTE: If any mistakes are made the nonfree folder needs to be cleared out before re-running the build. You can leave lib alone. Check for share/deob/map/client.yaml if you re-run gradle build after deob, it will process whatever the last output was.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Create &amp;lt;code&amp;gt;nonfree/lib/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
&lt;br /&gt;
2. Place obfuscated &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;nonfree/lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Delete profile mappings from &amp;lt;code&amp;gt;share/deob/map/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
4. Remove &amp;lt;code&amp;gt;GlRegistry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GlRegistryProvider&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;GlTransformer&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;deob-ast&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;AstDeobfuscatorModule.kt&amp;lt;/code&amp;gt; (expect some linting errors to clean up from unused imports). See below.&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscator.kt&amp;lt;/code&amp;gt;. Change client to load &amp;lt;code&amp;gt;runescape.jar&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;JarLibraryReader&amp;lt;/code&amp;gt;, comment out &amp;lt;code&amp;gt;gl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;loader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unpack&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signlink&amp;lt;/code&amp;gt;, and reduce remapping code to only the client remapper. See below.&lt;br /&gt;
&lt;br /&gt;
6. Remove everything other than client from &amp;lt;code&amp;gt;deob-util&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;Module.kt&amp;lt;/code&amp;gt;. See below.&lt;br /&gt;
&lt;br /&gt;
7. Remove &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; and all &amp;lt;code&amp;gt;Unused_____Transformer&amp;lt;/code&amp;gt;s from &amp;lt;code&amp;gt;deob-bytecode&amp;lt;/code&amp;gt;'s &amp;lt;code&amp;gt;BytecodeDeobfuscatorModule.kt&amp;lt;/code&amp;gt;. See below.&lt;br /&gt;
&lt;br /&gt;
9. Build and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gradlew build&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;java -jar all/build/libs/openrs2.jar deob&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should have some new java files in &amp;lt;code&amp;gt;nonfree/client/src/main/java&amp;lt;/code&amp;gt; now. Compile them with deob-annotations in your javac classpath.&lt;br /&gt;
&lt;br /&gt;
I've encountered two minor errors when compiling, either find the problematic transformer or just edit the code to address it. For these ones I just removed the lines:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
Static13.java:1387: error: unreachable statement&lt;br /&gt;
                        return;&lt;br /&gt;
                        ^&lt;br /&gt;
Static8.java:26: error: cannot find symbol&lt;br /&gt;
                aBoolean58 = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== AstDeobfuscatorModule.kt ====&lt;br /&gt;
Removed: &amp;lt;code&amp;gt;GlTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GlRegistry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GlRegistryProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add/remove transformers as necessary as different versions may have conflicts. e.g. in 186 I had to disable &amp;lt;code&amp;gt;CharLiteralTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BinaryExprOrderTransformer&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;AddSubTransformer&amp;lt;/code&amp;gt;.&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
package org.openrs2.deob.ast&lt;br /&gt;
&lt;br /&gt;
import com.google.inject.AbstractModule&lt;br /&gt;
import com.google.inject.multibindings.Multibinder&lt;br /&gt;
import org.openrs2.deob.ast.transform.BitMaskTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.ComplementTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.EncloseTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.ForLoopConditionTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.HexLiteralTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.IdentityTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.IfElseTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.IncrementTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.NegativeLiteralTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.NewInstanceTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.NotTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.RedundantCastTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.TernaryTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.Transformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.UnencloseTransformer&lt;br /&gt;
import org.openrs2.deob.ast.transform.ValueOfTransformer&lt;br /&gt;
&lt;br /&gt;
public object AstDeobfuscatorModule : AbstractModule() {&lt;br /&gt;
    override fun configure() {&lt;br /&gt;
        val binder = Multibinder.newSetBinder(binder(), Transformer::class.java)&lt;br /&gt;
        binder.addBinding().to(UnencloseTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(NegativeLiteralTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ComplementTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(NotTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(IfElseTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(TernaryTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(IdentityTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(BitMaskTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(HexLiteralTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ValueOfTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(NewInstanceTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(IncrementTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ForLoopConditionTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(RedundantCastTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(EncloseTransformer::class.java)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BytecodeDeobfuscator.kt ====&lt;br /&gt;
Removed: all but client&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
package org.openrs2.deob.bytecode&lt;br /&gt;
&lt;br /&gt;
import com.github.michaelbull.logging.InlineLogger&lt;br /&gt;
import org.openrs2.asm.classpath.ClassPath&lt;br /&gt;
import org.openrs2.asm.classpath.Library&lt;br /&gt;
import org.openrs2.asm.io.JarLibraryReader&lt;br /&gt;
import org.openrs2.asm.io.JarLibraryWriter&lt;br /&gt;
import org.openrs2.asm.transform.Transformer&lt;br /&gt;
import org.openrs2.deob.bytecode.remap.ClassNamePrefixRemapper&lt;br /&gt;
import org.openrs2.deob.bytecode.remap.StripClassNamePrefixRemapper&lt;br /&gt;
import java.nio.file.Files&lt;br /&gt;
import java.nio.file.Path&lt;br /&gt;
import javax.inject.Inject&lt;br /&gt;
import javax.inject.Singleton&lt;br /&gt;
&lt;br /&gt;
@Singleton&lt;br /&gt;
public class BytecodeDeobfuscator @Inject constructor(&lt;br /&gt;
    @DeobfuscatorQualifier private val transformers: Set&amp;lt;Transformer&amp;gt;&lt;br /&gt;
) {&lt;br /&gt;
    public fun run(input: Path, output: Path) {&lt;br /&gt;
        // read input jars/packs&lt;br /&gt;
        logger.info { &amp;quot;Reading input jars&amp;quot; }&lt;br /&gt;
        val client = Library.read(&amp;quot;client&amp;quot;, input.resolve(&amp;quot;runescape.jar&amp;quot;), JarLibraryReader)&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * Prefix class names with the name of the library the class&lt;br /&gt;
         * came from (e.g. `a` =&amp;gt; `client!a`).&lt;br /&gt;
         *&lt;br /&gt;
         * Using ! as the separator was chosen because it is not valid in Java&lt;br /&gt;
         * source code, so we won't expect to see it in the obfuscator's input.&lt;br /&gt;
         * Furthermore, if any prefixes accidentally remain unstripped, the&lt;br /&gt;
         * problem will be detected quickly as the deobfuscator's output will&lt;br /&gt;
         * not compile. It also mirrors the syntax used in JarURLConnection,&lt;br /&gt;
         * which has a similar purpose.&lt;br /&gt;
         *&lt;br /&gt;
         * In the early parts of the deobfuscation pipeline, this allows us to&lt;br /&gt;
         * disambiguate a small number of classes in the signlink which clash&lt;br /&gt;
         * with classes in the client.&lt;br /&gt;
         *&lt;br /&gt;
         * After name mapping has been performed, it allows us to disambiguate&lt;br /&gt;
         * classes across separate libraries that have been refactored and&lt;br /&gt;
         * given the same name.&lt;br /&gt;
         *&lt;br /&gt;
         * For example, the client and unpackclass both contain many common&lt;br /&gt;
         * classes (e.g. the exception wrapper, linked list/node classes,&lt;br /&gt;
         * bzip2/gzip decompression classes, and so on). Giving these the same&lt;br /&gt;
         * names across both the client and unpackclass is desirable.&lt;br /&gt;
         *&lt;br /&gt;
         * (Unfortunately we can't deduplicate the classes, as they both expose&lt;br /&gt;
         * different sets of fields/methods, presumably as a result of the&lt;br /&gt;
         * obfuscator removing unused code.)&lt;br /&gt;
         */&lt;br /&gt;
        val clientRemapper = ClassNamePrefixRemapper(client)&lt;br /&gt;
&lt;br /&gt;
        client.remap(clientRemapper)&lt;br /&gt;
&lt;br /&gt;
        // bundle libraries together into a common classpath&lt;br /&gt;
        val runtime = ClassLoader.getPlatformClassLoader()&lt;br /&gt;
        val classPath = ClassPath(&lt;br /&gt;
            runtime,&lt;br /&gt;
            dependencies = emptyList(),&lt;br /&gt;
            libraries = listOf(client)&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        // deobfuscate&lt;br /&gt;
        logger.info { &amp;quot;Transforming client&amp;quot; }&lt;br /&gt;
        for (transformer in transformers) {&lt;br /&gt;
            logger.info { &amp;quot;Running transformer ${transformer.javaClass.simpleName}&amp;quot; }&lt;br /&gt;
            transformer.transform(classPath)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // strip class name prefixes&lt;br /&gt;
        client.remap(StripClassNamePrefixRemapper)&lt;br /&gt;
&lt;br /&gt;
        // write output jars&lt;br /&gt;
        logger.info { &amp;quot;Writing output jars&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
        Files.createDirectories(output)&lt;br /&gt;
&lt;br /&gt;
        client.write(output.resolve(&amp;quot;client.jar&amp;quot;), JarLibraryWriter, classPath)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private companion object {&lt;br /&gt;
        private val logger = InlineLogger()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Module.kt ====&lt;br /&gt;
Removed: all but client&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
package org.openrs2.deob.util&lt;br /&gt;
&lt;br /&gt;
import java.nio.file.Path&lt;br /&gt;
&lt;br /&gt;
public class Module(public val name: String, public val dependencies: Set&amp;lt;Module&amp;gt; = emptySet()) {&lt;br /&gt;
    public val jar: Path = Path.of(&amp;quot;nonfree/var/cache/deob&amp;quot;).resolve(&amp;quot;$name.jar&amp;quot;)&lt;br /&gt;
    public val sources: Path = Path.of(&amp;quot;nonfree&amp;quot;).resolve(name).resolve(&amp;quot;src/main/java&amp;quot;)&lt;br /&gt;
    public val transitiveDependencies: Set&amp;lt;Module&amp;gt; =&lt;br /&gt;
        dependencies.plus(dependencies.flatMap { it.transitiveDependencies })&lt;br /&gt;
&lt;br /&gt;
    public companion object {&lt;br /&gt;
        private val CLIENT = Module(&amp;quot;client&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        public val ALL: Set&amp;lt;Module&amp;gt; = setOf(CLIENT)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BytecodeDeobfuscatorModule.kt ====&lt;br /&gt;
Removed: &amp;lt;code&amp;gt;UnusedLocalTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedMethodTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UnusedArgTransformer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of them may be optional and are done as a precaution. &amp;lt;code&amp;gt;PatcherTransformer&amp;lt;/code&amp;gt; is useful, but since it's intended for 550 the changes in &amp;lt;code&amp;gt;PatcherModule.kt&amp;lt;/code&amp;gt; can be overreaching or irrelevant. Play around with adding/removing transformers or patches if you want to.&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
package org.openrs2.deob.bytecode&lt;br /&gt;
&lt;br /&gt;
import com.google.inject.AbstractModule&lt;br /&gt;
import com.google.inject.Scopes&lt;br /&gt;
import com.google.inject.multibindings.Multibinder&lt;br /&gt;
import org.openrs2.asm.transform.Transformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.BitShiftTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.BitwiseOpTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.CanvasTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.ClassLiteralTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.ConstantArgTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.CopyPropagationTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.CounterTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.EmptyClassTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.ExceptionTracingTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.FernflowerExceptionTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.FieldOrderTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.FinalClassTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.FinalMethodTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.InvokeSpecialTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.MethodOrderTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.MonitorTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.OpaquePredicateTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.OriginalNameTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.OriginalPcRestoreTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.OriginalPcSaveTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.OverrideTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.RedundantGotoTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.RemapTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.ResetTransformer&lt;br /&gt;
import org.openrs2.deob.bytecode.transform.VisibilityTransformer&lt;br /&gt;
import org.openrs2.deob.util.DeobfuscatorUtilModule&lt;br /&gt;
import org.openrs2.patcher.PatcherModule&lt;br /&gt;
import org.openrs2.patcher.transform.ResourceTransformer&lt;br /&gt;
&lt;br /&gt;
public object BytecodeDeobfuscatorModule : AbstractModule() {&lt;br /&gt;
    override fun configure() {&lt;br /&gt;
        install(PatcherModule)&lt;br /&gt;
        install(DeobfuscatorUtilModule)&lt;br /&gt;
&lt;br /&gt;
        bind(Profile::class.java)&lt;br /&gt;
            .toProvider(ProfileProvider::class.java)&lt;br /&gt;
            .`in`(Scopes.SINGLETON)&lt;br /&gt;
&lt;br /&gt;
        val binder = Multibinder.newSetBinder(binder(), Transformer::class.java, DeobfuscatorQualifier::class.java)&lt;br /&gt;
        binder.addBinding().to(OriginalPcSaveTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(OriginalNameTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ClassLiteralTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(InvokeSpecialTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(RemapTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ResourceTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(OpaquePredicateTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ExceptionTracingTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(MonitorTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(BitShiftTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(CanvasTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(FieldOrderTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(BitwiseOpTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ConstantArgTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(CopyPropagationTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(CounterTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(ResetTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(EmptyClassTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(MethodOrderTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(VisibilityTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(FinalClassTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(FinalMethodTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(OverrideTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(RedundantGotoTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(OriginalPcRestoreTransformer::class.java)&lt;br /&gt;
        binder.addBinding().to(FernflowerExceptionTransformer::class.java)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pazaz</name></author>
	</entry>
</feed>