Info Call to dynamic code loading API

Description

List of all dynamic code loading API calls in the application. Loading code from untrsuted sources could allow the execution of malicious code in the context of the current application.

Recommendation

This entry is informative, no recommendations applicable.

Technical details

Method okhttp3.internal.huc.OkHttpURLConnection.defaultUserAgent() calling method java.lang.System.getProperty()


    private String defaultUserAgent()
    {
        String v0_2;
        String v0_1 = System.getProperty("http.agent");
        if (v0_1 == null) {
            v0_2 = okhttp3.internal.Version.userAgent();
        } else {
            v0_2 = okhttp3.internal.huc.OkHttpURLConnection.toHumanReadableAscii(v0_1);
        }
        return v0_2;
    }

Method io.grpc.internal.DnsNameResolver.<clinit>() calling method java.lang.System.getProperty()


    static DnsNameResolver()
    {
        io.grpc.internal.DnsNameResolver.logger = java.util.logging.Logger.getLogger(io.grpc.internal.DnsNameResolver.getName());
        io.grpc.internal.DnsNameResolver.JNDI_AVAILABLE = io.grpc.internal.DnsNameResolver.jndiAvailable();
        io.grpc.internal.DnsNameResolver.SERVICE_CONFIG_CHOICE_KEYS = java.util.Collections.unmodifiableSet(new java.util.HashSet(java.util.Arrays.asList(new String[] {"clientLanguage", "percentage", "clientHostname", "serviceConfig"}))));
        io.grpc.internal.DnsNameResolver.JNDI_PROPERTY = System.getProperty("io.grpc.internal.DnsNameResolverProvider.enable_jndi", "false");
        io.grpc.internal.DnsNameResolver.enableJndi = Boolean.parseBoolean(io.grpc.internal.DnsNameResolver.JNDI_PROPERTY);
        return;
    }

Method com.google.common.util.concurrent.AbstractFuture.<clinit>() calling method java.lang.System.getProperty()


    static AbstractFuture()
    {
        com.google.common.util.concurrent.AbstractFuture.GENERATE_CANCELLATION_CAUSES = Boolean.parseBoolean(System.getProperty("guava.concurrent.generate_cancellation_cause", "false"));
        com.google.common.util.concurrent.AbstractFuture.log = java.util.logging.Logger.getLogger(com.google.common.util.concurrent.AbstractFuture.getName());
        try {
            com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v1_2 = new com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper(0);
        } catch (com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v1) {
            try {
                com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper v8 = new com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper;
                v8(java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture$Waiter, Thread, "thread"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture$Waiter, com.google.common.util.concurrent.AbstractFuture$Waiter, "next"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, com.google.common.util.concurrent.AbstractFuture$Waiter, "waiters"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, com.google.common.util.concurrent.AbstractFuture$Listener, "listeners"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, Object, "value"));
                v1_2 = v8;
            } catch (Throwable v2_6) {
                com.google.common.util.concurrent.AbstractFuture.log.log(java.util.logging.Level.SEVERE, "UnsafeAtomicHelper is broken!", v1_2);
                com.google.common.util.concurrent.AbstractFuture.log.log(java.util.logging.Level.SEVERE, "SafeAtomicHelper is broken!", v2_6);
                v1_2 = new com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper(0);
            }
        }
        com.google.common.util.concurrent.AbstractFuture.ATOMIC_HELPER = v1_2;
        com.google.common.util.concurrent.AbstractFuture.NULL = new Object();
        return;
    }

Method okhttp3.internal.platform.Platform.getSSLContext() calling method java.lang.System.getProperty()


    public javax.net.ssl.SSLContext getSSLContext()
    {
        if (!"1.7".equals(System.getProperty("java.specification.version"))) {
            try {
                return javax.net.ssl.SSLContext.getInstance("TLS");
            } catch (java.security.NoSuchAlgorithmException v0_3) {
                throw new IllegalStateException("No TLS provider", v0_3);
            }
        } else {
            return javax.net.ssl.SSLContext.getInstance("TLSv1.2");
        }
    }

Method okhttp3.internal.platform.Platform.isConscryptPreferred() calling method java.lang.System.getProperty()


    public static boolean isConscryptPreferred()
    {
        if (!"conscrypt".equals(System.getProperty("okhttp.platform"))) {
            return "Conscrypt".equals(java.security.Security.getProviders()[0].getName());
        } else {
            return 1;
        }
    }

