- 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
548 lines
17 KiB
Java
548 lines
17 KiB
Java
package com.google.android.gms.internal.drive;
|
|
|
|
import com.facebook.appevents.integrity.IntegrityManager;
|
|
import java.lang.reflect.Field;
|
|
import java.nio.Buffer;
|
|
import java.nio.ByteOrder;
|
|
import java.security.AccessController;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import sun.misc.Unsafe;
|
|
|
|
/* loaded from: classes3.dex */
|
|
final class zznd {
|
|
private static final Logger logger = Logger.getLogger(zznd.class.getName());
|
|
private static final Class<?> zzni;
|
|
private static final boolean zzog;
|
|
private static final Unsafe zzuc;
|
|
private static final boolean zzvy;
|
|
private static final boolean zzvz;
|
|
private static final zzd zzwa;
|
|
private static final boolean zzwb;
|
|
private static final long zzwc;
|
|
private static final long zzwd;
|
|
private static final long zzwe;
|
|
private static final long zzwf;
|
|
private static final long zzwg;
|
|
private static final long zzwh;
|
|
private static final long zzwi;
|
|
private static final long zzwj;
|
|
private static final long zzwk;
|
|
private static final long zzwl;
|
|
private static final long zzwm;
|
|
private static final long zzwn;
|
|
private static final long zzwo;
|
|
private static final long zzwp;
|
|
private static final int zzwq;
|
|
static final boolean zzwr;
|
|
|
|
private zznd() {
|
|
}
|
|
|
|
public static boolean zzfd() {
|
|
return zzog;
|
|
}
|
|
|
|
public static boolean zzfe() {
|
|
return zzwb;
|
|
}
|
|
|
|
public static final class zza extends zzd {
|
|
public zza(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final byte zzx(Object obj, long j) {
|
|
if (zznd.zzwr) {
|
|
return zznd.zzp(obj, j);
|
|
}
|
|
return zznd.zzq(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zze(Object obj, long j, byte b) {
|
|
if (zznd.zzwr) {
|
|
zznd.zza(obj, j, b);
|
|
} else {
|
|
zznd.zzb(obj, j, b);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final boolean zzl(Object obj, long j) {
|
|
if (zznd.zzwr) {
|
|
return zznd.zzr(obj, j);
|
|
}
|
|
return zznd.zzs(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, boolean z) {
|
|
if (zznd.zzwr) {
|
|
zznd.zzb(obj, j, z);
|
|
} else {
|
|
zznd.zzc(obj, j, z);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final float zzm(Object obj, long j) {
|
|
return Float.intBitsToFloat(zzj(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, float f) {
|
|
zza(obj, j, Float.floatToIntBits(f));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final double zzn(Object obj, long j) {
|
|
return Double.longBitsToDouble(zzk(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, double d) {
|
|
zza(obj, j, Double.doubleToLongBits(d));
|
|
}
|
|
}
|
|
|
|
public static final class zzb extends zzd {
|
|
public zzb(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final byte zzx(Object obj, long j) {
|
|
if (zznd.zzwr) {
|
|
return zznd.zzp(obj, j);
|
|
}
|
|
return zznd.zzq(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zze(Object obj, long j, byte b) {
|
|
if (zznd.zzwr) {
|
|
zznd.zza(obj, j, b);
|
|
} else {
|
|
zznd.zzb(obj, j, b);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final boolean zzl(Object obj, long j) {
|
|
if (zznd.zzwr) {
|
|
return zznd.zzr(obj, j);
|
|
}
|
|
return zznd.zzs(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, boolean z) {
|
|
if (zznd.zzwr) {
|
|
zznd.zzb(obj, j, z);
|
|
} else {
|
|
zznd.zzc(obj, j, z);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final float zzm(Object obj, long j) {
|
|
return Float.intBitsToFloat(zzj(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, float f) {
|
|
zza(obj, j, Float.floatToIntBits(f));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final double zzn(Object obj, long j) {
|
|
return Double.longBitsToDouble(zzk(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, double d) {
|
|
zza(obj, j, Double.doubleToLongBits(d));
|
|
}
|
|
}
|
|
|
|
public static final class zzc extends zzd {
|
|
public zzc(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final byte zzx(Object obj, long j) {
|
|
return this.zzws.getByte(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zze(Object obj, long j, byte b) {
|
|
this.zzws.putByte(obj, j, b);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final boolean zzl(Object obj, long j) {
|
|
return this.zzws.getBoolean(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, boolean z) {
|
|
this.zzws.putBoolean(obj, j, z);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final float zzm(Object obj, long j) {
|
|
return this.zzws.getFloat(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, float f) {
|
|
this.zzws.putFloat(obj, j, f);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final double zzn(Object obj, long j) {
|
|
return this.zzws.getDouble(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.drive.zznd.zzd
|
|
public final void zza(Object obj, long j, double d) {
|
|
this.zzws.putDouble(obj, j, d);
|
|
}
|
|
}
|
|
|
|
public static abstract class zzd {
|
|
Unsafe zzws;
|
|
|
|
public zzd(Unsafe unsafe) {
|
|
this.zzws = unsafe;
|
|
}
|
|
|
|
public abstract void zza(Object obj, long j, double d);
|
|
|
|
public abstract void zza(Object obj, long j, float f);
|
|
|
|
public abstract void zza(Object obj, long j, boolean z);
|
|
|
|
public abstract void zze(Object obj, long j, byte b);
|
|
|
|
public abstract boolean zzl(Object obj, long j);
|
|
|
|
public abstract float zzm(Object obj, long j);
|
|
|
|
public abstract double zzn(Object obj, long j);
|
|
|
|
public abstract byte zzx(Object obj, long j);
|
|
|
|
public final int zzj(Object obj, long j) {
|
|
return this.zzws.getInt(obj, j);
|
|
}
|
|
|
|
public final void zza(Object obj, long j, int i) {
|
|
this.zzws.putInt(obj, j, i);
|
|
}
|
|
|
|
public final long zzk(Object obj, long j) {
|
|
return this.zzws.getLong(obj, j);
|
|
}
|
|
|
|
public final void zza(Object obj, long j, long j2) {
|
|
this.zzws.putLong(obj, j, j2);
|
|
}
|
|
}
|
|
|
|
public static <T> T zzh(Class<T> cls) {
|
|
try {
|
|
return (T) zzuc.allocateInstance(cls);
|
|
} catch (InstantiationException e) {
|
|
throw new IllegalStateException(e);
|
|
}
|
|
}
|
|
|
|
private static int zzi(Class<?> cls) {
|
|
if (zzog) {
|
|
return zzwa.zzws.arrayBaseOffset(cls);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
private static int zzj(Class<?> cls) {
|
|
if (zzog) {
|
|
return zzwa.zzws.arrayIndexScale(cls);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public static int zzj(Object obj, long j) {
|
|
return zzwa.zzj(obj, j);
|
|
}
|
|
|
|
public static void zza(Object obj, long j, int i) {
|
|
zzwa.zza(obj, j, i);
|
|
}
|
|
|
|
public static long zzk(Object obj, long j) {
|
|
return zzwa.zzk(obj, j);
|
|
}
|
|
|
|
public static void zza(Object obj, long j, long j2) {
|
|
zzwa.zza(obj, j, j2);
|
|
}
|
|
|
|
public static boolean zzl(Object obj, long j) {
|
|
return zzwa.zzl(obj, j);
|
|
}
|
|
|
|
public static void zza(Object obj, long j, boolean z) {
|
|
zzwa.zza(obj, j, z);
|
|
}
|
|
|
|
public static float zzm(Object obj, long j) {
|
|
return zzwa.zzm(obj, j);
|
|
}
|
|
|
|
public static void zza(Object obj, long j, float f) {
|
|
zzwa.zza(obj, j, f);
|
|
}
|
|
|
|
public static double zzn(Object obj, long j) {
|
|
return zzwa.zzn(obj, j);
|
|
}
|
|
|
|
public static void zza(Object obj, long j, double d) {
|
|
zzwa.zza(obj, j, d);
|
|
}
|
|
|
|
public static Object zzo(Object obj, long j) {
|
|
return zzwa.zzws.getObject(obj, j);
|
|
}
|
|
|
|
public static void zza(Object obj, long j, Object obj2) {
|
|
zzwa.zzws.putObject(obj, j, obj2);
|
|
}
|
|
|
|
public static byte zza(byte[] bArr, long j) {
|
|
return zzwa.zzx(bArr, zzwc + j);
|
|
}
|
|
|
|
public static void zza(byte[] bArr, long j, byte b) {
|
|
zzwa.zze(bArr, zzwc + j, b);
|
|
}
|
|
|
|
public static Unsafe zzff() {
|
|
try {
|
|
return (Unsafe) AccessController.doPrivileged(new zzne());
|
|
} catch (Throwable unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static boolean zzfg() {
|
|
Unsafe unsafe = zzuc;
|
|
if (unsafe == null) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls = unsafe.getClass();
|
|
cls.getMethod("objectFieldOffset", Field.class);
|
|
cls.getMethod("arrayBaseOffset", Class.class);
|
|
cls.getMethod("arrayIndexScale", Class.class);
|
|
Class<?> cls2 = Long.TYPE;
|
|
cls.getMethod("getInt", Object.class, cls2);
|
|
cls.getMethod("putInt", Object.class, cls2, Integer.TYPE);
|
|
cls.getMethod("getLong", Object.class, cls2);
|
|
cls.getMethod("putLong", Object.class, cls2, cls2);
|
|
cls.getMethod("getObject", Object.class, cls2);
|
|
cls.getMethod("putObject", Object.class, cls2, Object.class);
|
|
if (zzix.zzbr()) {
|
|
return true;
|
|
}
|
|
cls.getMethod("getByte", Object.class, cls2);
|
|
cls.getMethod("putByte", Object.class, cls2, Byte.TYPE);
|
|
cls.getMethod("getBoolean", Object.class, cls2);
|
|
cls.getMethod("putBoolean", Object.class, cls2, Boolean.TYPE);
|
|
cls.getMethod("getFloat", Object.class, cls2);
|
|
cls.getMethod("putFloat", Object.class, cls2, Float.TYPE);
|
|
cls.getMethod("getDouble", Object.class, cls2);
|
|
cls.getMethod("putDouble", Object.class, cls2, Double.TYPE);
|
|
return true;
|
|
} catch (Throwable th) {
|
|
Logger logger2 = logger;
|
|
Level level = Level.WARNING;
|
|
String valueOf = String.valueOf(th);
|
|
StringBuilder sb = new StringBuilder(valueOf.length() + 71);
|
|
sb.append("platform method missing - proto runtime falling back to safer methods: ");
|
|
sb.append(valueOf);
|
|
logger2.logp(level, "com.google.protobuf.UnsafeUtil", "supportsUnsafeArrayOperations", sb.toString());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private static boolean zzfh() {
|
|
Unsafe unsafe = zzuc;
|
|
if (unsafe == null) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls = unsafe.getClass();
|
|
cls.getMethod("objectFieldOffset", Field.class);
|
|
Class<?> cls2 = Long.TYPE;
|
|
cls.getMethod("getLong", Object.class, cls2);
|
|
if (zzfi() == null) {
|
|
return false;
|
|
}
|
|
if (zzix.zzbr()) {
|
|
return true;
|
|
}
|
|
cls.getMethod("getByte", cls2);
|
|
cls.getMethod("putByte", cls2, Byte.TYPE);
|
|
cls.getMethod("getInt", cls2);
|
|
cls.getMethod("putInt", cls2, Integer.TYPE);
|
|
cls.getMethod("getLong", cls2);
|
|
cls.getMethod("putLong", cls2, cls2);
|
|
cls.getMethod("copyMemory", cls2, cls2, cls2);
|
|
cls.getMethod("copyMemory", Object.class, cls2, Object.class, cls2, cls2);
|
|
return true;
|
|
} catch (Throwable th) {
|
|
Logger logger2 = logger;
|
|
Level level = Level.WARNING;
|
|
String valueOf = String.valueOf(th);
|
|
StringBuilder sb = new StringBuilder(valueOf.length() + 71);
|
|
sb.append("platform method missing - proto runtime falling back to safer methods: ");
|
|
sb.append(valueOf);
|
|
logger2.logp(level, "com.google.protobuf.UnsafeUtil", "supportsUnsafeByteBufferOperations", sb.toString());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private static boolean zzk(Class<?> cls) {
|
|
if (!zzix.zzbr()) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls2 = zzni;
|
|
Class<?> cls3 = Boolean.TYPE;
|
|
cls2.getMethod("peekLong", cls, cls3);
|
|
cls2.getMethod("pokeLong", cls, Long.TYPE, cls3);
|
|
Class<?> cls4 = Integer.TYPE;
|
|
cls2.getMethod("pokeInt", cls, cls4, cls3);
|
|
cls2.getMethod("peekInt", cls, cls3);
|
|
cls2.getMethod("pokeByte", cls, Byte.TYPE);
|
|
cls2.getMethod("peekByte", cls);
|
|
cls2.getMethod("pokeByteArray", cls, byte[].class, cls4, cls4);
|
|
cls2.getMethod("peekByteArray", cls, byte[].class, cls4, cls4);
|
|
return true;
|
|
} catch (Throwable unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private static Field zzfi() {
|
|
Field zzb2;
|
|
if (zzix.zzbr() && (zzb2 = zzb(Buffer.class, "effectiveDirectAddress")) != null) {
|
|
return zzb2;
|
|
}
|
|
Field zzb3 = zzb(Buffer.class, IntegrityManager.INTEGRITY_TYPE_ADDRESS);
|
|
if (zzb3 == null || zzb3.getType() != Long.TYPE) {
|
|
return null;
|
|
}
|
|
return zzb3;
|
|
}
|
|
|
|
private static Field zzb(Class<?> cls, String str) {
|
|
try {
|
|
return cls.getDeclaredField(str);
|
|
} catch (Throwable unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static byte zzp(Object obj, long j) {
|
|
return (byte) (zzj(obj, (-4) & j) >>> ((int) (((~j) & 3) << 3)));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static byte zzq(Object obj, long j) {
|
|
return (byte) (zzj(obj, (-4) & j) >>> ((int) ((j & 3) << 3)));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void zza(Object obj, long j, byte b) {
|
|
long j2 = (-4) & j;
|
|
int zzj = zzj(obj, j2);
|
|
int i = ((~((int) j)) & 3) << 3;
|
|
zza(obj, j2, ((255 & b) << i) | (zzj & (~(255 << i))));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void zzb(Object obj, long j, byte b) {
|
|
long j2 = (-4) & j;
|
|
int i = (((int) j) & 3) << 3;
|
|
zza(obj, j2, ((255 & b) << i) | (zzj(obj, j2) & (~(255 << i))));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static boolean zzr(Object obj, long j) {
|
|
return zzp(obj, j) != 0;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static boolean zzs(Object obj, long j) {
|
|
return zzq(obj, j) != 0;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void zzb(Object obj, long j, boolean z) {
|
|
zza(obj, j, z ? (byte) 1 : (byte) 0);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void zzc(Object obj, long j, boolean z) {
|
|
zzb(obj, j, z ? (byte) 1 : (byte) 0);
|
|
}
|
|
|
|
static {
|
|
Unsafe zzff = zzff();
|
|
zzuc = zzff;
|
|
zzni = zzix.zzbs();
|
|
boolean zzk = zzk(Long.TYPE);
|
|
zzvy = zzk;
|
|
boolean zzk2 = zzk(Integer.TYPE);
|
|
zzvz = zzk2;
|
|
zzd zzdVar = null;
|
|
if (zzff != null) {
|
|
if (!zzix.zzbr()) {
|
|
zzdVar = new zzc(zzff);
|
|
} else if (zzk) {
|
|
zzdVar = new zzb(zzff);
|
|
} else if (zzk2) {
|
|
zzdVar = new zza(zzff);
|
|
}
|
|
}
|
|
zzwa = zzdVar;
|
|
zzwb = zzfh();
|
|
zzog = zzfg();
|
|
long zzi = zzi(byte[].class);
|
|
zzwc = zzi;
|
|
zzwd = zzi(boolean[].class);
|
|
zzwe = zzj(boolean[].class);
|
|
zzwf = zzi(int[].class);
|
|
zzwg = zzj(int[].class);
|
|
zzwh = zzi(long[].class);
|
|
zzwi = zzj(long[].class);
|
|
zzwj = zzi(float[].class);
|
|
zzwk = zzj(float[].class);
|
|
zzwl = zzi(double[].class);
|
|
zzwm = zzj(double[].class);
|
|
zzwn = zzi(Object[].class);
|
|
zzwo = zzj(Object[].class);
|
|
Field zzfi = zzfi();
|
|
zzwp = (zzfi == null || zzdVar == null) ? -1L : zzdVar.zzws.objectFieldOffset(zzfi);
|
|
zzwq = (int) (zzi & 7);
|
|
zzwr = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN;
|
|
}
|
|
}
|