Files
runelite/runescape-client/src/main/java/ArchiveDisk.java
2021-06-16 11:24:56 +01:00

351 lines
11 KiB
Java

import java.io.EOFException;
import java.io.IOException;
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("la")
@Implements("ArchiveDisk")
public final class ArchiveDisk {
@ObfuscatedName("f")
@Export("ArchiveDisk_buffer")
static byte[] ArchiveDisk_buffer;
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "Lna;"
)
@Export("datFile")
BufferedFile datFile;
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "Lna;"
)
@Export("idxFile")
BufferedFile idxFile;
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -1822948391
)
@Export("archive")
int archive;
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = -1175009945
)
@Export("maxEntrySize")
int maxEntrySize;
static {
ArchiveDisk_buffer = new byte[520]; // L: 7
}
@ObfuscatedSignature(
descriptor = "(ILna;Lna;I)V"
)
public ArchiveDisk(int var1, BufferedFile var2, BufferedFile var3, int var4) {
this.datFile = null; // L: 8
this.idxFile = null; // L: 9
this.maxEntrySize = 65000; // L: 11
this.archive = var1; // L: 14
this.datFile = var2; // L: 15
this.idxFile = var3; // L: 16
this.maxEntrySize = var4; // L: 17
} // L: 18
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(II)[B",
garbageValue = "-1703583799"
)
@Export("read")
public byte[] read(int var1) {
synchronized(this.datFile) { // L: 21
try {
Object var10000;
if (this.idxFile.length() < (long)(var1 * 6 + 6)) { // L: 23
var10000 = null;
return (byte[])var10000;
} else {
this.idxFile.seek((long)(var1 * 6)); // L: 24
this.idxFile.read(ArchiveDisk_buffer, 0, 6); // L: 25
int var3 = ((ArchiveDisk_buffer[0] & 255) << 16) + (ArchiveDisk_buffer[2] & 255) + ((ArchiveDisk_buffer[1] & 255) << 8); // L: 26
int var4 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[3] & 255) << 16) + ((ArchiveDisk_buffer[4] & 255) << 8); // L: 27
if (var3 < 0 || var3 > this.maxEntrySize) { // L: 28
var10000 = null;
return (byte[])var10000;
} else if (var4 <= 0 || (long)var4 > this.datFile.length() / 520L) { // L: 29
var10000 = null;
return (byte[])var10000;
} else {
byte[] var5 = new byte[var3]; // L: 30
int var6 = 0; // L: 31
for (int var7 = 0; var6 < var3; ++var7) { // L: 32 33 65
if (var4 == 0) { // L: 34
var10000 = null;
return (byte[])var10000;
}
this.datFile.seek((long)var4 * 520L); // L: 35
int var8 = var3 - var6; // L: 36
int var9;
int var10;
int var11;
int var12;
byte var13;
if (var1 > 65535) { // L: 42
if (var8 > 510) { // L: 43
var8 = 510;
}
var13 = 10; // L: 44
this.datFile.read(ArchiveDisk_buffer, 0, var13 + var8); // L: 45
var9 = ((ArchiveDisk_buffer[1] & 255) << 16) + ((ArchiveDisk_buffer[0] & 255) << 24) + (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8); // L: 46
var10 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[4] & 255) << 8); // L: 47
var11 = (ArchiveDisk_buffer[8] & 255) + ((ArchiveDisk_buffer[7] & 255) << 8) + ((ArchiveDisk_buffer[6] & 255) << 16); // L: 48
var12 = ArchiveDisk_buffer[9] & 255; // L: 49
} else {
if (var8 > 512) { // L: 52
var8 = 512;
}
var13 = 8; // L: 53
this.datFile.read(ArchiveDisk_buffer, 0, var13 + var8); // L: 54
var9 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8); // L: 55
var10 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8); // L: 56
var11 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255); // L: 57
var12 = ArchiveDisk_buffer[7] & 255; // L: 58
}
if (var9 != var1 || var7 != var10 || var12 != this.archive) { // L: 60
var10000 = null;
return (byte[])var10000;
}
if (var11 < 0 || (long)var11 > this.datFile.length() / 520L) { // L: 61
var10000 = null;
return (byte[])var10000;
}
int var14 = var8 + var13; // L: 62
for (int var15 = var13; var15 < var14; ++var15) { // L: 63
var5[var6++] = ArchiveDisk_buffer[var15];
}
var4 = var11; // L: 64
}
byte[] var20 = var5;
return var20; // L: 67
}
}
} catch (IOException var18) { // L: 69
return null; // L: 70
}
}
}
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(I[BII)Z",
garbageValue = "53032426"
)
@Export("write")
public boolean write(int var1, byte[] var2, int var3) {
synchronized(this.datFile) { // L: 76
if (var3 >= 0 && var3 <= this.maxEntrySize) { // L: 77
boolean var5 = this.write0(var1, var2, var3, true); // L: 80
if (!var5) {
var5 = this.write0(var1, var2, var3, false); // L: 81
}
return var5; // L: 82
} else {
throw new IllegalArgumentException("" + this.archive + ',' + var1 + ',' + var3); // L: 78
}
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(I[BIZB)Z",
garbageValue = "-96"
)
@Export("write0")
boolean write0(int var1, byte[] var2, int var3, boolean var4) {
synchronized(this.datFile) { // L: 87
try {
int var6;
boolean var10000;
if (var4) { // L: 90
if (this.idxFile.length() < (long)(var1 * 6 + 6)) { // L: 91
var10000 = false;
return var10000;
}
this.idxFile.seek((long)(var1 * 6)); // L: 92
this.idxFile.read(ArchiveDisk_buffer, 0, 6); // L: 93
var6 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[3] & 255) << 16) + ((ArchiveDisk_buffer[4] & 255) << 8); // L: 94
if (var6 <= 0 || (long)var6 > this.datFile.length() / 520L) { // L: 95
var10000 = false;
return var10000;
}
} else {
var6 = (int)((this.datFile.length() + 519L) / 520L); // L: 98
if (var6 == 0) { // L: 99
var6 = 1;
}
}
ArchiveDisk_buffer[0] = (byte)(var3 >> 16); // L: 101
ArchiveDisk_buffer[1] = (byte)(var3 >> 8); // L: 102
ArchiveDisk_buffer[2] = (byte)var3; // L: 103
ArchiveDisk_buffer[3] = (byte)(var6 >> 16); // L: 104
ArchiveDisk_buffer[4] = (byte)(var6 >> 8); // L: 105
ArchiveDisk_buffer[5] = (byte)var6; // L: 106
this.idxFile.seek((long)(var1 * 6)); // L: 107
this.idxFile.write(ArchiveDisk_buffer, 0, 6); // L: 108
int var7 = 0; // L: 109
int var8 = 0; // L: 110
while (true) {
if (var7 < var3) { // L: 111
label171: {
int var9 = 0; // L: 112
int var10;
if (var4) { // L: 113
this.datFile.seek(520L * (long)var6); // L: 114
int var11;
int var12;
if (var1 > 65535) { // L: 118
try {
this.datFile.read(ArchiveDisk_buffer, 0, 10); // L: 120
} catch (EOFException var17) { // L: 122
break label171; // L: 123
}
var10 = ((ArchiveDisk_buffer[1] & 255) << 16) + ((ArchiveDisk_buffer[0] & 255) << 24) + (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8); // L: 125
var11 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[4] & 255) << 8); // L: 126
var9 = (ArchiveDisk_buffer[8] & 255) + ((ArchiveDisk_buffer[7] & 255) << 8) + ((ArchiveDisk_buffer[6] & 255) << 16); // L: 127
var12 = ArchiveDisk_buffer[9] & 255; // L: 128
} else {
try {
this.datFile.read(ArchiveDisk_buffer, 0, 8); // L: 132
} catch (EOFException var16) { // L: 134
break label171; // L: 135
}
var10 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8); // L: 137
var11 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8); // L: 138
var9 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255); // L: 139
var12 = ArchiveDisk_buffer[7] & 255; // L: 140
}
if (var10 != var1 || var8 != var11 || var12 != this.archive) { // L: 142
var10000 = false;
return var10000;
}
if (var9 < 0 || (long)var9 > this.datFile.length() / 520L) { // L: 143
var10000 = false;
return var10000;
}
}
if (var9 == 0) { // L: 145
var4 = false; // L: 146
var9 = (int)((this.datFile.length() + 519L) / 520L); // L: 147
if (var9 == 0) { // L: 148
++var9;
}
if (var9 == var6) { // L: 149
++var9;
}
}
if (var1 > 65535) { // L: 151
if (var3 - var7 <= 510) { // L: 152
var9 = 0;
}
ArchiveDisk_buffer[0] = (byte)(var1 >> 24); // L: 153
ArchiveDisk_buffer[1] = (byte)(var1 >> 16); // L: 154
ArchiveDisk_buffer[2] = (byte)(var1 >> 8); // L: 155
ArchiveDisk_buffer[3] = (byte)var1; // L: 156
ArchiveDisk_buffer[4] = (byte)(var8 >> 8); // L: 157
ArchiveDisk_buffer[5] = (byte)var8; // L: 158
ArchiveDisk_buffer[6] = (byte)(var9 >> 16); // L: 159
ArchiveDisk_buffer[7] = (byte)(var9 >> 8); // L: 160
ArchiveDisk_buffer[8] = (byte)var9; // L: 161
ArchiveDisk_buffer[9] = (byte)this.archive; // L: 162
this.datFile.seek((long)var6 * 520L); // L: 163
this.datFile.write(ArchiveDisk_buffer, 0, 10); // L: 164
var10 = var3 - var7; // L: 165
if (var10 > 510) { // L: 166
var10 = 510;
}
this.datFile.write(var2, var7, var10); // L: 167
var7 += var10; // L: 168
} else {
if (var3 - var7 <= 512) { // L: 171
var9 = 0;
}
ArchiveDisk_buffer[0] = (byte)(var1 >> 8); // L: 172
ArchiveDisk_buffer[1] = (byte)var1; // L: 173
ArchiveDisk_buffer[2] = (byte)(var8 >> 8); // L: 174
ArchiveDisk_buffer[3] = (byte)var8; // L: 175
ArchiveDisk_buffer[4] = (byte)(var9 >> 16); // L: 176
ArchiveDisk_buffer[5] = (byte)(var9 >> 8); // L: 177
ArchiveDisk_buffer[6] = (byte)var9; // L: 178
ArchiveDisk_buffer[7] = (byte)this.archive; // L: 179
this.datFile.seek((long)var6 * 520L); // L: 180
this.datFile.write(ArchiveDisk_buffer, 0, 8); // L: 181
var10 = var3 - var7; // L: 182
if (var10 > 512) { // L: 183
var10 = 512;
}
this.datFile.write(var2, var7, var10); // L: 184
var7 += var10; // L: 185
}
var6 = var9; // L: 187
++var8; // L: 188
continue; // L: 189
}
}
var10000 = true; // L: 190
return var10000;
}
} catch (IOException var18) {
return false;
}
}
}
public String toString() {
return "" + this.archive; // L: 198
}
@ObfuscatedName("z")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "-16"
)
public static void method5993() {
class397.SpriteBuffer_xOffsets = null; // L: 191
class26.SpriteBuffer_yOffsets = null; // L: 192
Canvas.SpriteBuffer_spriteWidths = null; // L: 193
Clock.SpriteBuffer_spriteHeights = null; // L: 194
class397.SpriteBuffer_spritePalette = null; // L: 195
class126.SpriteBuffer_pixels = null; // L: 196
} // L: 197
}