Method net.minidev.json.parser.JSONParser.<clinit>() calling method java.lang.System.getProperty()


    static JSONParser()
    {
        int v0_2;
        if (System.getProperty("JSON_SMART_SIMPLE") == null) {
            v0_2 = -1;
        } else {
            v0_2 = 1984;
        }
        net.minidev.json.parser.JSONParser.DEFAULT_PERMISSIVE_MODE = v0_2;
        return;
    }

Method io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.cleanQueue() calling method java.lang.System.getProperty()


    static int cleanQueue(ref.ReferenceQueue p7)
    {
        int v1 = 0;
        while(true) {
            java.util.logging.Logger v2_2 = ((io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference) p7.poll());
            if (v2_2 == null) {
                break;
            }
            RuntimeException v3_0 = ((RuntimeException) v2_2.allocationSite.get());
            java.util.logging.Logger v2_0 = v2_2.clearInternal();
            if ((!v2_0.shutdown) || (!v2_0.channel.isTerminated())) {
                Object[] v4_4;
                v1++;
                if (!v2_0.shutdownNow) {
                    v4_4 = java.util.logging.Level.SEVERE;
                } else {
                    v4_4 = java.util.logging.Level.FINE;
                }
                if (io.grpc.internal.ManagedChannelOrphanWrapper.access$200().isLoggable(v4_4)) {
                    java.util.logging.LogRecord v6_2;
                    String v5_3 = new StringBuilder();
                    v5_3.append("*~*~*~ Channel {0} was not ");
                    if (v2_0.shutdown) {
                        v6_2 = "terminated";
                    } else {
                        v6_2 = "shutdown";
                    }
                    v5_3.append(v6_2);
                    v5_3.append(" properly!!! ~*~*~*");
                    v5_3.append(System.getProperty("line.separator"));
                    v5_3.append("    Make sure to call shutdown()/shutdownNow() and wait until awaitTermination() returns true.");
                    java.util.logging.LogRecord v6_8 = new java.util.logging.LogRecord(v4_4, v5_3.toString());
                    v6_8.setLoggerName(io.grpc.internal.ManagedChannelOrphanWrapper.access$200().getName());
                    Object[] v4_8 = new Object[1];
                    v4_8[0] = v2_0.channel.toString();
                    v6_8.setParameters(v4_8);
                    v6_8.setThrown(v3_0);
                    io.grpc.internal.ManagedChannelOrphanWrapper.access$200().log(v6_8);
                }
            }
        }
        return v1;
    }

Method io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.<clinit>() calling method java.lang.System.getProperty()


    static ManagedChannelOrphanWrapper$ManagedChannelReference()
    {
        io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.ENABLE_ALLOCATION_TRACKING = Boolean.parseBoolean(System.getProperty("io.grpc.ManagedChannel.enableAllocationTracking", "true"));
        io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.missingCallSite = io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.missingCallSite();
        return;
    }

