a.smali
.class public final Lcom/getkeepsafe/relinker/a;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/getkeepsafe/relinker/c$a;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/getkeepsafe/relinker/a$a;
}
.end annotation
# direct methods
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public final a(Ljava/io/Closeable;)V
.registers 2
if-eqz p1, :cond_5
:try_start_2
invoke-interface {p1}, Ljava/io/Closeable;->close()V
:try_end_5
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_5} :catch_5
:catch_5
:cond_5
return-void
.end method
.method public final b(Landroid/content/Context;[Ljava/lang/String;Ljava/lang/String;Lcom/getkeepsafe/relinker/e;)Lcom/getkeepsafe/relinker/a$a;
.registers 21
move-object/from16 v0, p2
.line 1
invoke-virtual/range {p0 .. p1}, Lcom/getkeepsafe/relinker/a;->d(Landroid/content/Context;)[Ljava/lang/String;
move-result-object v1
array-length v2, v1
const/4 v3, 0x0
const/4 v4, 0x0
:goto_9
const/4 v5, 0x0
if-ge v4, v2, :cond_7b
aget-object v6, v1, v4
const/4 v7, 0x0
:goto_f
add-int/lit8 v8, v7, 0x1
const/4 v9, 0x5
const/4 v10, 0x1
if-ge v7, v9, :cond_23
.line 2
:try_start_15
new-instance v7, Ljava/util/zip/ZipFile;
new-instance v11, Ljava/io/File;
invoke-direct {v11, v6}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-direct {v7, v11, v10}, Ljava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V
:try_end_1f
.catch Ljava/io/IOException; {:try_start_15 .. :try_end_1f} :catch_21
move-object v5, v7
goto :goto_23
:catch_21
move v7, v8
goto :goto_f
:cond_23
:goto_23
if-nez v5, :cond_2a
move-object/from16 v14, p3
move-object/from16 v15, p4
goto :goto_77
:cond_2a
const/4 v7, 0x0
:goto_2b
add-int/lit8 v8, v7, 0x1
if-ge v7, v9, :cond_70
.line 3
array-length v7, v0
const/4 v11, 0x0
:goto_31
if-ge v11, v7, :cond_69
aget-object v12, v0, v11
const-string v13, "lib"
.line 4
invoke-static {v13}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v13
.line 5
sget-char v14, Ljava/io/File;->separatorChar:C
invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v13, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-char v12, Ljava/io/File;->separatorChar:C
move-object/from16 v14, p3
.line 6
invoke-static {v13, v12, v14}, Landroidx/concurrent/futures/a;->g(Ljava/lang/StringBuilder;CLjava/lang/String;)Ljava/lang/String;
move-result-object v12
const/4 v13, 0x2
new-array v13, v13, [Ljava/lang/Object;
.line 7
aput-object v12, v13, v3
aput-object v6, v13, v10
const-string v3, "Looking for %s in APK %s..."
move-object/from16 v15, p4
.line 8
invoke-virtual {v15, v3, v13}, Lcom/getkeepsafe/relinker/e;->d(Ljava/lang/String;[Ljava/lang/Object;)V
.line 9
invoke-virtual {v5, v12}, Ljava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
move-result-object v3
if-eqz v3, :cond_65
.line 10
new-instance v0, Lcom/getkeepsafe/relinker/a$a;
invoke-direct {v0, v5, v3}, Lcom/getkeepsafe/relinker/a$a;-><init>(Ljava/util/zip/ZipFile;Ljava/util/zip/ZipEntry;)V
return-object v0
:cond_65
add-int/lit8 v11, v11, 0x1
const/4 v3, 0x0
goto :goto_31
:cond_69
move-object/from16 v14, p3
move-object/from16 v15, p4
const/4 v3, 0x0
move v7, v8
goto :goto_2b
:cond_70
move-object/from16 v14, p3
move-object/from16 v15, p4
.line 11
:try_start_74
invoke-virtual {v5}, Ljava/util/zip/ZipFile;->close()V
:try_end_77
.catch Ljava/io/IOException; {:try_start_74 .. :try_end_77} :catch_77
:catch_77
:goto_77
add-int/lit8 v4, v4, 0x1
const/4 v3, 0x0
goto :goto_9
:cond_7b
return-object v5
.end method
.method public final c(Landroid/content/Context;Ljava/lang/String;)[Ljava/lang/String;
.registers 10
const-string v0, "lib"
.line 1
invoke-static {v0}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
.line 2
sget-char v1, Ljava/io/File;->separatorChar:C
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
const-string v1, "([^\\"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-char v1, Ljava/io/File;->separatorChar:C
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
const-string v1, "]*)"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-char v1, Ljava/io/File;->separatorChar:C
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
.line 3
invoke-static {p2}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object p2
.line 4
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 5
invoke-virtual {p0, p1}, Lcom/getkeepsafe/relinker/a;->d(Landroid/content/Context;)[Ljava/lang/String;
move-result-object p1
array-length v1, p1
const/4 v2, 0x0
:goto_35
if-ge v2, v1, :cond_6d
aget-object v3, p1, v2
.line 6
:try_start_39
new-instance v4, Ljava/util/zip/ZipFile;
new-instance v5, Ljava/io/File;
invoke-direct {v5, v3}, Ljava/io/File;-><init>(Ljava/lang/String;)V
const/4 v3, 0x1
invoke-direct {v4, v5, v3}, Ljava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V
:try_end_44
.catch Ljava/io/IOException; {:try_start_39 .. :try_end_44} :catch_6a
.line 7
invoke-virtual {v4}, Ljava/util/zip/ZipFile;->entries()Ljava/util/Enumeration;
move-result-object v4
.line 8
:cond_48
:goto_48
invoke-interface {v4}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v5
if-eqz v5, :cond_6a
.line 9
invoke-interface {v4}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/util/zip/ZipEntry;
.line 10
invoke-virtual {v5}, Ljava/util/zip/ZipEntry;->getName()Ljava/lang/String;
move-result-object v5
invoke-virtual {p2, v5}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v5
.line 11
invoke-virtual {v5}, Ljava/util/regex/Matcher;->matches()Z
move-result v6
if-eqz v6, :cond_48
.line 12
invoke-virtual {v5, v3}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v5
invoke-virtual {v0, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
goto :goto_48
:catch_6a
:cond_6a
add-int/lit8 v2, v2, 0x1
goto :goto_35
.line 13
:cond_6d
invoke-virtual {v0}, Ljava/util/HashSet;->size()I
move-result p1
new-array p1, p1, [Ljava/lang/String;
.line 14
invoke-interface {v0, p1}, Ljava/util/Set;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object p1
check-cast p1, [Ljava/lang/String;
return-object p1
.end method
.method public final d(Landroid/content/Context;)[Ljava/lang/String;
.registers 6
.line 1
invoke-virtual {p1}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
move-result-object p1
.line 2
iget-object v0, p1, Landroid/content/pm/ApplicationInfo;->splitSourceDirs:[Ljava/lang/String;
const/4 v1, 0x0
const/4 v2, 0x1
if-eqz v0, :cond_1a
array-length v3, v0
if-eqz v3, :cond_1a
.line 3
array-length v3, v0
add-int/2addr v3, v2
new-array v3, v3, [Ljava/lang/String;
.line 4
iget-object p1, p1, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;
aput-object p1, v3, v1
.line 5
array-length p1, v0
invoke-static {v0, v1, v3, v2, p1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
return-object v3
:cond_1a
new-array v0, v2, [Ljava/lang/String;
.line 6
iget-object p1, p1, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;
aput-object p1, v0, v1
return-object v0
.end method