Files
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

170 lines
5.2 KiB
Java

package com.amazonaws.util;
import com.applovin.exoplayer2.common.base.Ascii;
/* loaded from: classes.dex */
class Base64Codec {
public final byte[] alpahbets = CodecUtils.toBytesDirect("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
public static class LazyHolder {
public static final byte[] DECODED = decodeTable();
public static byte[] decodeTable() {
byte[] bArr = new byte[123];
for (int i = 0; i <= 122; i++) {
if (i >= 65 && i <= 90) {
bArr[i] = (byte) (i - 65);
} else if (i >= 48 && i <= 57) {
bArr[i] = (byte) (i + 4);
} else if (i == 43) {
bArr[i] = (byte) (i + 19);
} else if (i == 47) {
bArr[i] = (byte) (i + 16);
} else if (i >= 97 && i <= 122) {
bArr[i] = (byte) (i - 71);
} else {
bArr[i] = -1;
}
}
return bArr;
}
}
public byte[] encode(byte[] bArr) {
int length = bArr.length / 3;
int length2 = bArr.length % 3;
int i = 0;
if (length2 == 0) {
byte[] bArr2 = new byte[length * 4];
int i2 = 0;
while (i < bArr.length) {
encode3bytes(bArr, i, bArr2, i2);
i += 3;
i2 += 4;
}
return bArr2;
}
byte[] bArr3 = new byte[(length + 1) * 4];
int i3 = 0;
while (i < bArr.length - length2) {
encode3bytes(bArr, i, bArr3, i3);
i += 3;
i3 += 4;
}
if (length2 == 1) {
encode1byte(bArr, i, bArr3, i3);
} else if (length2 == 2) {
encode2bytes(bArr, i, bArr3, i3);
}
return bArr3;
}
public void encode3bytes(byte[] bArr, int i, byte[] bArr2, int i2) {
byte[] bArr3 = this.alpahbets;
byte b = bArr[i];
bArr2[i2] = bArr3[(b >>> 2) & 63];
byte b2 = bArr[i + 1];
bArr2[i2 + 1] = bArr3[((b & 3) << 4) | ((b2 >>> 4) & 15)];
int i3 = (b2 & Ascii.SI) << 2;
byte b3 = bArr[i + 2];
bArr2[i2 + 2] = bArr3[((b3 >>> 6) & 3) | i3];
bArr2[i2 + 3] = bArr3[b3 & 63];
}
public void encode2bytes(byte[] bArr, int i, byte[] bArr2, int i2) {
byte[] bArr3 = this.alpahbets;
int i3 = i + 1;
byte b = bArr[i];
bArr2[i2] = bArr3[(b >>> 2) & 63];
byte b2 = bArr[i3];
bArr2[i2 + 1] = bArr3[((b & 3) << 4) | ((b2 >>> 4) & 15)];
bArr2[i2 + 2] = bArr3[(b2 & Ascii.SI) << 2];
bArr2[i2 + 3] = 61;
}
public void encode1byte(byte[] bArr, int i, byte[] bArr2, int i2) {
byte[] bArr3 = this.alpahbets;
byte b = bArr[i];
bArr2[i2] = bArr3[(b >>> 2) & 63];
bArr2[i2 + 1] = bArr3[(b & 3) << 4];
bArr2[i2 + 2] = 61;
bArr2[i2 + 3] = 61;
}
public void decode4bytes(byte[] bArr, int i, byte[] bArr2, int i2) {
int pos = pos(bArr[i]) << 2;
int pos2 = pos(bArr[i + 1]);
bArr2[i2] = (byte) (pos | ((pos2 >>> 4) & 3));
int pos3 = pos(bArr[i + 2]);
bArr2[i2 + 1] = (byte) (((pos2 & 15) << 4) | ((pos3 >>> 2) & 15));
bArr2[i2 + 2] = (byte) (pos(bArr[i + 3]) | ((pos3 & 3) << 6));
}
public void decode1to3bytes(int i, byte[] bArr, int i2, byte[] bArr2, int i3) {
int i4 = i3 + 1;
int pos = pos(bArr[i2]) << 2;
int i5 = i2 + 2;
int pos2 = pos(bArr[i2 + 1]);
bArr2[i3] = (byte) (pos | ((pos2 >>> 4) & 3));
if (i == 1) {
CodecUtils.sanityCheckLastPos(pos2, 15);
return;
}
int i6 = i3 + 2;
int i7 = i2 + 3;
int pos3 = pos(bArr[i5]);
bArr2[i4] = (byte) (((pos2 & 15) << 4) | (15 & (pos3 >>> 2)));
if (i == 2) {
CodecUtils.sanityCheckLastPos(pos3, 3);
} else {
bArr2[i6] = (byte) (((pos3 & 3) << 6) | pos(bArr[i7]));
}
}
public byte[] decode(byte[] bArr, int i) {
int i2;
if (i % 4 != 0) {
throw new IllegalArgumentException("Input is expected to be encoded in multiple of 4 bytes but found: " + i);
}
int i3 = i - 1;
int i4 = 0;
while (true) {
i2 = 2;
if (i4 >= 2 || i3 <= -1 || bArr[i3] != 61) {
break;
}
i3--;
i4++;
}
if (i4 == 0) {
i2 = 3;
} else if (i4 != 1) {
if (i4 != 2) {
throw new Error("Impossible");
}
i2 = 1;
}
int i5 = ((i / 4) * 3) - (3 - i2);
byte[] bArr2 = new byte[i5];
int i6 = 0;
int i7 = 0;
while (i7 < i5 - (i2 % 3)) {
decode4bytes(bArr, i6, bArr2, i7);
i6 += 4;
i7 += 3;
}
if (i2 < 3) {
decode1to3bytes(i2, bArr, i6, bArr2, i7);
}
return bArr2;
}
public int pos(byte b) {
byte b2 = LazyHolder.DECODED[b];
if (b2 > -1) {
return b2;
}
throw new IllegalArgumentException("Invalid base 64 character: '" + ((char) b) + "'");
}
}