AESEngine.smali

.class public Lnet/lingala/zip4j/crypto/engine/AESEngine;
.super Ljava/lang/Object;


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

.field private static final T0:[I

.field private static final rcon:[I


# instance fields
.field private C0:I

.field private C1:I

.field private C2:I

.field private C3:I

.field private rounds:I

.field private workingKey:[[I


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

    const/16 v0, 0x100

    new-array v1, v0, [B

    .line 1
    fill-array-data v1, :array_1a

    sput-object v1, Lnet/lingala/zip4j/crypto/engine/AESEngine;->S:[B

    const/16 v1, 0x1e

    new-array v1, v1, [I

    .line 36
    fill-array-data v1, :array_9e

    sput-object v1, Lnet/lingala/zip4j/crypto/engine/AESEngine;->rcon:[I

    new-array v0, v0, [I

    .line 40
    fill-array-data v0, :array_de

    sput-object v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->T0:[I

    return-void

    :array_1a
    .array-data 1
        0x63t
        0x7ct
        0x77t
        0x7bt
        -0xet
        0x6bt
        0x6ft
        -0x3bt
        0x30t
        0x1t
        0x67t
        0x2bt
        -0x2t
        -0x29t
        -0x55t
        0x76t
        -0x36t
        -0x7et
        -0x37t
        0x7dt
        -0x6t
        0x59t
        0x47t
        -0x10t
        -0x53t
        -0x2ct
        -0x5et
        -0x51t
        -0x64t
        -0x5ct
        0x72t
        -0x40t
        -0x49t
        -0x3t
        -0x6dt
        0x26t
        0x36t
        0x3ft
        -0x9t
        -0x34t
        0x34t
        -0x5bt
        -0x1bt
        -0xft
        0x71t
        -0x28t
        0x31t
        0x15t
        0x4t
        -0x39t
        0x23t
        -0x3dt
        0x18t
        -0x6at
        0x5t
        -0x66t
        0x7t
        0x12t
        -0x80t
        -0x1et
        -0x15t
        0x27t
        -0x4et
        0x75t
        0x9t
        -0x7dt
        0x2ct
        0x1at
        0x1bt
        0x6et
        0x5at
        -0x60t
        0x52t
        0x3bt
        -0x2at
        -0x4dt
        0x29t
        -0x1dt
        0x2ft
        -0x7ct
        0x53t
        -0x2ft
        0x0t
        -0x13t
        0x20t
        -0x4t
        -0x4ft
        0x5bt
        0x6at
        -0x35t
        -0x42t
        0x39t
        0x4at
        0x4ct
        0x58t
        -0x31t
        -0x30t
        -0x11t
        -0x56t
        -0x5t
        0x43t
        0x4dt
        0x33t
        -0x7bt
        0x45t
        -0x7t
        0x2t
        0x7ft
        0x50t
        0x3ct
        -0x61t
        -0x58t
        0x51t
        -0x5dt
        0x40t
        -0x71t
        -0x6et
        -0x63t
        0x38t
        -0xbt
        -0x44t
        -0x4at
        -0x26t
        0x21t
        0x10t
        -0x1t
        -0xdt
        -0x2et
        -0x33t
        0xct
        0x13t
        -0x14t
        0x5ft
        -0x69t
        0x44t
        0x17t
        -0x3ct
        -0x59t
        0x7et
        0x3dt
        0x64t
        0x5dt
        0x19t
        0x73t
        0x60t
        -0x7ft
        0x4ft
        -0x24t
        0x22t
        0x2at
        -0x70t
        -0x78t
        0x46t
        -0x12t
        -0x48t
        0x14t
        -0x22t
        0x5et
        0xbt
        -0x25t
        -0x20t
        0x32t
        0x3at
        0xat
        0x49t
        0x6t
        0x24t
        0x5ct
        -0x3et
        -0x2dt
        -0x54t
        0x62t
        -0x6ft
        -0x6bt
        -0x1ct
        0x79t
        -0x19t
        -0x38t
        0x37t
        0x6dt
        -0x73t
        -0x2bt
        0x4et
        -0x57t
        0x6ct
        0x56t
        -0xct
        -0x16t
        0x65t
        0x7at
        -0x52t
        0x8t
        -0x46t
        0x78t
        0x25t
        0x2et
        0x1ct
        -0x5at
        -0x4ct
        -0x3at
        -0x18t
        -0x23t
        0x74t
        0x1ft
        0x4bt
        -0x43t
        -0x75t
        -0x76t
        0x70t
        0x3et
        -0x4bt
        0x66t
        0x48t
        0x3t
        -0xat
        0xet
        0x61t
        0x35t
        0x57t
        -0x47t
        -0x7at
        -0x3ft
        0x1dt
        -0x62t
        -0x1ft
        -0x8t
        -0x68t
        0x11t
        0x69t
        -0x27t
        -0x72t
        -0x6ct
        -0x65t
        0x1et
        -0x79t
        -0x17t
        -0x32t
        0x55t
        0x28t
        -0x21t
        -0x74t
        -0x5ft
        -0x77t
        0xdt
        -0x41t
        -0x1at
        0x42t
        0x68t
        0x41t
        -0x67t
        0x2dt
        0xft
        -0x50t
        0x54t
        -0x45t
        0x16t
    .end array-data

    :array_9e
    .array-data 4
        0x1
        0x2
        0x4
        0x8
        0x10
        0x20
        0x40
        0x80
        0x1b
        0x36
        0x6c
        0xd8
        0xab
        0x4d
        0x9a
        0x2f
        0x5e
        0xbc
        0x63
        0xc6
        0x97
        0x35
        0x6a
        0xd4
        0xb3
        0x7d
        0xfa
        0xef
        0xc5
        0x91
    .end array-data

    :array_de
    .array-data 4
        -0x5a9c9c3a
        -0x7b838308
        -0x66888812
        -0x7284840a
        0xdf2f2ff
        -0x4294942a
        -0x4e909022
        0x54c5c591
        0x50303060
        0x3010102
        -0x56989832
        0x7d2b2b56
        0x19fefee7
        0x62d7d7b5
        -0x195454b3
        -0x65898914
        0x45caca8f
        -0x627d7de1
        0x40c9c989
        -0x78828206
        0x15fafaef
        -0x14a6a64e
        -0x36b8b872
        0xbf0f0fb
        -0x135252bf
        0x67d4d4b3
        -0x25d5da1
        -0x155050bb
        -0x406363dd
        -0x85b5bad
        -0x698d8d1c
        0x5bc0c09b
        -0x3d48488b
        0x1cfdfde1
        -0x516c6cc3
        0x6a26264c
        0x5a36366c
        0x413f3f7e
        0x2f7f7f5
        0x4fcccc83
        0x5c343468
        -0xb5a5aaf
        0x34e5e5d1
        0x8f1f1f9
        -0x6c8e8e1e
        0x73d8d8ab
        0x53313162
        0x3f15152a
        0xc040408
        0x52c7c795
        0x65232346
        0x5ec3c39d
        0x28181830
        -0x5e6969c9
        0xf05050a
        -0x4a6565d1
        0x907070e
        0x36121224
        -0x647f7fe5
        0x3de2e2df
        0x26ebebcd
        0x6927274e
        -0x324d4d81
        -0x608a8a16
        0x1b090912
        -0x617c7ce3
        0x742c2c58
        0x2e1a1a34
        0x2d1b1b36
        -0x4d919124
        -0x11a5a54c
        -0x45f5fa5
        -0x9adad5c
        0x4d3b3b76    # 1.96327264E8f
        0x61d6d6b7
        -0x314c4c83
        0x7b292952
        0x3ee3e3dd
        0x712f2f5e
        -0x687b7bed
        -0xaacac5a
        0x68d1d1b9
        0x0
        0x2cededc1
        0x60202040
        0x1ffcfce3
        -0x374e4e87
        -0x12a4a44a
        -0x4195952c
        0x46cbcb8d
        -0x26414199
        0x4b393972    # 1.2138866E7f
        -0x21b5b56c
        -0x2bb3b368
        -0x17a7a750
        0x4acfcf85    # 6809538.5f
        0x6bd0d0bb
        0x2aefefc5
        -0x1a5555b1
        0x16fbfbed
        -0x3abcbc7a
        -0x28b2b266
        0x55333366
        -0x6b7a7aef
        -0x30baba76
        0x10f9f9e9
        0x6020204
        -0x7e808002
        -0xfafaf60
        0x443c3c78
        -0x456060db
        -0x1c5757b5
        -0xcaeae5e
        -0x15c5ca3
        -0x3fbfbf80
        -0x757070fb
        -0x526d6dc1
        -0x436262df
        0x48383870    # 188641.75f
        0x4f5f5f1
        -0x2043439d
        -0x3e494989
        0x75dadaaf
        0x63212142
        0x30101020
        0x1affffe5
        0xef3f3fd
        0x6dd2d2bf
        0x4ccdcd81    # 1.07899912E8f
        0x140c0c18
        0x35131326
        0x2fececc3
        -0x1ea0a042
        -0x5d6868cb
        -0x33bbbb78    # -5.14504E7f
        0x3917172e
        0x57c4c493
        -0xd5858ab
        -0x7d818104
        0x473d3d7a
        -0x539b9b38
        -0x18a2a246
        0x2b191932
        -0x6a8c8c1a
        -0x5f9f9f40
        -0x677e7ee7
        -0x2eb0b062
        0x7fdcdca3
        0x66222244
        0x7e2a2a54
        -0x546f6fc5
        -0x7c7777f5
        -0x35b9b974    # -3248547.0f
        0x29eeeec7
        -0x2c474795
        0x3c141428
        0x79dedea7
        -0x1da1a144
        0x1d0b0b16
        0x76dbdbad
        0x3be0e0db
        0x56323264
        0x4e3a3a74
        0x1e0a0a14
        -0x24b6b66e
        0xa06060c
        0x6c242448
        -0x1ba3a348
        0x5dc2c29f
        0x6ed3d3bd
        -0x105353bd
        -0x599d9d3c
        -0x576e6ec7
        -0x5b6a6acf
        0x37e4e4d3
        -0x7486860e
        0x32e7e7d5
        0x43c8c88b
        0x5937376e
        -0x48929226
        -0x737272ff
        0x64d5d5b1
        -0x2db1b164
        -0x1f5656b7
        -0x4b939328
        -0x5a9a954
        0x7f4f4f3
        0x25eaeacf
        -0x509a9a36
        -0x7185850c
        -0x165151b9
        0x18080810
        -0x2a454591
        -0x77878710
        0x6f25254a
        0x722e2e5c
        0x241c1c38
        -0xe5959a9
        -0x384b4b8d
        0x51c6c697
        0x23e8e8cb
        0x7cdddda1
        -0x638b8b18
        0x211f1f3e
        -0x22b4b46a
        -0x2342429f
        -0x797474f3
        -0x7a7575f1
        -0x6f8f8f20
        0x423e3e7c
        -0x3b4a4a8f
        -0x55999934
        -0x27b7b770
        0x5030306
        0x1f6f6f7
        0x120e0e1c
        -0x5c9e9e3e
        0x5f35356a
        -0x6a8a852
        -0x2f464697
        -0x6e7979e9
        0x58c1c199
        0x271d1d3a
        -0x466161d9
        0x38e1e1d9
        0x13f8f8eb
        -0x4c6767d5
        0x33111122
        -0x4496962e
        0x70d9d9a9
        -0x767171f9
        -0x586b6bcd
        -0x496464d3
        0x221e1e3c
        -0x6d7878eb
        0x20e9e9c9
        0x49cece87
        -0xaaaa56
        0x78282850
        0x7adfdfa5
        -0x707373fd
        -0x75e5ea7
        -0x7f7676f7
        0x170d0d1a
        -0x2540409b
        0x31e6e6d7
        -0x39bdbd7c
        -0x47979730
        -0x3cbebe7e
        -0x4f6666d7
        0x772d2d5a
        0x110f0f1e
        -0x344f4f85    # -2.315903E7f
        -0x3abab58
        -0x29444493
        0x3a16162c
    .end array-data
.end method

.method public constructor <init>([B)V
    .registers 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lnet/lingala/zip4j/exception/ZipException;
        }
    .end annotation

    .line 1
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    const/4 v0, 0x0

    .line 2
    iput-object v0, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->workingKey:[[I

    .line 6
    invoke-direct {p0, p1}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->init([B)V

    return-void
.end method

.method private encryptBlock([[I)V
    .registers 18

    move-object/from16 v0, p0

    .line 1
    iget v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    const/4 v2, 0x0

    aget-object v3, p1, v2

    aget v3, v3, v2

    xor-int/2addr v1, v3

    iput v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    .line 2
    iget v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    aget-object v3, p1, v2

    const/4 v4, 0x1

    aget v3, v3, v4

    xor-int/2addr v1, v3

    iput v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    .line 3
    iget v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    aget-object v3, p1, v2

    const/4 v5, 0x2

    aget v3, v3, v5

    xor-int/2addr v1, v3

    iput v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    .line 4
    iget v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    aget-object v3, p1, v2

    const/4 v6, 0x3

    aget v3, v3, v6

    xor-int/2addr v1, v3

    iput v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    move v1, v4

    .line 8
    :goto_2b
    iget v3, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->rounds:I

    sub-int/2addr v3, v4

    const/16 v7, 0x10

    const/16 v8, 0x18

    const/16 v9, 0x8

    if-ge v1, v3, :cond_1aa

    .line 9
    sget-object v3, Lnet/lingala/zip4j/crypto/engine/AESEngine;->T0:[I

    iget v10, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    and-int/lit16 v10, v10, 0xff

    aget v10, v3, v10

    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    shr-int/2addr v11, v9

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    invoke-direct {v0, v11, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v11

    xor-int/2addr v10, v11

    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    shr-int/2addr v11, v7

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    invoke-direct {v0, v11, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v11

    xor-int/2addr v10, v11

    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    shr-int/2addr v11, v8

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    invoke-direct {v0, v11, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v11

    xor-int/2addr v10, v11

    aget-object v11, p1, v1

    aget v11, v11, v2

    xor-int/2addr v10, v11

    .line 10
    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    shr-int/2addr v12, v9

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    invoke-direct {v0, v12, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v12

    xor-int/2addr v11, v12

    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    shr-int/2addr v12, v7

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    invoke-direct {v0, v12, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v12

    xor-int/2addr v11, v12

    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    shr-int/2addr v12, v8

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    invoke-direct {v0, v12, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v12

    xor-int/2addr v11, v12

    aget-object v12, p1, v1

    aget v12, v12, v4

    xor-int/2addr v11, v12

    .line 11
    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    shr-int/2addr v13, v9

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    invoke-direct {v0, v13, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v13

    xor-int/2addr v12, v13

    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    shr-int/2addr v13, v7

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    invoke-direct {v0, v13, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v13

    xor-int/2addr v12, v13

    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    shr-int/2addr v13, v8

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    invoke-direct {v0, v13, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v13

    xor-int/2addr v12, v13

    aget-object v13, p1, v1

    aget v13, v13, v5

    xor-int/2addr v12, v13

    .line 12
    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    iget v14, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    shr-int/2addr v14, v9

    and-int/lit16 v14, v14, 0xff

    aget v14, v3, v14

    invoke-direct {v0, v14, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v14

    xor-int/2addr v13, v14

    iget v14, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    shr-int/2addr v14, v7

    and-int/lit16 v14, v14, 0xff

    aget v14, v3, v14

    invoke-direct {v0, v14, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v14

    xor-int/2addr v13, v14

    iget v14, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    shr-int/2addr v14, v8

    and-int/lit16 v14, v14, 0xff

    aget v14, v3, v14

    invoke-direct {v0, v14, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v14

    xor-int/2addr v13, v14

    add-int/lit8 v14, v1, 0x1

    aget-object v1, p1, v1

    aget v1, v1, v6

    xor-int/2addr v1, v13

    and-int/lit16 v13, v10, 0xff

    .line 13
    aget v13, v3, v13

    shr-int/lit8 v15, v11, 0x8

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    shr-int/lit8 v15, v12, 0x10

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    shr-int/lit8 v15, v1, 0x18

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    aget-object v15, p1, v14

    aget v15, v15, v2

    xor-int/2addr v13, v15

    iput v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    and-int/lit16 v13, v11, 0xff

    .line 14
    aget v13, v3, v13

    shr-int/lit8 v15, v12, 0x8

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    shr-int/lit8 v15, v1, 0x10

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    shr-int/lit8 v15, v10, 0x18

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    aget-object v15, p1, v14

    aget v15, v15, v4

    xor-int/2addr v13, v15

    iput v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    and-int/lit16 v13, v12, 0xff

    .line 15
    aget v13, v3, v13

    shr-int/lit8 v15, v1, 0x8

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    shr-int/lit8 v15, v10, 0x10

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    shr-int/lit8 v15, v11, 0x18

    and-int/lit16 v15, v15, 0xff

    aget v15, v3, v15

    invoke-direct {v0, v15, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v15

    xor-int/2addr v13, v15

    aget-object v15, p1, v14

    aget v15, v15, v5

    xor-int/2addr v13, v15

    iput v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    and-int/lit16 v1, v1, 0xff

    .line 16
    aget v1, v3, v1

    shr-int/2addr v10, v9

    and-int/lit16 v10, v10, 0xff

    aget v10, v3, v10

    invoke-direct {v0, v10, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v10

    xor-int/2addr v1, v10

    shr-int/lit8 v10, v11, 0x10

    and-int/lit16 v10, v10, 0xff

    aget v10, v3, v10

    invoke-direct {v0, v10, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v1, v7

    shr-int/lit8 v7, v12, 0x18

    and-int/lit16 v7, v7, 0xff

    aget v3, v3, v7

    invoke-direct {v0, v3, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v3

    xor-int/2addr v1, v3

    add-int/lit8 v3, v14, 0x1

    aget-object v7, p1, v14

    aget v7, v7, v6

    xor-int/2addr v1, v7

    iput v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    move v1, v3

    goto/16 :goto_2b

    .line 19
    :cond_1aa
    sget-object v3, Lnet/lingala/zip4j/crypto/engine/AESEngine;->T0:[I

    iget v10, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    and-int/lit16 v10, v10, 0xff

    aget v10, v3, v10

    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    shr-int/2addr v11, v9

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    invoke-direct {v0, v11, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v11

    xor-int/2addr v10, v11

    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    shr-int/2addr v11, v7

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    invoke-direct {v0, v11, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v11

    xor-int/2addr v10, v11

    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    shr-int/2addr v11, v8

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    invoke-direct {v0, v11, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v11

    xor-int/2addr v10, v11

    aget-object v11, p1, v1

    aget v11, v11, v2

    xor-int/2addr v10, v11

    .line 20
    iget v11, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    and-int/lit16 v11, v11, 0xff

    aget v11, v3, v11

    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    shr-int/2addr v12, v9

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    invoke-direct {v0, v12, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v12

    xor-int/2addr v11, v12

    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    shr-int/2addr v12, v7

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    invoke-direct {v0, v12, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v12

    xor-int/2addr v11, v12

    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    shr-int/2addr v12, v8

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    invoke-direct {v0, v12, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v12

    xor-int/2addr v11, v12

    aget-object v12, p1, v1

    aget v12, v12, v4

    xor-int/2addr v11, v12

    .line 21
    iget v12, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    and-int/lit16 v12, v12, 0xff

    aget v12, v3, v12

    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    shr-int/2addr v13, v9

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    invoke-direct {v0, v13, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v13

    xor-int/2addr v12, v13

    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    shr-int/2addr v13, v7

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    invoke-direct {v0, v13, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v13

    xor-int/2addr v12, v13

    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    shr-int/2addr v13, v8

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    invoke-direct {v0, v13, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v13

    xor-int/2addr v12, v13

    aget-object v13, p1, v1

    aget v13, v13, v5

    xor-int/2addr v12, v13

    .line 22
    iget v13, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    and-int/lit16 v13, v13, 0xff

    aget v13, v3, v13

    iget v14, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    shr-int/2addr v14, v9

    and-int/lit16 v14, v14, 0xff

    aget v14, v3, v14

    invoke-direct {v0, v14, v8}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v14

    xor-int/2addr v13, v14

    iget v14, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    shr-int/2addr v14, v7

    and-int/lit16 v14, v14, 0xff

    aget v14, v3, v14

    invoke-direct {v0, v14, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v14

    xor-int/2addr v13, v14

    iget v14, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    shr-int/2addr v14, v8

    and-int/lit16 v14, v14, 0xff

    aget v3, v3, v14

    invoke-direct {v0, v3, v9}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v3

    xor-int/2addr v3, v13

    add-int/lit8 v13, v1, 0x1

    aget-object v1, p1, v1

    aget v1, v1, v6

    xor-int/2addr v1, v3

    .line 24
    sget-object v3, Lnet/lingala/zip4j/crypto/engine/AESEngine;->S:[B

    and-int/lit16 v14, v10, 0xff

    aget-byte v14, v3, v14

    and-int/lit16 v14, v14, 0xff

    shr-int/lit8 v15, v11, 0x8

    and-int/lit16 v15, v15, 0xff

    aget-byte v15, v3, v15

    and-int/lit16 v15, v15, 0xff

    shl-int/2addr v15, v9

    xor-int/2addr v14, v15

    shr-int/lit8 v15, v12, 0x10

    and-int/lit16 v15, v15, 0xff

    aget-byte v15, v3, v15

    and-int/lit16 v15, v15, 0xff

    shl-int/2addr v15, v7

    xor-int/2addr v14, v15

    shr-int/lit8 v15, v1, 0x18

    and-int/lit16 v15, v15, 0xff

    aget-byte v15, v3, v15

    shl-int/2addr v15, v8

    xor-int/2addr v14, v15

    aget-object v15, p1, v13

    aget v2, v15, v2

    xor-int/2addr v2, v14

    iput v2, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    and-int/lit16 v2, v11, 0xff

    .line 25
    aget-byte v2, v3, v2

    and-int/lit16 v2, v2, 0xff

    shr-int/lit8 v14, v12, 0x8

    and-int/lit16 v14, v14, 0xff

    aget-byte v14, v3, v14

    and-int/lit16 v14, v14, 0xff

    shl-int/2addr v14, v9

    xor-int/2addr v2, v14

    shr-int/lit8 v14, v1, 0x10

    and-int/lit16 v14, v14, 0xff

    aget-byte v14, v3, v14

    and-int/lit16 v14, v14, 0xff

    shl-int/2addr v14, v7

    xor-int/2addr v2, v14

    shr-int/lit8 v14, v10, 0x18

    and-int/lit16 v14, v14, 0xff

    aget-byte v14, v3, v14

    shl-int/2addr v14, v8

    xor-int/2addr v2, v14

    aget-object v14, p1, v13

    aget v4, v14, v4

    xor-int/2addr v2, v4

    iput v2, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    and-int/lit16 v2, v12, 0xff

    .line 26
    aget-byte v2, v3, v2

    and-int/lit16 v2, v2, 0xff

    shr-int/lit8 v4, v1, 0x8

    and-int/lit16 v4, v4, 0xff

    aget-byte v4, v3, v4

    and-int/lit16 v4, v4, 0xff

    shl-int/2addr v4, v9

    xor-int/2addr v2, v4

    shr-int/lit8 v4, v10, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-byte v4, v3, v4

    and-int/lit16 v4, v4, 0xff

    shl-int/2addr v4, v7

    xor-int/2addr v2, v4

    shr-int/lit8 v4, v11, 0x18

    and-int/lit16 v4, v4, 0xff

    aget-byte v4, v3, v4

    shl-int/2addr v4, v8

    xor-int/2addr v2, v4

    aget-object v4, p1, v13

    aget v4, v4, v5

    xor-int/2addr v2, v4

    iput v2, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    and-int/lit16 v1, v1, 0xff

    .line 27
    aget-byte v1, v3, v1

    and-int/lit16 v1, v1, 0xff

    shr-int/lit8 v2, v10, 0x8

    and-int/lit16 v2, v2, 0xff

    aget-byte v2, v3, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/2addr v2, v9

    xor-int/2addr v1, v2

    shr-int/lit8 v2, v11, 0x10

    and-int/lit16 v2, v2, 0xff

    aget-byte v2, v3, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/2addr v2, v7

    xor-int/2addr v1, v2

    shr-int/lit8 v2, v12, 0x18

    and-int/lit16 v2, v2, 0xff

    aget-byte v2, v3, v2

    shl-int/2addr v2, v8

    xor-int/2addr v1, v2

    aget-object v2, p1, v13

    aget v2, v2, v6

    xor-int/2addr v1, v2

    iput v1, v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    return-void
.end method

.method private generateWorkingKey([B)[[I
    .registers 15
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lnet/lingala/zip4j/exception/ZipException;
        }
    .end annotation

    .line 1
    array-length v0, p1

    const/4 v1, 0x4

    div-int/2addr v0, v1

    const/16 v2, 0x8

    const/4 v3, 0x6

    if-eq v0, v1, :cond_c

    if-eq v0, v3, :cond_c

    if-ne v0, v2, :cond_98

    :cond_c
    mul-int/lit8 v4, v0, 0x4

    .line 4
    array-length v5, p1

    if-ne v4, v5, :cond_98

    add-int/lit8 v4, v0, 0x6

    .line 8
    iput v4, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->rounds:I

    const/4 v5, 0x1

    add-int/2addr v4, v5

    const/4 v6, 0x2

    new-array v7, v6, [I

    aput v1, v7, v5

    const/4 v8, 0x0

    aput v4, v7, v8

    .line 9
    const-class v4, I

    invoke-static {v4, v7}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, [[I

    move v7, v8

    .line 13
    :goto_28
    array-length v9, p1

    if-ge v8, v9, :cond_53

    shr-int/lit8 v9, v7, 0x2

    .line 14
    aget-object v9, v4, v9

    and-int/lit8 v10, v7, 0x3

    aget-byte v11, p1, v8

    and-int/lit16 v11, v11, 0xff

    add-int/lit8 v12, v8, 0x1

    aget-byte v12, p1, v12

    and-int/lit16 v12, v12, 0xff

    shl-int/2addr v12, v2

    or-int/2addr v11, v12

    add-int/lit8 v12, v8, 0x2

    aget-byte v12, p1, v12

    and-int/lit16 v12, v12, 0xff

    shl-int/lit8 v12, v12, 0x10

    or-int/2addr v11, v12

    add-int/lit8 v12, v8, 0x3

    aget-byte v12, p1, v12

    shl-int/lit8 v12, v12, 0x18

    or-int/2addr v11, v12

    aput v11, v9, v10

    add-int/lit8 v8, v8, 0x4

    add-int/2addr v7, v5

    goto :goto_28

    .line 20
    :cond_53
    iget p1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->rounds:I

    add-int/2addr p1, v5

    shl-int/2addr p1, v6

    move v6, v0

    :goto_58
    if-ge v6, p1, :cond_97

    add-int/lit8 v7, v6, -0x1

    shr-int/lit8 v8, v7, 0x2

    .line 22
    aget-object v8, v4, v8

    and-int/lit8 v7, v7, 0x3

    aget v7, v8, v7

    .line 23
    rem-int v8, v6, v0

    if-nez v8, :cond_79

    .line 24
    invoke-direct {p0, v7, v2}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->shift(II)I

    move-result v7

    invoke-direct {p0, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->subWord(I)I

    move-result v7

    sget-object v8, Lnet/lingala/zip4j/crypto/engine/AESEngine;->rcon:[I

    div-int v9, v6, v0

    sub-int/2addr v9, v5

    aget v8, v8, v9

    xor-int/2addr v7, v8

    goto :goto_81

    :cond_79
    if-le v0, v3, :cond_81

    if-ne v8, v1, :cond_81

    .line 26
    invoke-direct {p0, v7}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->subWord(I)I

    move-result v7

    :cond_81
    :goto_81
    shr-int/lit8 v8, v6, 0x2

    .line 29
    aget-object v8, v4, v8

    and-int/lit8 v9, v6, 0x3

    sub-int v10, v6, v0

    shr-int/lit8 v11, v10, 0x2

    aget-object v11, v4, v11

    and-int/lit8 v10, v10, 0x3

    aget v10, v11, v10

    xor-int/2addr v7, v10

    aput v7, v8, v9

    add-int/lit8 v6, v6, 0x1

    goto :goto_58

    :cond_97
    return-object v4

    .line 30
    :cond_98
    new-instance p1, Lnet/lingala/zip4j/exception/ZipException;

    const-string v0, "invalid key length (not 128/192/256)"

    invoke-direct {p1, v0}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V

    throw p1
.end method

.method private init([B)V
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lnet/lingala/zip4j/exception/ZipException;
        }
    .end annotation

    .line 1
    invoke-direct {p0, p1}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->generateWorkingKey([B)[[I

    move-result-object p1

    iput-object p1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->workingKey:[[I

    return-void
.end method

.method private shift(II)I
    .registers 4

    ushr-int v0, p1, p2

    neg-int p2, p2

    shl-int/2addr p1, p2

    or-int/2addr p1, v0

    return p1
.end method

.method private stateIn([BI)V
    .registers 5

    add-int/lit8 v0, p2, 0x1

    .line 1
    aget-byte p2, p1, p2

    and-int/lit16 p2, p2, 0xff

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    add-int/lit8 v1, v0, 0x1

    .line 2
    aget-byte v0, p1, v0

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v0, v0, 0x8

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    add-int/lit8 v0, v1, 0x1

    .line 3
    aget-byte v1, p1, v1

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    or-int/2addr p2, v1

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    add-int/lit8 v1, v0, 0x1

    .line 4
    aget-byte v0, p1, v0

    shl-int/lit8 v0, v0, 0x18

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    add-int/lit8 p2, v1, 0x1

    .line 6
    aget-byte v0, p1, v1

    and-int/lit16 v0, v0, 0xff

    iput v0, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    add-int/lit8 v1, p2, 0x1

    .line 7
    aget-byte p2, p1, p2

    and-int/lit16 p2, p2, 0xff

    shl-int/lit8 p2, p2, 0x8

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    add-int/lit8 v0, v1, 0x1

    .line 8
    aget-byte v1, p1, v1

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    or-int/2addr p2, v1

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    add-int/lit8 v1, v0, 0x1

    .line 9
    aget-byte v0, p1, v0

    shl-int/lit8 v0, v0, 0x18

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    add-int/lit8 p2, v1, 0x1

    .line 11
    aget-byte v0, p1, v1

    and-int/lit16 v0, v0, 0xff

    iput v0, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    add-int/lit8 v1, p2, 0x1

    .line 12
    aget-byte p2, p1, p2

    and-int/lit16 p2, p2, 0xff

    shl-int/lit8 p2, p2, 0x8

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    add-int/lit8 v0, v1, 0x1

    .line 13
    aget-byte v1, p1, v1

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    or-int/2addr p2, v1

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    add-int/lit8 v1, v0, 0x1

    .line 14
    aget-byte v0, p1, v0

    shl-int/lit8 v0, v0, 0x18

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    add-int/lit8 p2, v1, 0x1

    .line 16
    aget-byte v0, p1, v1

    and-int/lit16 v0, v0, 0xff

    iput v0, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    add-int/lit8 v1, p2, 0x1

    .line 17
    aget-byte p2, p1, p2

    and-int/lit16 p2, p2, 0xff

    shl-int/lit8 p2, p2, 0x8

    or-int/2addr p2, v0

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    add-int/lit8 v0, v1, 0x1

    .line 18
    aget-byte v1, p1, v1

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    or-int/2addr p2, v1

    iput p2, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    .line 19
    aget-byte p1, p1, v0

    shl-int/lit8 p1, p1, 0x18

    or-int/2addr p1, p2

    iput p1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    return-void
.end method

.method private stateOut([BI)V
    .registers 6

    add-int/lit8 v0, p2, 0x1

    .line 1
    iget v1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C0:I

    int-to-byte v2, v1

    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v2, v1, 0x8

    int-to-byte v2, v2

    .line 2
    aput-byte v2, p1, v0

    add-int/lit8 v0, p2, 0x1

    shr-int/lit8 v2, v1, 0x10

    int-to-byte v2, v2

    .line 3
    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v1, v1, 0x18

    int-to-byte v1, v1

    .line 4
    aput-byte v1, p1, v0

    add-int/lit8 v0, p2, 0x1

    .line 6
    iget v1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C1:I

    int-to-byte v2, v1

    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v2, v1, 0x8

    int-to-byte v2, v2

    .line 7
    aput-byte v2, p1, v0

    add-int/lit8 v0, p2, 0x1

    shr-int/lit8 v2, v1, 0x10

    int-to-byte v2, v2

    .line 8
    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v1, v1, 0x18

    int-to-byte v1, v1

    .line 9
    aput-byte v1, p1, v0

    add-int/lit8 v0, p2, 0x1

    .line 11
    iget v1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C2:I

    int-to-byte v2, v1

    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v2, v1, 0x8

    int-to-byte v2, v2

    .line 12
    aput-byte v2, p1, v0

    add-int/lit8 v0, p2, 0x1

    shr-int/lit8 v2, v1, 0x10

    int-to-byte v2, v2

    .line 13
    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v1, v1, 0x18

    int-to-byte v1, v1

    .line 14
    aput-byte v1, p1, v0

    add-int/lit8 v0, p2, 0x1

    .line 16
    iget v1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->C3:I

    int-to-byte v2, v1

    aput-byte v2, p1, p2

    add-int/lit8 p2, v0, 0x1

    shr-int/lit8 v2, v1, 0x8

    int-to-byte v2, v2

    .line 17
    aput-byte v2, p1, v0

    add-int/lit8 v0, p2, 0x1

    shr-int/lit8 v2, v1, 0x10

    int-to-byte v2, v2

    .line 18
    aput-byte v2, p1, p2

    shr-int/lit8 p2, v1, 0x18

    int-to-byte p2, p2

    .line 19
    aput-byte p2, p1, v0

    return-void
.end method

.method private subWord(I)I
    .registers 5

    .line 1
    sget-object v0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->S:[B

    and-int/lit16 v1, p1, 0xff

    aget-byte v1, v0, v1

    and-int/lit16 v1, v1, 0xff

    shr-int/lit8 v2, p1, 0x8

    and-int/lit16 v2, v2, 0xff

    aget-byte v2, v0, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x8

    or-int/2addr v1, v2

    shr-int/lit8 v2, p1, 0x10

    and-int/lit16 v2, v2, 0xff

    aget-byte v2, v0, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    or-int/2addr v1, v2

    shr-int/lit8 p1, p1, 0x18

    and-int/lit16 p1, p1, 0xff

    aget-byte p1, v0, p1

    shl-int/lit8 p1, p1, 0x18

    or-int/2addr p1, v1

    return p1
.end method


# virtual methods
.method public processBlock([BI[BI)I
    .registers 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lnet/lingala/zip4j/exception/ZipException;
        }
    .end annotation

    .line 2
    iget-object v0, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->workingKey:[[I

    if-eqz v0, :cond_2c

    add-int/lit8 v0, p2, 0x10

    .line 6
    array-length v1, p1

    if-gt v0, v1, :cond_24

    add-int/lit8 v0, p4, 0x10

    .line 10
    array-length v1, p3

    if-gt v0, v1, :cond_1c

    .line 14
    invoke-direct {p0, p1, p2}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->stateIn([BI)V

    .line 15
    iget-object p1, p0, Lnet/lingala/zip4j/crypto/engine/AESEngine;->workingKey:[[I

    invoke-direct {p0, p1}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->encryptBlock([[I)V

    .line 16
    invoke-direct {p0, p3, p4}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->stateOut([BI)V

    const/16 p1, 0x10

    return p1

    .line 17
    :cond_1c
    new-instance p1, Lnet/lingala/zip4j/exception/ZipException;

    const-string p2, "output buffer too short"

    invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V

    throw p1

    .line 18
    :cond_24
    new-instance p1, Lnet/lingala/zip4j/exception/ZipException;

    const-string p2, "input buffer too short"

    invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V

    throw p1

    .line 19
    :cond_2c
    new-instance p1, Lnet/lingala/zip4j/exception/ZipException;

    const-string p2, "AES engine not initialised"

    invoke-direct {p1, p2}, Lnet/lingala/zip4j/exception/ZipException;-><init>(Ljava/lang/String;)V

    throw p1
.end method

.method public processBlock([B[B)I
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lnet/lingala/zip4j/exception/ZipException;
        }
    .end annotation

    const/4 v0, 0x0

    .line 1
    invoke-virtual {p0, p1, v0, p2, v0}, Lnet/lingala/zip4j/crypto/engine/AESEngine;->processBlock([BI[BI)I

    move-result p1

    return p1
.end method