ExifUtils.smali

.class public Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;
.super Ljava/lang/Object;
.source "ExifUtils.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$ExifException;,
        Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;,
        Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;
    }
.end annotation


# static fields
.field private static final a:[B

.field private static final b:[B


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 23
    const/4 v0, 0x2

    new-array v0, v0, [B

    fill-array-data v0, :array_12

    sput-object v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a:[B

    .line 26
    const/4 v0, 0x4

    new-array v0, v0, [B

    fill-array-data v0, :array_18

    sput-object v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->b:[B

    return-void

    .line 23
    nop

    :array_12
    .array-data 1
        -0x1t
        -0x28t
    .end array-data

    .line 26
    nop

    :array_18
    .array-data 1
        0x45t
        0x78t
        0x69t
        0x66t
    .end array-data
.end method

.method private static a(II)I
    .registers 4

    .prologue
    .line 34
    and-int/lit16 v0, p0, 0xff

    .line 35
    and-int/lit16 v1, p1, 0xff

    .line 36
    shl-int/lit8 v0, v0, 0x8

    or-int/2addr v0, v1

    return v0
.end method

.method private static a(Ljava/lang/String;)Ljava/util/List;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            ")",
            "Ljava/util/List",
            "<",
            "Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;",
            ">;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$ExifException;
        }
    .end annotation

    .prologue
    .line 117
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    .line 118
    new-instance v1, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$1;

    invoke-direct {v1, v0}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$1;-><init>(Ljava/util/List;)V

    invoke-static {p0, v1}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/lang/String;Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;)V

    .line 133
    return-object v0
.end method

.method private static a(Ljava/lang/String;Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;)V
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$ExifException;
        }
    .end annotation

    .prologue
    .line 84
    const/4 v2, 0x0

    .line 86
    :try_start_1
    new-instance v1, Ljava/io/FileInputStream;

    invoke-direct {v1, p0}, Ljava/io/FileInputStream;-><init>(Ljava/lang/String;)V
    :try_end_6
    .catch Ljava/io/IOException; {:try_start_1 .. :try_end_6} :catch_42
    .catchall {:try_start_1 .. :try_end_6} :catchall_3a

    .line 87
    :try_start_6
    invoke-static {v1}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/io/FileInputStream;)Z

    move-result v0

    if-nez v0, :cond_1c

    .line 91
    new-instance v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$ExifException;

    const-string v2, "Not a Valid JPEG File."

    invoke-direct {v0, v2}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$ExifException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_14
    .catch Ljava/io/IOException; {:try_start_6 .. :try_end_14} :catch_14
    .catchall {:try_start_6 .. :try_end_14} :catchall_40

    .line 101
    :catch_14
    move-exception v0

    .line 102
    :goto_15
    :try_start_15
    invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
    :try_end_18
    .catchall {:try_start_15 .. :try_end_18} :catchall_40

    .line 107
    invoke-static {v1}, Ldxoptimizer/cdp;->a(Ljava/io/Closeable;)V

    .line 109
    :goto_1b
    return-void

    .line 93
    :cond_1c
    const/4 v0, 0x2

    :try_start_1d
    new-array v0, v0, [B

    .line 95
    :cond_1f
    invoke-virtual {v1, v0}, Ljava/io/FileInputStream;->read([B)I

    move-result v2

    const/4 v3, -0x1

    if-eq v2, v3, :cond_36

    .line 96
    const/4 v2, 0x0

    aget-byte v2, v0, v2

    const/4 v3, 0x1

    aget-byte v3, v0, v3

    invoke-static {v2, v3}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(II)I

    move-result v2

    .line 97
    invoke-static {v1, v2, v0, p1}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/io/InputStream;I[BLcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;)Z
    :try_end_33
    .catch Ljava/io/IOException; {:try_start_1d .. :try_end_33} :catch_14
    .catchall {:try_start_1d .. :try_end_33} :catchall_40

    move-result v2

    if-nez v2, :cond_1f

    .line 107
    :cond_36
    invoke-static {v1}, Ldxoptimizer/cdp;->a(Ljava/io/Closeable;)V

    goto :goto_1b

    :catchall_3a
    move-exception v0

    move-object v1, v2

    :goto_3c
    invoke-static {v1}, Ldxoptimizer/cdp;->a(Ljava/io/Closeable;)V

    throw v0

    :catchall_40
    move-exception v0

    goto :goto_3c

    .line 101
    :catch_42
    move-exception v0

    move-object v1, v2

    goto :goto_15
.end method

.method static synthetic a(I)Z
    .registers 2

    .prologue
    .line 15
    invoke-static {p0}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->b(I)Z

    move-result v0

    return v0
.end method

.method private static a(Ljava/io/FileInputStream;)Z
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    .prologue
    const/4 v0, 0x0

    .line 41
    invoke-virtual {p0}, Ljava/io/FileInputStream;->read()I

    move-result v1

    .line 42
    if-gez v1, :cond_8

    .line 46
    :cond_7
    :goto_7
    return v0

    .line 45
    :cond_8
    invoke-virtual {p0}, Ljava/io/FileInputStream;->read()I

    move-result v2

    .line 46
    if-ltz v2, :cond_7

    invoke-static {v1, v2}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(II)I

    move-result v1

    const v2, 0xffd8

    if-ne v1, v2, :cond_7

    const/4 v0, 0x1

    goto :goto_7
.end method

.method private static a(Ljava/io/InputStream;I[BLcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;)Z
    .registers 8
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    .prologue
    const/4 v0, 0x0

    .line 64
    const v1, 0xffda

    if-ne p1, v1, :cond_a

    .line 65
    invoke-interface {p3, p1, p2, p0}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;->a(I[BLjava/io/InputStream;)V

    .line 76
    :goto_9
    return v0

    .line 68
    :cond_a
    const/4 v1, 0x2

    invoke-static {p0, v1}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/io/InputStream;I)[B

    move-result-object v1

    .line 69
    aget-byte v0, v1, v0

    const/4 v2, 0x1

    aget-byte v2, v1, v2

    invoke-static {v0, v2}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(II)I

    move-result v0

    .line 71
    new-instance v2, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;

    const/4 v3, 0x0

    invoke-direct {v2, v3}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;-><init>(Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$1;)V

    .line 72
    iput p1, v2, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->a:I

    .line 73
    array-length v3, p2

    invoke-static {p2, v3}, Ljava/util/Arrays;->copyOf([BI)[B

    move-result-object v3

    iput-object v3, v2, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->b:[B

    .line 74
    iput-object v1, v2, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->c:[B

    .line 75
    add-int/lit8 v0, v0, -0x2

    invoke-static {p0, v0}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/io/InputStream;I)[B

    move-result-object v0

    iput-object v0, v2, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->d:[B

    .line 76
    invoke-interface {p3, v2}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;->a(Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;)Z

    move-result v0

    goto :goto_9
.end method

.method public static a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
    .registers 9
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$ExifException;
        }
    .end annotation

    .prologue
    const/4 v2, 0x1

    const/4 v1, 0x0

    .line 200
    invoke-static {p0}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/lang/String;)Ljava/util/List;

    move-result-object v3

    .line 201
    invoke-interface {v3}, Ljava/util/List;->size()I

    move-result v0

    if-nez v0, :cond_e

    move v0, v1

    .line 243
    :goto_d
    return v0

    .line 209
    :cond_e
    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :cond_12
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_3c

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;

    .line 210
    iget-object v0, v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->d:[B

    sget-object v5, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->b:[B

    invoke-static {v0, v5}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a([B[B)Z

    move-result v0

    if-eqz v0, :cond_12

    move v0, v2

    .line 218
    :goto_29
    if-nez v0, :cond_2d

    move v0, v1

    .line 222
    goto :goto_d

    .line 225
    :cond_2d
    new-array v0, v2, [Z

    aput-boolean v1, v0, v1

    .line 226
    new-instance v2, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$2;

    invoke-direct {v2, v3, v0, p2}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$2;-><init>(Ljava/util/List;[ZLjava/lang/String;)V

    invoke-static {p1, v2}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a(Ljava/lang/String;Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$b;)V

    .line 243
    aget-boolean v0, v0, v1

    goto :goto_d

    :cond_3c
    move v0, v1

    goto :goto_29
.end method

.method static synthetic a(Ljava/lang/String;Ljava/util/List;[BLjava/io/InputStream;)Z
    .registers 5

    .prologue
    .line 15
    invoke-static {p0, p1, p2, p3}, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->b(Ljava/lang/String;Ljava/util/List;[BLjava/io/InputStream;)Z

    move-result v0

    return v0
.end method

.method private static a([B[B)Z
    .registers 6

    .prologue
    const/4 v1, 0x0

    .line 137
    if-eqz p0, :cond_7

    array-length v0, p0

    array-length v2, p1

    if-ge v0, v2, :cond_8

    .line 144
    :cond_7
    :goto_7
    return v1

    :cond_8
    move v0, v1

    .line 140
    :goto_9
    array-length v2, p1

    if-ge v0, v2, :cond_15

    .line 141
    aget-byte v2, p0, v0

    aget-byte v3, p1, v0

    if-ne v2, v3, :cond_7

    .line 140
    add-int/lit8 v0, v0, 0x1

    goto :goto_9

    .line 144
    :cond_15
    const/4 v1, 0x1

    goto :goto_7
.end method

.method private static a(Ljava/io/InputStream;I)[B
    .registers 5
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    .prologue
    .line 51
    if-gtz p1, :cond_6

    .line 52
    const/4 v0, 0x0

    new-array v0, v0, [B

    .line 59
    :cond_5
    return-object v0

    .line 55
    :cond_6
    new-array v0, p1, [B

    .line 56
    invoke-virtual {p0, v0}, Ljava/io/InputStream;->read([B)I

    move-result v1

    const/4 v2, 0x1

    if-ge v1, v2, :cond_5

    .line 57
    new-instance v0, Ljava/io/IOException;

    invoke-direct {v0}, Ljava/io/IOException;-><init>()V

    throw v0
.end method

.method private static b(I)Z
    .registers 2

    .prologue
    .line 112
    const v0, 0xffe1

    if-ne p0, v0, :cond_7

    const/4 v0, 0x1

    :goto_6
    return v0

    :cond_7
    const/4 v0, 0x0

    goto :goto_6
.end method

.method private static b(Ljava/lang/String;Ljava/util/List;[BLjava/io/InputStream;)Z
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "Ljava/util/List",
            "<",
            "Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;",
            ">;[B",
            "Ljava/io/InputStream;",
            ")Z"
        }
    .end annotation

    .prologue
    const/4 v1, 0x0

    .line 150
    const/4 v3, 0x0

    .line 157
    :try_start_2
    new-instance v2, Ljava/io/FileOutputStream;

    invoke-direct {v2, p0}, Ljava/io/FileOutputStream;-><init>(Ljava/lang/String;)V
    :try_end_7
    .catch Ljava/io/IOException; {:try_start_2 .. :try_end_7} :catch_64
    .catchall {:try_start_2 .. :try_end_7} :catchall_61

    .line 158
    :try_start_7
    sget-object v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils;->a:[B

    invoke-virtual {v2, v0}, Ljava/io/FileOutputStream;->write([B)V

    .line 159
    invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :goto_10
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_3e

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;

    .line 160
    iget-object v4, v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->b:[B

    invoke-virtual {v2, v4}, Ljava/io/FileOutputStream;->write([B)V

    .line 161
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V

    .line 162
    iget-object v4, v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->c:[B

    invoke-virtual {v2, v4}, Ljava/io/FileOutputStream;->write([B)V

    .line 163
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V

    .line 164
    iget-object v0, v0, Lcom/dianxinos/optimizer/module/space/utils/ExifUtils$a;->d:[B

    invoke-virtual {v2, v0}, Ljava/io/FileOutputStream;->write([B)V

    .line 165
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V
    :try_end_34
    .catch Ljava/io/IOException; {:try_start_7 .. :try_end_34} :catch_35
    .catchall {:try_start_7 .. :try_end_34} :catchall_54

    goto :goto_10

    .line 177
    :catch_35
    move-exception v0

    .line 178
    :goto_36
    :try_start_36
    invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
    :try_end_39
    .catchall {:try_start_36 .. :try_end_39} :catchall_54

    .line 184
    invoke-static {v2}, Ldxoptimizer/cdp;->a(Ljava/io/Closeable;)V

    move v0, v1

    .line 186
    :goto_3d
    return v0

    .line 168
    :cond_3e
    :try_start_3e
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V

    .line 169
    invoke-virtual {v2, p2}, Ljava/io/FileOutputStream;->write([B)V

    .line 170
    const/16 v0, 0x400

    new-array v0, v0, [B

    .line 172
    :goto_48
    invoke-virtual {p3, v0}, Ljava/io/InputStream;->read([B)I

    move-result v3

    const/4 v4, -0x1

    if-eq v3, v4, :cond_59

    .line 173
    const/4 v4, 0x0

    invoke-virtual {v2, v0, v4, v3}, Ljava/io/FileOutputStream;->write([BII)V
    :try_end_53
    .catch Ljava/io/IOException; {:try_start_3e .. :try_end_53} :catch_35
    .catchall {:try_start_3e .. :try_end_53} :catchall_54

    goto :goto_48

    .line 184
    :catchall_54
    move-exception v0

    :goto_55
    invoke-static {v2}, Ldxoptimizer/cdp;->a(Ljava/io/Closeable;)V

    throw v0

    .line 175
    :cond_59
    :try_start_59
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V
    :try_end_5c
    .catch Ljava/io/IOException; {:try_start_59 .. :try_end_5c} :catch_35
    .catchall {:try_start_59 .. :try_end_5c} :catchall_54

    .line 176
    const/4 v0, 0x1

    .line 184
    invoke-static {v2}, Ldxoptimizer/cdp;->a(Ljava/io/Closeable;)V

    goto :goto_3d

    :catchall_61
    move-exception v0

    move-object v2, v3

    goto :goto_55

    .line 177
    :catch_64
    move-exception v0

    move-object v2, v3

    goto :goto_36
.end method