Method io.grpc.internal.GrpcUtil.<clinit>() calling method java.lang.System.getProperty()


    static GrpcUtil()
    {
        io.grpc.internal.GrpcUtil$4 v0_11;
        io.grpc.internal.GrpcUtil.log = java.util.logging.Logger.getLogger(io.grpc.internal.GrpcUtil.getName());
        io.grpc.internal.GrpcUtil.US_ASCII = java.nio.charset.Charset.forName("US-ASCII");
        if ((System.getProperty("com.google.appengine.runtime.environment") == null) || (!"1.7".equals(System.getProperty("java.specification.version")))) {
            v0_11 = 0;
        } else {
            v0_11 = 1;
        }
        io.grpc.internal.GrpcUtil.IS_RESTRICTED_APPENGINE = v0_11;
        io.grpc.internal.GrpcUtil.TIMEOUT_KEY = io.grpc.Metadata$Key.of("grpc-timeout", new io.grpc.internal.GrpcUtil$TimeoutMarshaller());
        io.grpc.internal.GrpcUtil.MESSAGE_ENCODING_KEY = io.grpc.Metadata$Key.of("grpc-encoding", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY = io.grpc.InternalMetadata.keyOf("grpc-accept-encoding", new io.grpc.internal.GrpcUtil$AcceptEncodingMarshaller(0));
        io.grpc.internal.GrpcUtil.CONTENT_ENCODING_KEY = io.grpc.Metadata$Key.of("content-encoding", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.CONTENT_ACCEPT_ENCODING_KEY = io.grpc.InternalMetadata.keyOf("accept-encoding", new io.grpc.internal.GrpcUtil$AcceptEncodingMarshaller(0));
        io.grpc.internal.GrpcUtil.CONTENT_TYPE_KEY = io.grpc.Metadata$Key.of("content-type", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.TE_HEADER = io.grpc.Metadata$Key.of("te", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.USER_AGENT_KEY = io.grpc.Metadata$Key.of("user-agent", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_SPLITTER = com.google.common.base.Splitter.on(44).trimResults();
        io.grpc.internal.GrpcUtil.DEFAULT_KEEPALIVE_TIME_NANOS = java.util.concurrent.TimeUnit.MINUTES.toNanos(1);
        io.grpc.internal.GrpcUtil.DEFAULT_KEEPALIVE_TIMEOUT_NANOS = java.util.concurrent.TimeUnit.SECONDS.toNanos(20);
        io.grpc.internal.GrpcUtil.DEFAULT_SERVER_KEEPALIVE_TIME_NANOS = java.util.concurrent.TimeUnit.HOURS.toNanos(2);
        io.grpc.internal.GrpcUtil.DEFAULT_SERVER_KEEPALIVE_TIMEOUT_NANOS = java.util.concurrent.TimeUnit.SECONDS.toNanos(20);
        io.grpc.internal.GrpcUtil.DEFAULT_PROXY_DETECTOR = new io.grpc.internal.ProxyDetectorImpl();
        io.grpc.internal.GrpcUtil.NOOP_PROXY_DETECTOR = new io.grpc.internal.GrpcUtil$1();
        io.grpc.internal.GrpcUtil.SHARED_CHANNEL_EXECUTOR = new io.grpc.internal.GrpcUtil$2();
        io.grpc.internal.GrpcUtil.TIMER_SERVICE = new io.grpc.internal.GrpcUtil$3();
        io.grpc.internal.GrpcUtil.STOPWATCH_SUPPLIER = new io.grpc.internal.GrpcUtil$4();
        return;
    }

Method com.squareup.okhttp.ConnectionPool.<clinit>() calling method java.lang.System.getProperty()


    static ConnectionPool()
    {
        long v3;
        com.squareup.okhttp.ConnectionPool v0_3 = System.getProperty("http.keepAlive");
        int v1_4 = System.getProperty("http.keepAliveDuration");
        String v2_1 = System.getProperty("http.maxConnections");
        if (v1_4 == 0) {
            v3 = 300000;
        } else {
            v3 = Long.parseLong(v1_4);
        }
        if ((v0_3 == null) || (Boolean.parseBoolean(v0_3))) {
            if (v2_1 == null) {
                com.squareup.okhttp.ConnectionPool.systemDefault = new com.squareup.okhttp.ConnectionPool(5, v3);
            } else {
                com.squareup.okhttp.ConnectionPool.systemDefault = new com.squareup.okhttp.ConnectionPool(Integer.parseInt(v2_1), v3);
            }
        } else {
            com.squareup.okhttp.ConnectionPool.systemDefault = new com.squareup.okhttp.ConnectionPool(0, v3);
        }
        return;
    }

Method com.microsoft.codepush.react.CodePushUpdateUtils.<clinit>() calling method java.lang.System.getProperty()


    static CodePushUpdateUtils()
    {
        com.microsoft.codepush.react.CodePushUpdateUtils.NEW_LINE = System.getProperty("line.separator");
        return;
    }

Method com.google.zxing.ReaderException.<clinit>() calling method java.lang.System.getProperty()


    static ReaderException()
    {
        StackTraceElement[] v0_2;
        if (System.getProperty("surefire.test.class.path") == null) {
            v0_2 = 0;
        } else {
            v0_2 = 1;
        }
        com.google.zxing.ReaderException.isStackTrace = v0_2;
        StackTraceElement[] v0_3 = new StackTraceElement[0];
        com.google.zxing.ReaderException.NO_TRACE = v0_3;
        return;
    }

Method com.google.common.util.concurrent.MoreExecutors.isAppEngine() calling method java.lang.System.getProperty()


    private static boolean isAppEngine()
    {
        int v1 = 0;
        if (System.getProperty("com.google.appengine.runtime.environment") != null) {
            try {
                Object[] v3_1 = new Class[0];
                Object[] v3_0 = new Object[0];
            } catch (ClassNotFoundException) {
                return 0;
            } catch (reflect.InvocationTargetException) {
                return 0;
            } catch (IllegalAccessException) {
                return 0;
            } catch (NoSuchMethodException) {
                return 0;
            }
            if (Class.forName("com.google.apphosting.api.ApiProxy").getMethod("getCurrentEnvironment", v3_1).invoke(0, v3_0) != null) {
                v1 = 1;
            }
            return v1;
        } else {
            return 0;
        }
    }

Method com.google.common.io.Files.createTempDir() calling method java.lang.System.getProperty()


    public static java.io.File createTempDir()
    {
        IllegalStateException v0_3 = new java.io.File(System.getProperty("java.io.tmpdir"));
        String v1_7 = new StringBuilder();
        v1_7.append(System.currentTimeMillis());
        v1_7.append("-");
        String v1_1 = v1_7.toString();
        int v2_1 = 0;
        while (v2_1 < 10000) {
            boolean v4_1 = new StringBuilder();
            v4_1.append(v1_1);
            v4_1.append(v2_1);
            String v3_4 = new java.io.File(v0_3, v4_1.toString());
            if (!v3_4.mkdir()) {
                v2_1++;
            } else {
                return v3_4;
            }
        }
        int v2_3 = new StringBuilder();
        v2_3.append("Failed to create directory within 10000 attempts (tried ");
        v2_3.append(v1_1);
        v2_3.append("0 to ");
        v2_3.append(v1_1);
        v2_3.append(9999);
        v2_3.append(41);
        throw new IllegalStateException(v2_3.toString());
    }

Method com.google.common.io.CharSink.writeLines() calling method java.lang.System.getProperty()


    public void writeLines(Iterable p2)
    {
        this.writeLines(p2, System.getProperty("line.separator"));
        return;
    }

Method com.google.common.hash.LittleEndianByteArray.<clinit>() calling method java.lang.System.getProperty()


    static LittleEndianByteArray()
    {
        com.google.common.hash.LittleEndianByteArray$UnsafeByteArray v0 = com.google.common.hash.LittleEndianByteArray$JavaLittleEndianBytes.INSTANCE;
        try {
            boolean v1_4 = System.getProperty("os.arch");
        } catch (Throwable) {
            com.google.common.hash.LittleEndianByteArray.byteArray = v0;
            return;
        }
        if ((!"amd64".equals(v1_4)) && (!"aarch64".equals(v1_4))) {
            com.google.common.hash.LittleEndianByteArray.byteArray = v0;
            return;
        } else {
            if (!java.nio.ByteOrder.nativeOrder().equals(java.nio.ByteOrder.LITTLE_ENDIAN)) {
                v0 = com.google.common.hash.LittleEndianByteArray$UnsafeByteArray.UNSAFE_BIG_ENDIAN;
                com.google.common.hash.LittleEndianByteArray.byteArray = v0;
                return;
            } else {
                v0 = com.google.common.hash.LittleEndianByteArray$UnsafeByteArray.UNSAFE_LITTLE_ENDIAN;
                com.google.common.hash.LittleEndianByteArray.byteArray = v0;
                return;
            }
        }
    }

Method com.facebook.react.modules.systeminfo.AndroidInfoModule.getConstants() calling method java.lang.System.getProperty()


    public java.util.Map getConstants()
    {
        java.util.HashMap v0_1 = new java.util.HashMap();
        v0_1.put("Version", Integer.valueOf(android.os.Build$VERSION.SDK_INT));
        v0_1.put("Release", android.os.Build$VERSION.RELEASE);
        v0_1.put("Serial", android.os.Build.SERIAL);
        v0_1.put("Fingerprint", android.os.Build.FINGERPRINT);
        v0_1.put("Model", android.os.Build.MODEL);
        v0_1.put("ServerHost", com.facebook.react.modules.systeminfo.AndroidInfoHelpers.getServerHost());
        v0_1.put("isTesting", Boolean.valueOf("true".equals(System.getProperty("IS_TESTING"))));
        v0_1.put("reactNativeVersion", com.facebook.react.modules.systeminfo.ReactNativeVersion.VERSION);
        v0_1.put("uiMode", this.uiMode());
        v0_1.put("androidID", android.provider.Settings$Secure.getString(this.getReactApplicationContext().getContentResolver(), "android_id"));
        return v0_1;
    }

Method com.google.common.base.StandardSystemProperty.value() calling method java.lang.System.getProperty()


    public String value()
    {
        return System.getProperty(this.key);
    }

Method com.facebook.soloader.SoLoader.loadLibrary() calling method java.lang.System.getProperty()


    public static boolean loadLibrary(String p3, int p4)
    {
        com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().lock();
        try {
            if (com.facebook.soloader.SoLoader.sSoSources == null) {
                if (!"http://www.android.com/".equals(System.getProperty("java.vendor.url"))) {
                    int v0_4 = (com.facebook.soloader.SoLoader.sLoadedLibraries.contains(p3) ^ 1);
                    if (v0_4 != 0) {
                        if (com.facebook.soloader.SoLoader.sSystemLoadLibraryWrapper == null) {
                            System.loadLibrary(p3);
                        } else {
                            com.facebook.soloader.SoLoader.sSystemLoadLibraryWrapper.loadLibrary(p3);
                        }
                    }
                    com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().unlock();
                    return v0_4;
                } else {
                    com.facebook.soloader.SoLoader.assertInitialized();
                }
            }
        } catch (java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock v3_4) {
            com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().unlock();
            throw v3_4;
        }
        com.facebook.soloader.SystemLoadLibraryWrapper v1_2;
        com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().unlock();
        int v0_9 = com.facebook.soloader.MergedSoMapping.mapLibName(p3);
        if (v0_9 == 0) {
            v1_2 = p3;
        } else {
            v1_2 = v0_9;
        }
        return com.facebook.soloader.SoLoader.loadLibraryBySoName(System.mapLibraryName(v1_2), p3, v0_9, p4, 0);
    }

Method bolts.BoltsExecutors.isAndroidRuntime() calling method java.lang.System.getProperty()


    private static boolean isAndroidRuntime()
    {
        boolean v0_2 = System.getProperty("java.runtime.name");
        if (v0_2) {
            return v0_2.toLowerCase(java.util.Locale.US).contains("android");
        } else {
            return 0;
        }
    }

Method android.support.multidex.MultiDex.doInstallation() calling method java.lang.System.getProperty()


    private static void doInstallation(android.content.Context p5, java.io.File p6, java.io.File p7, String p8, String p9)
    {
        try {
            if (!android.support.multidex.MultiDex.installedApk.contains(p6)) {
                android.support.multidex.MultiDex.installedApk.add(p6);
                if (android.os.Build$VERSION.SDK_INT > 20) {
                    String v3_1 = new StringBuilder();
                    v3_1.append("MultiDex is not guaranteed to work in SDK version ");
                    v3_1.append(android.os.Build$VERSION.SDK_INT);
                    v3_1.append(": SDK version higher than ");
                    v3_1.append(20);
                    v3_1.append(" should be backed by ");
                    v3_1.append("runtime with built-in multidex capabilty but it\'s not the ");
                    v3_1.append("case here: java.vm.version=\"");
                    v3_1.append(System.getProperty("java.vm.version"));
                    v3_1.append("\"");
                    android.util.Log.w("MultiDex", v3_1.toString());
                }
                ClassLoader v1_3 = p5.getClassLoader();
                if (v1_3 != null) {
                    try {
                        android.support.multidex.MultiDex.clearOldDexDir(p5);
                    } catch (Throwable v2_7) {
                        android.util.Log.w("MultiDex", "Something went wrong when trying to clear old MultiDex extraction, continuing without cleaning.", v2_7);
                    }
                    java.io.File v7_2 = android.support.multidex.MultiDex.getDexDir(p5, p7, p8);
                    android.support.multidex.MultiDex.installSecondaryDexes(v1_3, v7_2, android.support.multidex.MultiDexExtractor.load(p5, p6, v7_2, p9, 0));
                    return;
                } else {
                    android.util.Log.e("MultiDex", "Context class loader is null. Must be running in test mode. Skip patching.");
                    return;
                }
            } else {
                return;
            }
        } catch (java.util.List v5_4) {
            throw v5_4;
        }
    }

Method android.support.multidex.MultiDex.<clinit>() calling method java.lang.System.getProperty()


    static MultiDex()
    {
        android.support.multidex.MultiDex.installedApk = new java.util.HashSet();
        android.support.multidex.MultiDex.IS_VM_MULTIDEX_CAPABLE = android.support.multidex.MultiDex.isVMMultidexCapable(System.getProperty("java.vm.version"));
        return;
    }

Method io.grpc.internal.ProxyDetectorImpl.<init>() calling method java.lang.System.getenv()


    public ProxyDetectorImpl()
    {
        this(io.grpc.internal.ProxyDetectorImpl.DEFAULT_PROXY_SELECTOR, io.grpc.internal.ProxyDetectorImpl.DEFAULT_AUTHENTICATOR, System.getenv("GRPC_PROXY_EXP"));
        return;
    }

Method com.facebook.soloader.SoLoader.initSoSources() calling method java.lang.System.getenv()


    private static void initSoSources(android.content.Context p6, int p7, com.facebook.soloader.SoFileLoader p8)
    {
        com.facebook.soloader.SoLoader.sSoSourcesLock.writeLock().lock();
        try {
            if (com.facebook.soloader.SoLoader.sSoSources == null) {
                android.util.Log.d("SoLoader", "init start");
                com.facebook.soloader.SoLoader.sFlags = p7;
                String v8_3 = new java.util.ArrayList();
                int v0_1 = System.getenv("LD_LIBRARY_PATH");
                if (v0_1 == 0) {
                    v0_1 = "/vendor/lib:/system/lib";
                }
                int v0_2 = v0_1.split(":");
                String v2_3 = 0;
                while (v2_3 < v0_2.length) {
                    com.facebook.soloader.DirectorySoSource v4_1 = new StringBuilder();
                    v4_1.append("adding system library source: ");
                    v4_1.append(v0_2[v2_3]);
                    android.util.Log.d("SoLoader", v4_1.toString());
                    v8_3.add(new com.facebook.soloader.DirectorySoSource(new java.io.File(v0_2[v2_3]), 2));
                    v2_3++;
                }
                if (p6 != null) {
                    if ((p7 & 1) == 0) {
                        int v7_12;
                        int v7_9 = p6.getApplicationInfo();
                        if (((v7_9.flags & 1) == 0) || ((v7_9.flags & 128) != 0)) {
                            v7_12 = 0;
                        } else {
                            v7_12 = 1;
                        }
                        int v7_17;
                        if (v7_12 == 0) {
                            int v7_14;
                            if (android.os.Build$VERSION.SDK_INT > 17) {
                                v7_14 = 0;
                            } else {
                                v7_14 = 1;
                            }
                            com.facebook.soloader.SoLoader.sApplicationSoSource = new com.facebook.soloader.ApplicationSoSource(p6, v7_14);
                            String v2_10 = new StringBuilder();
                            v2_10.append("adding application source: ");
                            v2_10.append(com.facebook.soloader.SoLoader.sApplicationSoSource.toString());
                            android.util.Log.d("SoLoader", v2_10.toString());
                            v8_3.add(0, com.facebook.soloader.SoLoader.sApplicationSoSource);
                            v7_17 = 1;
                        } else {
                            v7_17 = 0;
                        }
                        com.facebook.soloader.SoLoader.sBackupSoSource = new com.facebook.soloader.ApkSoSource(p6, "lib-main", v7_17);
                        int v7_19 = new StringBuilder();
                        v7_19.append("adding backup  source: ");
                        v7_19.append(com.facebook.soloader.SoLoader.sBackupSoSource.toString());
                        android.util.Log.d("SoLoader", v7_19.toString());
                        v8_3.add(0, com.facebook.soloader.SoLoader.sBackupSoSource);
                    } else {
                        com.facebook.soloader.SoLoader.sBackupSoSource = 0;
                        android.util.Log.d("SoLoader", "adding exo package source: lib-main");
                        v8_3.add(0, new com.facebook.soloader.ExoSoSource(p6, "lib-main"));
                    }
                }
                com.facebook.soloader.UnpackingSoSource v6_11 = new com.facebook.soloader.SoSource[v8_3.size()];
                com.facebook.soloader.UnpackingSoSource v6_13 = ((com.facebook.soloader.SoSource[]) v8_3.toArray(v6_11));
                int v7_25 = com.facebook.soloader.SoLoader.makePrepareFlags();
                String v8_9 = v6_13.length;
                while(true) {
                    int v1_2 = (v8_9 - 1);
                    if (v8_9 <= null) {
                        break;
                    }
                    String v2_1 = new StringBuilder();
                    v2_1.append("Preparing SO source: ");
                    v2_1.append(v6_13[v1_2]);
                    android.util.Log.d("SoLoader", v2_1.toString());
                    v6_13[v1_2].prepare(v7_25);
                    v8_9 = v1_2;
                }
                com.facebook.soloader.SoLoader.sSoSources = v6_13;
                com.facebook.soloader.SoLoader.sSoSourcesVersion = (com.facebook.soloader.SoLoader.sSoSourcesVersion + 1);
                int v7_2 = new StringBuilder();
                v7_2.append("init finish: ");
                v7_2.append(com.facebook.soloader.SoLoader.sSoSources.length);
                v7_2.append(" SO sources prepared");
                android.util.Log.d("SoLoader", v7_2.toString());
            }
        } catch (com.facebook.soloader.UnpackingSoSource v6_7) {
            android.util.Log.d("SoLoader", "init exiting");
            com.facebook.soloader.SoLoader.sSoSourcesLock.writeLock().unlock();
            throw v6_7;
        }
        android.util.Log.d("SoLoader", "init exiting");
        com.facebook.soloader.SoLoader.sSoSourcesLock.writeLock().unlock();
        return;
    }

Method com.facebook.soloader.SoLoader$1.load() calling method java.lang.System.load()


    public void load(String p10, int p11)
    {
        if (!this.val$hasNativeLoadMethod) {
            System.load(p10);
        } else {
            String v11_3;
            if ((p11 & 4) != 4) {
                v11_3 = 0;
            } else {
                v11_3 = 1;
            }
            String v11_1;
            if (v11_3 == null) {
                v11_1 = this.val$localLdLibraryPathNoZips;
            } else {
                v11_1 = this.val$localLdLibraryPath;
            }
            String v0_1 = 0;
            try {
                try {
                    String v1_1;
                    if (android.os.Build$VERSION.SDK_INT > 27) {
                        reflect.Method v4_1 = this.val$nativeLoadRuntimeMethod;
                        Runtime v5_1 = this.val$runtime;
                        Object[] v6_1 = new Object[2];
                        v6_1[0] = p10;
                        v6_1[1] = com.facebook.soloader.SoLoader.getClassLoader();
                        v1_1 = ((String) v4_1.invoke(v5_1, v6_1));
                        try {
                            if (v1_1 != null) {
                                throw new UnsatisfiedLinkError(v1_1);
                            } else {
                                if (v1_1 == null) {
                                    return;
                                } else {
                                    StringBuilder v2_12 = new StringBuilder();
                                    v2_12.append("Error when loading lib: ");
                                    v2_12.append(v1_1);
                                    v2_12.append(" lib hash: ");
                                    v2_12.append(this.getLibHash(p10));
                                    v2_12.append(" search path is ");
                                    v2_12.append(v11_1);
                                    android.util.Log.e("SoLoader", v2_12.toString());
                                    return;
                                }
                            }
                        } catch (String v0_5) {
                            String v1_4 = v0_5;
                            v0_1 = v1_1;
                        }
                    } else {
                        reflect.Method v4_2 = this.val$nativeLoadRuntimeMethod;
                        Runtime v5_2 = this.val$runtime;
                        Object[] v7_1 = new Object[3];
                        v7_1[0] = p10;
                        v7_1[1] = com.facebook.soloader.SoLoader.getClassLoader();
                        v7_1[2] = v11_1;
                        v1_1 = ((String) v4_2.invoke(v5_2, v7_1));
                    }
                } catch (String v1_4) {
                }
                throw v1_4;
            } catch (String v1_6) {
                if (v0_1 != null) {
                    StringBuilder v2_10 = new StringBuilder();
                    v2_10.append("Error when loading lib: ");
                    v2_10.append(v0_1);
                    v2_10.append(" lib hash: ");
                    v2_10.append(this.getLibHash(p10));
                    v2_10.append(" search path is ");
                    v2_10.append(v11_1);
                    android.util.Log.e("SoLoader", v2_10.toString());
                }
                throw v1_6;
            } catch (String v1_5) {
                StringBuilder v2_5 = new StringBuilder();
                v2_5.append("Error: Cannot load ");
                v2_5.append(p10);
                v0_1 = v2_5.toString();
                throw new RuntimeException(v0_1, v1_5);
            } catch (String v1_5) {
            } catch (String v1_5) {
            }
        }
        return;
    }

Method com.facebook.soloader.SoLoader.loadLibrary() calling method java.lang.System.loadLibrary()


    public static boolean loadLibrary(String p3, int p4)
    {
        com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().lock();
        try {
            if (com.facebook.soloader.SoLoader.sSoSources == null) {
                if (!"http://www.android.com/".equals(System.getProperty("java.vendor.url"))) {
                    int v0_4 = (com.facebook.soloader.SoLoader.sLoadedLibraries.contains(p3) ^ 1);
                    if (v0_4 != 0) {
                        if (com.facebook.soloader.SoLoader.sSystemLoadLibraryWrapper == null) {
                            System.loadLibrary(p3);
                        } else {
                            com.facebook.soloader.SoLoader.sSystemLoadLibraryWrapper.loadLibrary(p3);
                        }
                    }
                    com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().unlock();
                    return v0_4;
                } else {
                    com.facebook.soloader.SoLoader.assertInitialized();
                }
            }
        } catch (java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock v3_4) {
            com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().unlock();
            throw v3_4;
        }
        com.facebook.soloader.SystemLoadLibraryWrapper v1_2;
        com.facebook.soloader.SoLoader.sSoSourcesLock.readLock().unlock();
        int v0_9 = com.facebook.soloader.MergedSoMapping.mapLibName(p3);
        if (v0_9 == 0) {
            v1_2 = p3;
        } else {
            v1_2 = v0_9;
        }
        return com.facebook.soloader.SoLoader.loadLibraryBySoName(System.mapLibraryName(v1_2), p3, v0_9, p4, 0);
    }

Method android.support.multidex.MultiDex$V4.install() calling method dalvik.system.DexFile.loadDex()


    private static void install(ClassLoader p10, java.util.List p11)
    {
        dalvik.system.DexFile[] v0_0 = p11.size();
        reflect.Field v1_1 = android.support.multidex.MultiDex.access$300(p10, "path");
        StringBuilder v2_1 = new StringBuilder(((String) v1_1.get(p10)));
        String[] v3_0 = new String[v0_0];
        java.io.File[] v4 = new java.io.File[v0_0];
        java.util.zip.ZipFile[] v5 = new java.util.zip.ZipFile[v0_0];
        dalvik.system.DexFile[] v0_1 = new dalvik.system.DexFile[v0_0];
        String v11_1 = p11.listIterator();
        while (v11_1.hasNext()) {
            dalvik.system.DexFile v6_2 = ((java.io.File) v11_1.next());
            String v7 = v6_2.getAbsolutePath();
            v2_1.append(58);
            v2_1.append(v7);
            int v8_1 = v11_1.previousIndex();
            v3_0[v8_1] = v7;
            v4[v8_1] = v6_2;
            v5[v8_1] = new java.util.zip.ZipFile(v6_2);
            dalvik.system.DexFile v6_4 = new StringBuilder();
            v6_4.append(v7);
            v6_4.append(".dex");
            v0_1[v8_1] = dalvik.system.DexFile.loadDex(v7, v6_4.toString(), 0);
        }
        v1_1.set(p10, v2_1.toString());
        android.support.multidex.MultiDex.access$400(p10, "mPaths", v3_0);
        android.support.multidex.MultiDex.access$400(p10, "mFiles", v4);
        android.support.multidex.MultiDex.access$400(p10, "mZips", v5);
        android.support.multidex.MultiDex.access$400(p10, "mDexs", v0_1);
        return;
    }

Method com.google.android.gms.dynamite.zzh.<init>() calling method dalvik.system.PathClassLoader.<init>()


    zzh(String p1, ClassLoader p2)
    {
        super(p1, p2);
        return;
    }