soul-browser/sources/java/com/google/android/gms/internal/ads/zzhht.java
KaKi87 550ddb0413
Decompile and recreate Soul Browser v1.4.85 with APK CI builds (#1)
* Decompile and recreate Soul Browser v1.4.85 with APK CI builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix CI build: include bundled google.jks and remove PR trigger

The apktool build failed in CI because app/unknown/.../google.jks was
excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files
and commit the missing resource.

Also remove the redundant pull_request workflow trigger.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Change package ID to com.github.kaki87.soulbrowser

Rename the application ID so the rebuilt APK can be installed
alongside the original Soul Browser from Google Play.

- Update AndroidManifest package, permissions, providers, and actions
- Update R class references in smali (com/github/kaki87/soulbrowser/R)
- Update shortcuts.xml targetPackage
- Rename app label to "Soul Rebuild" for easy identification

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install compatibility: remove split APK metadata and bundle native libs

The rebuilt APK still declared requiredSplitTypes and Play Store split
metadata, causing Android to reject standalone installs as incompatible.

- Remove requiredSplitTypes and split-related manifest meta-data
- Merge native libs from all ABI splits with uncompressed storage
- Page-align before signing for extractNativeLibs=false
- Add .so to apktool doNotCompress list

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install failure: use apksigner v2/v3 and bundle arm64 native libs

Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only
produces v1 signatures, causing Android to reject the install.

- Sign with apksigner (v1+v2+v3) instead of jarsigner
- Add arm64-v8a native libraries from universal Soul Browser 1.4.79
- Set extractNativeLibs=true for reliable sideload installs
- Commit stable debug keystore for consistent signatures across builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Add committed debug keystore for consistent APK signatures

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix startup crash: use original classes2.dex desugar libraries

Apktool recompiles smali_classes2 into a broken classes2.dex, causing
ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init.

Inject the original classes2.dex (Java 8+ desugar libs) after apktool
build instead of using the recompiled version.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix missing drawable resources from density split APKs

The base APK is an app bundle module; density-specific drawables like
seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild,
causing Resources$NotFoundException at runtime.

- Merge non-9-patch resources from split APKs before apktool build
- Sync public.xml IDs from R smali only when backing files exist
- Add 713 density-specific resource IDs to public.xml

Co-authored-by: KaKi87 <KaKi87@pm.me>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 16:07:14 +02:00

303 lines
11 KiB
Java

package com.google.android.gms.internal.ads;
import java.util.Arrays;
import kotlin.UByte;
/* loaded from: classes.dex */
public final class zzhht {
/* renamed from: a, reason: collision with root package name */
public static final int[] f8562a = {0, 3, 6, 9, 12, 16, 19, 22, 25, 28};
public static final int[] b = {0, 2, 3, 5, 6, 0, 1, 3, 4, 6};
/* renamed from: c, reason: collision with root package name */
public static final int[] f8563c = {67108863, 33554431};
public static final int[] d = {26, 25};
public static void a(long[] jArr, long[] jArr2, long[] jArr3) {
for (int i = 0; i < 10; i++) {
jArr[i] = jArr2[i] + jArr3[i];
}
}
public static void b(long[] jArr, long[] jArr2, long[] jArr3) {
for (int i = 0; i < 10; i++) {
jArr[i] = jArr2[i] - jArr3[i];
}
}
public static void c(long[] jArr, long[] jArr2) {
int length = jArr.length;
if (length != 19) {
long[] jArr3 = new long[19];
System.arraycopy(jArr, 0, jArr3, 0, length);
jArr = jArr3;
}
long j = jArr[8];
long j2 = jArr[18];
long j3 = j + (j2 << 4);
jArr[8] = j3;
long j4 = j2 + j2 + j3;
jArr[8] = j4;
jArr[8] = j4 + j2;
long j5 = jArr[7];
long j6 = jArr[17];
long j7 = j5 + (j6 << 4);
jArr[7] = j7;
long j8 = j6 + j6 + j7;
jArr[7] = j8;
jArr[7] = j8 + j6;
long j9 = jArr[6];
long j10 = jArr[16];
long j11 = j9 + (j10 << 4);
jArr[6] = j11;
long j12 = j10 + j10 + j11;
jArr[6] = j12;
jArr[6] = j12 + j10;
long j13 = jArr[5];
long j14 = jArr[15];
long j15 = j13 + (j14 << 4);
jArr[5] = j15;
long j16 = j14 + j14 + j15;
jArr[5] = j16;
jArr[5] = j16 + j14;
long j17 = jArr[4];
long j18 = jArr[14];
long j19 = j17 + (j18 << 4);
jArr[4] = j19;
long j20 = j18 + j18 + j19;
jArr[4] = j20;
jArr[4] = j20 + j18;
long j21 = jArr[3];
long j22 = jArr[13];
long j23 = j21 + (j22 << 4);
jArr[3] = j23;
long j24 = j22 + j22 + j23;
jArr[3] = j24;
jArr[3] = j24 + j22;
long j25 = jArr[2];
long j26 = jArr[12];
long j27 = j25 + (j26 << 4);
jArr[2] = j27;
long j28 = j26 + j26 + j27;
jArr[2] = j28;
jArr[2] = j28 + j26;
long j29 = jArr[1];
long j30 = jArr[11];
long j31 = j29 + (j30 << 4);
jArr[1] = j31;
long j32 = j30 + j30 + j31;
jArr[1] = j32;
jArr[1] = j32 + j30;
long j33 = jArr[0];
long j34 = jArr[10];
long j35 = j33 + (j34 << 4);
jArr[0] = j35;
long j36 = j34 + j34 + j35;
jArr[0] = j36;
jArr[0] = j36 + j34;
d(jArr);
System.arraycopy(jArr, 0, jArr2, 0, 10);
}
public static void d(long[] jArr) {
jArr[10] = 0;
int i = 0;
while (i < 10) {
long j = jArr[i];
long j2 = j / 67108864;
jArr[i] = j - (j2 << 26);
int i2 = i + 1;
long j3 = jArr[i2] + j2;
jArr[i2] = j3;
long j4 = j3 / 33554432;
jArr[i2] = j3 - (j4 << 25);
i += 2;
jArr[i] = jArr[i] + j4;
}
long j5 = jArr[0];
long j6 = jArr[10];
long j7 = j5 + (j6 << 4);
jArr[0] = j7;
long j8 = j6 + j6 + j7;
jArr[0] = j8;
long j9 = j8 + j6;
jArr[0] = j9;
jArr[10] = 0;
long j10 = j9 / 67108864;
jArr[0] = j9 - (j10 << 26);
jArr[1] = jArr[1] + j10;
}
public static void e(long[] jArr, long[] jArr2, long[] jArr3) {
long j = jArr2[0];
long j2 = jArr3[0];
long j3 = j * j2;
long j4 = jArr3[1];
long j5 = jArr2[1];
long j6 = (j5 * j2) + (j * j4);
long j7 = jArr3[2];
long j8 = jArr2[2];
long j9 = ((j5 + j5) * j4) + (j * j7) + (j8 * j2);
long j10 = jArr3[3];
long j11 = jArr2[3];
long j12 = (j5 * j7) + (j8 * j4) + (j * j10) + (j11 * j2);
long j13 = jArr3[4];
long j14 = jArr2[4];
long j15 = (j5 * j10) + (j11 * j4);
long j16 = j15 + j15 + (j8 * j7) + (j * j13) + (j14 * j2);
long j17 = jArr3[5];
long j18 = jArr2[5];
long j19 = (j8 * j10) + (j11 * j7) + (j5 * j13) + (j14 * j4) + (j * j17) + (j18 * j2);
long j20 = jArr3[6];
long j21 = jArr2[6];
long j22 = (j11 * j10) + (j5 * j17) + (j18 * j4);
long j23 = j22 + j22 + (j8 * j13) + (j14 * j7) + (j * j20) + (j21 * j2);
long j24 = jArr3[7];
long j25 = jArr2[7];
long j26 = (j11 * j13) + (j14 * j10) + (j8 * j17) + (j18 * j7) + (j5 * j20) + (j21 * j4) + (j * j24) + (j25 * j2);
long j27 = jArr3[8];
long j28 = jArr2[8];
long j29 = (j11 * j17) + (j18 * j10) + (j5 * j24) + (j25 * j4);
long j30 = j29 + j29 + (j14 * j13) + (j8 * j20) + (j21 * j7) + (j * j27) + (j28 * j2);
long j31 = jArr3[9];
long j32 = jArr2[9];
long j33 = (j14 * j17) + (j18 * j13) + (j11 * j20) + (j21 * j10) + (j8 * j24) + (j25 * j7) + (j5 * j27) + (j28 * j4) + (j * j31) + (j2 * j32);
long j34 = (j18 * j17) + (j11 * j24) + (j25 * j10) + (j5 * j31) + (j4 * j32);
long j35 = (j18 * j24) + (j25 * j17) + (j11 * j31) + (j10 * j32);
long j36 = (j25 * j24) + (j18 * j31) + (j17 * j32);
long j37 = (j25 * j27) + (j28 * j24) + (j21 * j31) + (j20 * j32);
long j38 = (j24 * j32) + (j25 * j31);
c(new long[]{j3, j6, j9, j12, j16, j19, j23, j26, j30, j33, j34 + j34 + (j14 * j20) + (j21 * j13) + (j8 * j27) + (j28 * j7), (j18 * j20) + (j21 * j17) + (j14 * j24) + (j25 * j13) + (j11 * j27) + (j28 * j10) + (j8 * j31) + (j7 * j32), j35 + j35 + (j21 * j20) + (j14 * j27) + (j28 * j13), (j21 * j24) + (j25 * j20) + (j18 * j27) + (j28 * j17) + (j14 * j31) + (j13 * j32), j36 + j36 + (j21 * j27) + (j28 * j20), j37, j38 + j38 + (j28 * j27), (j27 * j32) + (j28 * j31), (j32 + j32) * j31}, jArr);
}
public static void f(long[] jArr, long[] jArr2) {
long j = jArr2[0];
long j2 = j * j;
long j3 = jArr2[1];
long j4 = (j + j) * j3;
long j5 = jArr2[2];
long j6 = (j * j5) + (j3 * j3);
long j7 = jArr2[3];
long j8 = (j * j7) + (j3 * j5);
long j9 = jArr2[4];
long j10 = (j5 * j5) + (j3 * 4 * j7) + ((j + j) * j9);
long j11 = jArr2[5];
long j12 = (j5 * j7) + (j3 * j9) + (j * j11);
long j13 = jArr2[6];
long j14 = (j7 * j7) + (j5 * j9) + (j * j13) + ((j3 + j3) * j11);
long j15 = jArr2[7];
long j16 = (j7 * j9) + (j5 * j11) + (j3 * j13) + (j * j15);
long j17 = jArr2[8];
long j18 = (j7 * j11) + (j3 * j15);
long j19 = j18 + j18 + (j5 * j13) + (j * j17);
long j20 = j19 + j19 + (j9 * j9);
long j21 = jArr2[9];
long j22 = (j9 * j11) + (j7 * j13) + (j5 * j15) + (j3 * j17) + (j * j21);
long j23 = (j3 * j21) + (j7 * j15);
long j24 = j23 + j23 + (j11 * j11) + (j9 * j13) + (j5 * j17);
long j25 = (j11 * j13) + (j9 * j15) + (j7 * j17) + (j5 * j21);
long j26 = (j7 * j21) + (j11 * j15);
long j27 = j26 + j26 + (j9 * j17);
long j28 = j27 + j27 + (j13 * j13);
long j29 = (j13 * j15) + (j11 * j17) + (j9 * j21);
long j30 = (j15 * j15) + (j13 * j17) + ((j11 + j11) * j21);
long j31 = (j13 * j21) + (j15 * j17);
c(new long[]{j2, j4, j6 + j6, j8 + j8, j10, j12 + j12, j14 + j14, j16 + j16, j20, j22 + j22, j24 + j24, j25 + j25, j28, j29 + j29, j30 + j30, j31 + j31, (j15 * 4 * j21) + (j17 * j17), (j17 + j17) * j21, (j21 + j21) * j21}, jArr);
}
public static long[] g(byte[] bArr) {
long[] jArr = new long[10];
for (int i = 0; i < 10; i++) {
int i2 = f8562a[i];
jArr[i] = (((((bArr[i2] & UByte.MAX_VALUE) | ((bArr[i2 + 1] & UByte.MAX_VALUE) << 8)) | ((bArr[i2 + 2] & UByte.MAX_VALUE) << 16)) | ((bArr[i2 + 3] & UByte.MAX_VALUE) << 24)) >> b[i]) & f8563c[i & 1];
}
return jArr;
}
public static byte[] h(long[] jArr) {
long j;
int[] iArr;
int i;
int[] iArr2;
long[] copyOf = Arrays.copyOf(jArr, 10);
int i2 = 0;
int i3 = 0;
while (true) {
j = 19;
iArr = d;
if (i3 >= 2) {
break;
}
int i4 = 0;
while (i4 < 9) {
long j2 = copyOf[i4];
int i5 = -((int) (((j2 >> 31) & j2) >> iArr[i4 & 1]));
copyOf[i4] = j2 + (i5 << r15);
i4++;
copyOf[i4] = copyOf[i4] - i5;
}
long j3 = copyOf[9];
copyOf[9] = j3 + (r6 << 25);
copyOf[0] = copyOf[0] - ((-((int) (((j3 >> 31) & j3) >> 25))) * 19);
i3++;
}
long j4 = copyOf[0];
copyOf[0] = j4 + (r3 << 26);
copyOf[1] = copyOf[1] - (-((int) (((j4 >> 31) & j4) >> 26)));
int i6 = 0;
while (true) {
iArr2 = f8563c;
if (i6 >= 2) {
break;
}
int i7 = i2;
while (i7 < 9) {
long j5 = copyOf[i7];
int i8 = i2;
long j6 = j5 >> iArr[i7 & 1];
copyOf[i7] = iArr2[r16] & j5;
i7++;
copyOf[i7] = copyOf[i7] + ((int) j6);
i2 = i8;
i6 = i6;
j = j;
}
i6++;
}
int i9 = i2;
copyOf[9] = copyOf[9] & 33554431;
copyOf[i9] = (((int) (r2 >> 25)) * j) + copyOf[i9];
int i10 = ~((((int) r4) - 67108845) >> 31);
for (int i11 = 1; i11 < 10; i11++) {
int i12 = ~(((int) copyOf[i11]) ^ iArr2[i11 & 1]);
int i13 = i12 & (i12 << 16);
int i14 = i13 & (i13 << 8);
int i15 = i14 & (i14 << 4);
int i16 = i15 & (i15 << 2);
i10 &= (i16 & (i16 + i16)) >> 31;
}
copyOf[i9] = copyOf[i9] - (67108845 & i10);
long j7 = 33554431 & i10;
copyOf[1] = copyOf[1] - j7;
for (i = 2; i < 10; i += 2) {
copyOf[i] = copyOf[i] - (67108863 & i10);
int i17 = i + 1;
copyOf[i17] = copyOf[i17] - j7;
}
for (int i18 = i9; i18 < 10; i18++) {
copyOf[i18] = copyOf[i18] << b[i18];
}
byte[] bArr = new byte[32];
for (int i19 = i9; i19 < 10; i19++) {
int i20 = f8562a[i19];
long j8 = bArr[i20];
long j9 = copyOf[i19];
bArr[i20] = (byte) (j8 | (j9 & 255));
bArr[i20 + 1] = (byte) (bArr[r5] | ((j9 >> 8) & 255));
bArr[i20 + 2] = (byte) (bArr[r5] | ((j9 >> 16) & 255));
bArr[i20 + 3] = (byte) (bArr[r4] | ((j9 >> 24) & 255));
}
return bArr;
}
}