Files
runelite/runescape-client/src/main/java/IsaacCipher.java
2019-07-08 22:52:36 +02:00

351 lines
11 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("hn")
@Implements("IsaacCipher")
public final class IsaacCipher {
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = 1514845493
)
@Export("valuesRemaining")
int valuesRemaining;
@ObfuscatedName("o")
@Export("results")
int[] results;
@ObfuscatedName("u")
@Export("mm")
int[] mm;
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = -1670027699
)
@Export("aa")
int aa;
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -325762649
)
@Export("bb")
int bb;
@ObfuscatedName("e")
@ObfuscatedGetter(
intValue = -1951204929
)
@Export("cc")
int cc;
public IsaacCipher(int[] seed) {
this.mm = new int[256];
this.results = new int[256];
for (int var2 = 0; var2 < seed.length; ++var2) {
this.results[var2] = seed[var2];
}
this.method139();
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-7509790"
)
@Export("nextInt")
final int nextInt() {
if (0 == --this.valuesRemaining + 1) {
this.generateMoreResults();
this.valuesRemaining = 255;
}
return this.results[this.valuesRemaining];
}
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-506873526"
)
final int method137() {
if (this.valuesRemaining == 0) {
this.generateMoreResults();
this.valuesRemaining = 256;
}
return this.results[this.valuesRemaining - 1];
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "124"
)
@Export("generateMoreResults")
final void generateMoreResults() {
this.bb += ++this.cc;
for (int var1 = 0; var1 < 256; ++var1) {
int var2 = this.mm[var1];
if ((var1 & 2) == 0) {
if ((var1 & 1) == 0) {
this.aa ^= this.aa << 13;
} else {
this.aa ^= this.aa >>> 6;
}
} else if ((var1 & 1) == 0) {
this.aa ^= this.aa << 2;
} else {
this.aa ^= this.aa >>> 16;
}
this.aa += this.mm[128 + var1 & 255];
int var3;
this.mm[var1] = var3 = this.mm[(var2 & 1020) >> 2] + this.bb + this.aa;
this.results[var1] = this.bb = this.mm[(var3 >> 8 & 1020) >> 2] + var2;
}
}
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "579890110"
)
final void method139() {
int var1 = 0x9e3779b9;
int var2 = 0x9e3779b9;
int var3 = 0x9e3779b9;
int var4 = 0x9e3779b9;
int var5 = 0x9e3779b9;
int var6 = 0x9e3779b9;
int var7 = 0x9e3779b9;
int var8 = 0x9e3779b9;
int var9;
for (var9 = 0; var9 < 4; ++var9) {
var8 ^= var7 << 11;
var5 += var8;
var7 += var6;
var7 ^= var6 >>> 2;
var4 += var7;
var6 += var5;
var6 ^= var5 << 8;
var3 += var6;
var5 += var4;
var5 ^= var4 >>> 16;
var2 += var5;
var4 += var3;
var4 ^= var3 << 10;
var1 += var4;
var3 += var2;
var3 ^= var2 >>> 4;
var8 += var3;
var2 += var1;
var2 ^= var1 << 8;
var7 += var2;
var1 += var8;
var1 ^= var8 >>> 9;
var6 += var1;
var8 += var7;
}
for (var9 = 0; var9 < 256; var9 += 8) {
var8 += this.results[var9];
var7 += this.results[var9 + 1];
var6 += this.results[var9 + 2];
var5 += this.results[var9 + 3];
var4 += this.results[var9 + 4];
var3 += this.results[var9 + 5];
var2 += this.results[var9 + 6];
var1 += this.results[var9 + 7];
var8 ^= var7 << 11;
var5 += var8;
var7 += var6;
var7 ^= var6 >>> 2;
var4 += var7;
var6 += var5;
var6 ^= var5 << 8;
var3 += var6;
var5 += var4;
var5 ^= var4 >>> 16;
var2 += var5;
var4 += var3;
var4 ^= var3 << 10;
var1 += var4;
var3 += var2;
var3 ^= var2 >>> 4;
var8 += var3;
var2 += var1;
var2 ^= var1 << 8;
var7 += var2;
var1 += var8;
var1 ^= var8 >>> 9;
var6 += var1;
var8 += var7;
this.mm[var9] = var8;
this.mm[var9 + 1] = var7;
this.mm[var9 + 2] = var6;
this.mm[var9 + 3] = var5;
this.mm[var9 + 4] = var4;
this.mm[var9 + 5] = var3;
this.mm[var9 + 6] = var2;
this.mm[var9 + 7] = var1;
}
for (var9 = 0; var9 < 256; var9 += 8) {
var8 += this.mm[var9];
var7 += this.mm[var9 + 1];
var6 += this.mm[var9 + 2];
var5 += this.mm[var9 + 3];
var4 += this.mm[var9 + 4];
var3 += this.mm[var9 + 5];
var2 += this.mm[var9 + 6];
var1 += this.mm[var9 + 7];
var8 ^= var7 << 11;
var5 += var8;
var7 += var6;
var7 ^= var6 >>> 2;
var4 += var7;
var6 += var5;
var6 ^= var5 << 8;
var3 += var6;
var5 += var4;
var5 ^= var4 >>> 16;
var2 += var5;
var4 += var3;
var4 ^= var3 << 10;
var1 += var4;
var3 += var2;
var3 ^= var2 >>> 4;
var8 += var3;
var2 += var1;
var2 ^= var1 << 8;
var7 += var2;
var1 += var8;
var1 ^= var8 >>> 9;
var6 += var1;
var8 += var7;
this.mm[var9] = var8;
this.mm[var9 + 1] = var7;
this.mm[var9 + 2] = var6;
this.mm[var9 + 3] = var5;
this.mm[var9 + 4] = var4;
this.mm[var9 + 5] = var3;
this.mm[var9 + 6] = var2;
this.mm[var9 + 7] = var1;
}
this.generateMoreResults();
this.valuesRemaining = 256;
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(Lir;Lir;I)V",
garbageValue = "75867683"
)
@Export("setNpcDefinitionArchives")
public static void setNpcDefinitionArchives(AbstractArchive var0, AbstractArchive var1) {
NPCDefinition.NpcDefinition_archive = var0;
NPCDefinition.NpcDefinition_modelArchive = var1;
}
@ObfuscatedName("fl")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "1676957578"
)
static void method4093(int var0) {
if (var0 == -3) {
class54.method1089("Connection timed out.", "Please try using a different world.", "");
} else if (var0 == -2) {
class54.method1089("", "Error connecting to server.", "");
} else if (var0 == -1) {
class54.method1089("No response from server.", "Please try using a different world.", "");
} else if (var0 == 3) {
Login.loginIndex = 3;
Login.field467 = 1;
} else if (var0 == 4) {
class32.method578(0);
} else if (var0 == 5) {
Login.field467 = 2;
class54.method1089("Your account has not logged out from its last", "session or the server is too busy right now.", "Please try again in a few minutes.");
} else if (var0 != 68 && (Client.onMobile || var0 != 6)) {
if (var0 == 7) {
class54.method1089("This world is full.", "Please use a different world.", "");
} else if (var0 == 8) {
class54.method1089("Unable to connect.", "Login server offline.", "");
} else if (var0 == 9) {
class54.method1089("Login limit exceeded.", "Too many connections from your address.", "");
} else if (var0 == 10) {
class54.method1089("Unable to connect.", "Bad session id.", "");
} else if (var0 == 11) {
class54.method1089("We suspect someone knows your password.", "Press 'change your password' on front page.", "");
} else if (var0 == 12) {
class54.method1089("You need a members account to login to this world.", "Please subscribe, or use a different world.", "");
} else if (var0 == 13) {
class54.method1089("Could not complete login.", "Please try using a different world.", "");
} else if (var0 == 14) {
class54.method1089("The server is being updated.", "Please wait 1 minute and try again.", "");
} else if (var0 == 16) {
class54.method1089("Too many login attempts.", "Please wait a few minutes before trying again.", "");
} else if (var0 == 17) {
class54.method1089("You are standing in a members-only area.", "To play on this world move to a free area first", "");
} else if (var0 == 18) {
class32.method578(1);
} else if (var0 == 19) {
class54.method1089("This world is running a closed Beta.", "Sorry invited players only.", "Please use a different world.");
} else if (var0 == 20) {
class54.method1089("Invalid loginserver requested.", "Please try using a different world.", "");
} else if (var0 == 22) {
class54.method1089("Malformed login packet.", "Please try again.", "");
} else if (var0 == 23) {
class54.method1089("No reply from loginserver.", "Please wait 1 minute and try again.", "");
} else if (var0 == 24) {
class54.method1089("Error loading your profile.", "Please contact customer support.", "");
} else if (var0 == 25) {
class54.method1089("Unexpected loginserver response.", "Please try using a different world.", "");
} else if (var0 == 26) {
class54.method1089("This computers address has been blocked", "as it was used to break our rules.", "");
} else if (var0 == 27) {
class54.method1089("", "Service unavailable.", "");
} else if (var0 == 31) {
class54.method1089("Your account must have a displayname set", "in order to play the game. Please set it", "via the website, or the main game.");
} else if (var0 == 32) {
class54.method1089("Your attempt to log into your account was", "unsuccessful. Don't worry, you can sort", "this out by visiting the billing system.");
} else if (var0 == 37) {
class54.method1089("Your account is currently inaccessible.", "Please try again in a few minutes.", "");
} else if (var0 == 38) {
class54.method1089("You need to vote to play!", "Visit runescape.com and vote,", "and then come back here!");
} else if (var0 == 55) {
Login.loginIndex = 8;
} else {
if (var0 == 56) {
class54.method1089("Enter the 6-digit code generated by your", "authenticator app.", "");
GameShell.updateGameState(11);
return;
}
if (var0 == 57) {
class54.method1089("The code you entered was incorrect.", "Please try again.", "");
GameShell.updateGameState(11);
return;
}
if (var0 == 61) {
Login.loginIndex = 7;
} else {
class54.method1089("Unexpected server response", "Please try using a different world.", "");
}
}
} else {
class54.method1089("RuneScape has been updated!", "Please reload this page.", "");
}
GameShell.updateGameState(10);
}
}