AESEngine.smali

.class public Lorg/spongycastle/crypto/engines/AESEngine;
.super Ljava/lang/Object;
.source "AESEngine.java"

# interfaces
.implements Lorg/spongycastle/crypto/BlockCipher;


# static fields
.field private static final BLOCK_SIZE:I = 0x10

.field private static final S:[B

.field private static final Si:[B

.field private static final T0:[I

.field private static final Tinv0:[I

.field private static final m1:I = -0x7f7f7f80

.field private static final m2:I = 0x7f7f7f7f

.field private static final m3:I = 0x1b

.field private static final m4:I = -0x3f3f3f40

.field private static final m5:I = 0x3f3f3f3f

.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

.field private forEncryption:Z


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

    .prologue
    const/16 v1, 0x100

    .line 37
    new-array v0, v1, [B

    fill-array-data v0, :array_28

    sput-object v0, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    .line 73
    new-array v0, v1, [B

    fill-array-data v0, :array_ac

    sput-object v0, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    .line 109
    const/16 v0, 0x1e

    new-array v0, v0, [I

    fill-array-data v0, :array_130

    sput-object v0, Lorg/spongycastle/crypto/engines/AESEngine;->rcon:[I

    .line 114
    new-array v0, v1, [I

    fill-array-data v0, :array_170

    sput-object v0, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    .line 169
    new-array v0, v1, [I

    fill-array-data v0, :array_374

    sput-object v0, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    return-void

    .line 37
    :array_28
    .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

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

    .line 109
    :array_130
    .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

    .line 114
    :array_170
    .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

    .line 169
    :array_374
    .array-data 4
        0x50a7f451
        0x5365417e
        -0x3c5be8e6
        -0x69a1d8c6
        -0x349454c5    # -1.5444795E7f
        -0xeba62e1
        -0x54a70554
        -0x6cfc1cb5
        0x55fa3020
        -0x9928953
        -0x6e893378
        0x254c02f5
        -0x3281ab1
        -0x2834d53b
        -0x7fbbcada
        -0x705c9d4b
        0x495ab1de    # 895773.9f
        0x671bba25
        -0x67f115bb
        -0x1e3f01a3
        0x2752fc3
        0x12f04c81
        -0x5c68b973
        -0x39062c95
        -0x18a070fd
        -0x6a636deb
        -0x14859241
        -0x25a6ad6b
        0x2d83bed4
        -0x2cde8ba8
        0x2969e049
        0x44c8c98e
        0x6a89c275
        0x78798ef4
        0x6b3e5899
        -0x228e46d9
        -0x49b01e42
        0x17ad88f0
        0x66ac20c9
        -0x4bc53183
        0x184adf63
        -0x7dcee51b
        0x60335197
        0x457f5362
        -0x1f889b4f
        -0x7b519445
        0x1ca081fe
        -0x6bd4f707
        0x58684870
        0x19fd458f
        -0x7893216c
        -0x480784ae
        0x23d373ab
        -0x1dfdb48e
        0x578f1fe3
        0x2aab5566
        0x728ebb2
        0x3c2b52f
        -0x65843a7a
        -0x5af7c82d
        -0xd78d7d0
        -0x4d5a40dd
        -0x4595fcfe
        0x5c8216ed
        0x2b1ccf8a
        -0x6d4b8659
        -0xf0df80d
        -0x5e1d96b2
        -0x320b259b
        -0x2a41fafa
        0x1f6234d1
        -0x7501593c
        -0x62acd1cc
        -0x5faa0c5e
        0x32e18a05
        0x75ebf6a4
        0x39ec830b
        -0x55109fc0
        0x69f715e
        0x51106ebd
        -0x675dec2
        0x3d06dd96
        -0x51fac123
        0x46bde64d
        -0x4a72ab6f
        0x55dc471
        0x6fd40604
        -0xeaafa0
        0x24fb9819
        -0x6816422a
        -0x33bcbf77    # -5.1184164E7f
        0x779ed967
        -0x42bd1750
        -0x777476f9
        0x385b19e7
        -0x24113787
        0x470a7ca1
        -0x16f0bd84
        -0x36e17b08    # -649295.5f
        0x0
        -0x7c797ff7
        0x48ed2b32
        -0x538feee2
        0x4e725a6c
        -0x400f103
        0x5638850f
        0x1ed5ae3d
        0x27392d36
        0x64d90f0a
        0x21a65c68
        -0x2eaba465
        0x3a2e3624
        -0x4e98f5f4
        0xfe75793
        -0x2d69114c
        -0x616e64e5
        0x4fc5c080
        -0x5ddf239f
        0x694b775a
        0x161a121c
        0xaba93e2
        -0x1ad55f40
        0x43e0223c
        0x1d171b12    # 1.9998679E-21f
        0xb0d090e
        -0x5238740e
        -0x465749d3
        -0x3756e1ec
        -0x7ae60ea9
        0x4c0775af    # 3.5509948E7f
        -0x44226612
        -0x29f805d
        -0x60d9fe09
        -0x430a8da4
        -0x3ac499bc
        0x347efb5b
        0x7629438b
        -0x2339dc35
        0x68fcedb6
        0x63f1e4b8
        -0x3523ce29    # -7215339.5f
        0x10856342
        0x40229713
        0x2011c684
        0x7d244a85
        -0x7c2442e
        0x1132f9ae
        0x6da129c7
        0x4b2f9e1d    # 1.1509277E7f
        -0xccf4d24    # -1.3999511E31f
        -0x13ad79f3
        -0x2f1c3e89
        0x6c16b32b
        -0x66468f57
        -0x5b76bef
        0x2264e947
        -0x3b730358
        0x1a3ff0a0
        -0x27d382aa
        -0x106fccde
        -0x38b1b679
        -0x3e2ec727
        -0x15d3574
        0x360bd498
        -0x307e0a5a
        0x28de7aa5
        0x268eb7da
        -0x5b4052c1
        -0x1b62c5d4
        0xd927850
        -0x6433a096
        0x62467e54
        -0x3dec720a
        -0x17472770
        0x5ef7392e
        -0xa503c7e
        -0x417fa261
        0x7c93d069
        -0x56d22a91
        -0x4cedda31
        0x3b99acc8
        -0x5882e7f0
        0x6e639ce8
        0x7bbb3bdb
        0x97826cd
        -0xbe7a692
        0x1b79aec
        -0x5765b07d
        0x656e95e6
        0x7ee6ffaa
        0x8cfbc21
        -0x1917ea11
        -0x26641846
        -0x31c990b6
        -0x2bf66016
        -0x29834fd7
        -0x504d5bcf
        0x31233f2a
        0x3094a5c6
        -0x3f995dcb
        0x37bc4e74
        -0x59357d04
        -0x4f2f6f20
        0x15d8a733
        0x4a9804f1    # 4981368.5f
        -0x82513bf
        0xe50cd7f
        0x2ff69117
        -0x7229b28a
        0x4db0ef43    # 3.71058784E8f
        0x544daacc
        -0x20fb691c
        -0x1c4a2e62
        0x1b886a4c
        -0x47e0d33f
        0x7f516546
        0x4ea5e9d    # 5.5100024E-36f
        0x5d358c01
        0x737487fa
        0x2e410bfb
        0x5a1d67b3
        0x52d2db92
        0x335610e9
        0x1347d66d
        -0x739e2866
        0x7a0ca137
        -0x71eb07a7
        -0x76c3ec15
        -0x11d85632
        0x35c961b7
        -0x121ae31f
        0x3cb1477a
        0x59dfd29c
        0x3f73f255
        0x79ce1418
        -0x40c8388d
        -0x153208ad
        0x5baafd5f
        0x146f3ddf
        -0x7924bb88
        -0x7e0c5036
        0x3ec468b9
        0x2c342438
        0x5f40a3c2
        0x72c31d16
        0xc25e2bc
        -0x74b6c3d8
        0x41950dff
        0x7101a839
        -0x214cf3f8
        -0x631b4b28
        -0x6f3ea99c
        0x6184cb7b
        0x70b632d5
        0x745c6c48
        0x4257b8d0
    .end array-data
.end method

.method public constructor <init>()V
    .registers 2

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

    .line 414
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->WorkingKey:[[I

    .line 425
    return-void
.end method

.method private static FFmulX(I)I
    .registers 3

    .prologue
    .line 239
    const v0, 0x7f7f7f7f

    and-int/2addr v0, p0

    shl-int/lit8 v0, v0, 0x1

    const v1, -0x7f7f7f80

    and-int/2addr v1, p0

    ushr-int/lit8 v1, v1, 0x7

    mul-int/lit8 v1, v1, 0x1b

    xor-int/2addr v0, v1

    return v0
.end method

.method private static FFmulX2(I)I
    .registers 4

    .prologue
    .line 244
    const v0, 0x3f3f3f3f

    and-int/2addr v0, p0

    shl-int/lit8 v0, v0, 0x2

    .line 245
    const v1, -0x3f3f3f40

    and-int/2addr v1, p0

    .line 246
    ushr-int/lit8 v2, v1, 0x1

    xor-int/2addr v1, v2

    .line 247
    ushr-int/lit8 v2, v1, 0x2

    xor-int/2addr v0, v2

    ushr-int/lit8 v1, v1, 0x5

    xor-int/2addr v0, v1

    return v0
.end method

.method private decryptBlock([[I)V
    .registers 12

    .prologue
    .line 589
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    aget-object v1, p1, v1

    const/4 v2, 0x0

    aget v1, v1, v2

    xor-int v4, v0, v1

    .line 590
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    aget-object v1, p1, v1

    const/4 v2, 0x1

    aget v1, v1, v2

    xor-int v3, v0, v1

    .line 591
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    aget-object v1, p1, v1

    const/4 v2, 0x2

    aget v1, v1, v2

    xor-int v2, v0, v1

    .line 593
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    add-int/lit8 v1, v0, -0x1

    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    iget v5, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    aget-object v5, p1, v5

    const/4 v6, 0x3

    aget v5, v5, v6

    xor-int/2addr v0, v5

    .line 594
    :goto_2f
    const/4 v5, 0x1

    if-le v1, v5, :cond_1f2

    .line 596
    sget-object v5, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v6, v4, 0xff

    aget v5, v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v7, v0, 0x8

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x18

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v7, v2, 0x10

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x10

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v7, v3, 0x18

    aget v6, v6, v7

    const/16 v7, 0x8

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    aget-object v6, p1, v1

    const/4 v7, 0x0

    aget v6, v6, v7

    xor-int/2addr v5, v6

    .line 597
    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v7, v3, 0xff

    aget v6, v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v8, v4, 0x8

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x18

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v8, v0, 0x10

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x10

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v8, v2, 0x18

    aget v7, v7, v8

    const/16 v8, 0x8

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    aget-object v7, p1, v1

    const/4 v8, 0x1

    aget v7, v7, v8

    xor-int/2addr v6, v7

    .line 598
    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v8, v2, 0xff

    aget v7, v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v9, v3, 0x8

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x18

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v9, v4, 0x10

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x10

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v9, v0, 0x18

    aget v8, v8, v9

    const/16 v9, 0x8

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    aget-object v8, p1, v1

    const/4 v9, 0x2

    aget v8, v8, v9

    xor-int/2addr v7, v8

    .line 599
    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v0, v0, 0xff

    aget v0, v8, v0

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v2, v2, 0x8

    and-int/lit16 v2, v2, 0xff

    aget v2, v8, v2

    const/16 v8, 0x18

    invoke-static {v2, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v3, v3, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x10

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v3, v4, 0x18

    aget v2, v2, v3

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    add-int/lit8 v8, v1, -0x1

    aget-object v1, p1, v1

    const/4 v2, 0x3

    aget v1, v1, v2

    xor-int/2addr v0, v1

    .line 600
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v2, v5, 0xff

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v3, v0, 0x8

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x18

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v3, v7, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x10

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v3, v6, 0x18

    aget v2, v2, v3

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    aget-object v2, p1, v8

    const/4 v3, 0x0

    aget v2, v2, v3

    xor-int v4, v1, v2

    .line 601
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v2, v6, 0xff

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v3, v5, 0x8

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x18

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v3, v0, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x10

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v3, v7, 0x18

    aget v2, v2, v3

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    aget-object v2, p1, v8

    const/4 v3, 0x1

    aget v2, v2, v3

    xor-int v3, v1, v2

    .line 602
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v2, v7, 0xff

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v9, v6, 0x8

    and-int/lit16 v9, v9, 0xff

    aget v2, v2, v9

    const/16 v9, 0x18

    invoke-static {v2, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v9, v5, 0x10

    and-int/lit16 v9, v9, 0xff

    aget v2, v2, v9

    const/16 v9, 0x10

    invoke-static {v2, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v9, v0, 0x18

    aget v2, v2, v9

    const/16 v9, 0x8

    invoke-static {v2, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    aget-object v2, p1, v8

    const/4 v9, 0x2

    aget v2, v2, v9

    xor-int/2addr v2, v1

    .line 603
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v0, v0, 0xff

    aget v0, v1, v0

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v7, v7, 0x8

    and-int/lit16 v7, v7, 0xff

    aget v1, v1, v7

    const/16 v7, 0x18

    invoke-static {v1, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v6, v6, 0x10

    and-int/lit16 v6, v6, 0xff

    aget v1, v1, v6

    const/16 v6, 0x10

    invoke-static {v1, v6}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v5, v5, 0x18

    aget v1, v1, v5

    const/16 v5, 0x8

    invoke-static {v1, v5}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    xor-int/2addr v0, v1

    add-int/lit8 v1, v8, -0x1

    aget-object v5, p1, v8

    const/4 v6, 0x3

    aget v5, v5, v6

    xor-int/2addr v0, v5

    goto/16 :goto_2f

    .line 606
    :cond_1f2
    sget-object v5, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v6, v4, 0xff

    aget v5, v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v7, v0, 0x8

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x18

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v7, v2, 0x10

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x10

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v7, v3, 0x18

    aget v6, v6, v7

    const/16 v7, 0x8

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    aget-object v6, p1, v1

    const/4 v7, 0x0

    aget v6, v6, v7

    xor-int/2addr v5, v6

    .line 607
    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v7, v3, 0xff

    aget v6, v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v8, v4, 0x8

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x18

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v8, v0, 0x10

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x10

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v8, v2, 0x18

    aget v7, v7, v8

    const/16 v8, 0x8

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    aget-object v7, p1, v1

    const/4 v8, 0x1

    aget v7, v7, v8

    xor-int/2addr v6, v7

    .line 608
    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v8, v2, 0xff

    aget v7, v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v9, v3, 0x8

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x18

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v9, v4, 0x10

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x10

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v9, v0, 0x18

    aget v8, v8, v9

    const/16 v9, 0x8

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    aget-object v8, p1, v1

    const/4 v9, 0x2

    aget v8, v8, v9

    xor-int/2addr v7, v8

    .line 609
    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    and-int/lit16 v0, v0, 0xff

    aget v0, v8, v0

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v2, v2, 0x8

    and-int/lit16 v2, v2, 0xff

    aget v2, v8, v2

    const/16 v8, 0x18

    invoke-static {v2, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    shr-int/lit8 v3, v3, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x10

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Tinv0:[I

    ushr-int/lit8 v3, v4, 0x18

    aget v2, v2, v3

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    aget-object v1, p1, v1

    const/4 v2, 0x3

    aget v1, v1, v2

    xor-int/2addr v0, v1

    .line 613
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    and-int/lit16 v2, v5, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v3, v0, 0x8

    and-int/lit16 v3, v3, 0xff

    aget-byte v2, v2, v3

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x8

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v3, v7, 0x10

    and-int/lit16 v3, v3, 0xff

    aget-byte v2, v2, v3

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    ushr-int/lit8 v3, v6, 0x18

    aget-byte v2, v2, v3

    shl-int/lit8 v2, v2, 0x18

    xor-int/2addr v1, v2

    const/4 v2, 0x0

    aget-object v2, p1, v2

    const/4 v3, 0x0

    aget v2, v2, v3

    xor-int/2addr v1, v2

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    .line 614
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    and-int/lit16 v2, v6, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v3, v5, 0x8

    and-int/lit16 v3, v3, 0xff

    aget-byte v2, v2, v3

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x8

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v3, v0, 0x10

    and-int/lit16 v3, v3, 0xff

    aget-byte v2, v2, v3

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    ushr-int/lit8 v3, v7, 0x18

    aget-byte v2, v2, v3

    shl-int/lit8 v2, v2, 0x18

    xor-int/2addr v1, v2

    const/4 v2, 0x0

    aget-object v2, p1, v2

    const/4 v3, 0x1

    aget v2, v2, v3

    xor-int/2addr v1, v2

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    .line 615
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    and-int/lit16 v2, v7, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v3, v6, 0x8

    and-int/lit16 v3, v3, 0xff

    aget-byte v2, v2, v3

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x8

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v3, v5, 0x10

    and-int/lit16 v3, v3, 0xff

    aget-byte v2, v2, v3

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    ushr-int/lit8 v3, v0, 0x18

    aget-byte v2, v2, v3

    shl-int/lit8 v2, v2, 0x18

    xor-int/2addr v1, v2

    const/4 v2, 0x0

    aget-object v2, p1, v2

    const/4 v3, 0x2

    aget v2, v2, v3

    xor-int/2addr v1, v2

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    .line 616
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    and-int/lit16 v0, v0, 0xff

    aget-byte v0, v1, v0

    and-int/lit16 v0, v0, 0xff

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v2, v7, 0x8

    and-int/lit16 v2, v2, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x8

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    shr-int/lit8 v2, v6, 0x10

    and-int/lit16 v2, v2, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->Si:[B

    ushr-int/lit8 v2, v5, 0x18

    aget-byte v1, v1, v2

    shl-int/lit8 v1, v1, 0x18

    xor-int/2addr v0, v1

    const/4 v1, 0x0

    aget-object v1, p1, v1

    const/4 v2, 0x3

    aget v1, v1, v2

    xor-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    .line 617
    return-void
.end method

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

    .prologue
    .line 557
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    const/4 v1, 0x0

    aget-object v1, p1, v1

    const/4 v2, 0x0

    aget v1, v1, v2

    xor-int v4, v0, v1

    .line 558
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    const/4 v1, 0x0

    aget-object v1, p1, v1

    const/4 v2, 0x1

    aget v1, v1, v2

    xor-int v3, v0, v1

    .line 559
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    const/4 v1, 0x0

    aget-object v1, p1, v1

    const/4 v2, 0x2

    aget v1, v1, v2

    xor-int v2, v0, v1

    .line 561
    const/4 v1, 0x1

    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    const/4 v5, 0x0

    aget-object v5, p1, v5

    const/4 v6, 0x3

    aget v5, v5, v6

    xor-int/2addr v0, v5

    .line 562
    :goto_28
    iget v5, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    add-int/lit8 v5, v5, -0x1

    if-ge v1, v5, :cond_1ee

    .line 564
    sget-object v5, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v6, v4, 0xff

    aget v5, v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v7, v3, 0x8

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x18

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v7, v2, 0x10

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x10

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v7, v0, 0x18

    aget v6, v6, v7

    const/16 v7, 0x8

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    aget-object v6, p1, v1

    const/4 v7, 0x0

    aget v6, v6, v7

    xor-int/2addr v5, v6

    .line 565
    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v7, v3, 0xff

    aget v6, v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v8, v2, 0x8

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x18

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v8, v0, 0x10

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x10

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v8, v4, 0x18

    aget v7, v7, v8

    const/16 v8, 0x8

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    aget-object v7, p1, v1

    const/4 v8, 0x1

    aget v7, v7, v8

    xor-int/2addr v6, v7

    .line 566
    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v8, v2, 0xff

    aget v7, v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v9, v0, 0x8

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x18

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v9, v4, 0x10

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x10

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v9, v3, 0x18

    aget v8, v8, v9

    const/16 v9, 0x8

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    aget-object v8, p1, v1

    const/4 v9, 0x2

    aget v8, v8, v9

    xor-int/2addr v7, v8

    .line 567
    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v0, v0, 0xff

    aget v0, v8, v0

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v4, v4, 0x8

    and-int/lit16 v4, v4, 0xff

    aget v4, v8, v4

    const/16 v8, 0x18

    invoke-static {v4, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v4

    xor-int/2addr v0, v4

    sget-object v4, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v3, v3, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v3, v4, v3

    const/16 v4, 0x10

    invoke-static {v3, v4}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v3

    xor-int/2addr v0, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v2, v2, 0x18

    aget v2, v3, v2

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    add-int/lit8 v8, v1, 0x1

    aget-object v1, p1, v1

    const/4 v2, 0x3

    aget v1, v1, v2

    xor-int/2addr v0, v1

    .line 568
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v2, v5, 0xff

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v3, v6, 0x8

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x18

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v3, v7, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x10

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v3, v0, 0x18

    aget v2, v2, v3

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    aget-object v2, p1, v8

    const/4 v3, 0x0

    aget v2, v2, v3

    xor-int v4, v1, v2

    .line 569
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v2, v6, 0xff

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v3, v7, 0x8

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x18

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v3, v0, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v2, v2, v3

    const/16 v3, 0x10

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v3, v5, 0x18

    aget v2, v2, v3

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    aget-object v2, p1, v8

    const/4 v3, 0x1

    aget v2, v2, v3

    xor-int v3, v1, v2

    .line 570
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v2, v7, 0xff

    aget v1, v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v9, v0, 0x8

    and-int/lit16 v9, v9, 0xff

    aget v2, v2, v9

    const/16 v9, 0x18

    invoke-static {v2, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v9, v5, 0x10

    and-int/lit16 v9, v9, 0xff

    aget v2, v2, v9

    const/16 v9, 0x10

    invoke-static {v2, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    sget-object v2, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v9, v6, 0x18

    aget v2, v2, v9

    const/16 v9, 0x8

    invoke-static {v2, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v1, v2

    aget-object v2, p1, v8

    const/4 v9, 0x2

    aget v2, v2, v9

    xor-int/2addr v2, v1

    .line 571
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v0, v0, 0xff

    aget v0, v1, v0

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v5, v5, 0x8

    and-int/lit16 v5, v5, 0xff

    aget v1, v1, v5

    const/16 v5, 0x18

    invoke-static {v1, v5}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v5, v6, 0x10

    and-int/lit16 v5, v5, 0xff

    aget v1, v1, v5

    const/16 v5, 0x10

    invoke-static {v1, v5}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v5, v7, 0x18

    aget v1, v1, v5

    const/16 v5, 0x8

    invoke-static {v1, v5}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    xor-int/2addr v0, v1

    add-int/lit8 v1, v8, 0x1

    aget-object v5, p1, v8

    const/4 v6, 0x3

    aget v5, v5, v6

    xor-int/2addr v0, v5

    goto/16 :goto_28

    .line 574
    :cond_1ee
    sget-object v5, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v6, v4, 0xff

    aget v5, v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v7, v3, 0x8

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x18

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v7, v2, 0x10

    and-int/lit16 v7, v7, 0xff

    aget v6, v6, v7

    const/16 v7, 0x10

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v7, v0, 0x18

    aget v6, v6, v7

    const/16 v7, 0x8

    invoke-static {v6, v7}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    xor-int/2addr v5, v6

    aget-object v6, p1, v1

    const/4 v7, 0x0

    aget v6, v6, v7

    xor-int/2addr v5, v6

    .line 575
    sget-object v6, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v7, v3, 0xff

    aget v6, v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v8, v2, 0x8

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x18

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v8, v0, 0x10

    and-int/lit16 v8, v8, 0xff

    aget v7, v7, v8

    const/16 v8, 0x10

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v8, v4, 0x18

    aget v7, v7, v8

    const/16 v8, 0x8

    invoke-static {v7, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v7

    xor-int/2addr v6, v7

    aget-object v7, p1, v1

    const/4 v8, 0x1

    aget v7, v7, v8

    xor-int/2addr v6, v7

    .line 576
    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v8, v2, 0xff

    aget v7, v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v9, v0, 0x8

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x18

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v9, v4, 0x10

    and-int/lit16 v9, v9, 0xff

    aget v8, v8, v9

    const/16 v9, 0x10

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v9, v3, 0x18

    aget v8, v8, v9

    const/16 v9, 0x8

    invoke-static {v8, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v8

    xor-int/2addr v7, v8

    aget-object v8, p1, v1

    const/4 v9, 0x2

    aget v8, v8, v9

    xor-int/2addr v7, v8

    .line 577
    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    and-int/lit16 v0, v0, 0xff

    aget v0, v8, v0

    sget-object v8, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v4, v4, 0x8

    and-int/lit16 v4, v4, 0xff

    aget v4, v8, v4

    const/16 v8, 0x18

    invoke-static {v4, v8}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v4

    xor-int/2addr v0, v4

    sget-object v4, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    shr-int/lit8 v3, v3, 0x10

    and-int/lit16 v3, v3, 0xff

    aget v3, v4, v3

    const/16 v4, 0x10

    invoke-static {v3, v4}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v3

    xor-int/2addr v0, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->T0:[I

    ushr-int/lit8 v2, v2, 0x18

    aget v2, v3, v2

    const/16 v3, 0x8

    invoke-static {v2, v3}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    add-int/lit8 v2, v1, 0x1

    aget-object v1, p1, v1

    const/4 v3, 0x3

    aget v1, v1, v3

    xor-int/2addr v0, v1

    .line 581
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    and-int/lit16 v3, v5, 0xff

    aget-byte v1, v1, v3

    and-int/lit16 v1, v1, 0xff

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v4, v6, 0x8

    and-int/lit16 v4, v4, 0xff

    aget-byte v3, v3, v4

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x8

    xor-int/2addr v1, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v4, v7, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-byte v3, v3, v4

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x10

    xor-int/2addr v1, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    ushr-int/lit8 v4, v0, 0x18

    aget-byte v3, v3, v4

    shl-int/lit8 v3, v3, 0x18

    xor-int/2addr v1, v3

    aget-object v3, p1, v2

    const/4 v4, 0x0

    aget v3, v3, v4

    xor-int/2addr v1, v3

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    .line 582
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    and-int/lit16 v3, v6, 0xff

    aget-byte v1, v1, v3

    and-int/lit16 v1, v1, 0xff

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v4, v7, 0x8

    and-int/lit16 v4, v4, 0xff

    aget-byte v3, v3, v4

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x8

    xor-int/2addr v1, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v4, v0, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-byte v3, v3, v4

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x10

    xor-int/2addr v1, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    ushr-int/lit8 v4, v5, 0x18

    aget-byte v3, v3, v4

    shl-int/lit8 v3, v3, 0x18

    xor-int/2addr v1, v3

    aget-object v3, p1, v2

    const/4 v4, 0x1

    aget v3, v3, v4

    xor-int/2addr v1, v3

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    .line 583
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    and-int/lit16 v3, v7, 0xff

    aget-byte v1, v1, v3

    and-int/lit16 v1, v1, 0xff

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v4, v0, 0x8

    and-int/lit16 v4, v4, 0xff

    aget-byte v3, v3, v4

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x8

    xor-int/2addr v1, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v4, v5, 0x10

    and-int/lit16 v4, v4, 0xff

    aget-byte v3, v3, v4

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x10

    xor-int/2addr v1, v3

    sget-object v3, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    ushr-int/lit8 v4, v6, 0x18

    aget-byte v3, v3, v4

    shl-int/lit8 v3, v3, 0x18

    xor-int/2addr v1, v3

    aget-object v3, p1, v2

    const/4 v4, 0x2

    aget v3, v3, v4

    xor-int/2addr v1, v3

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    .line 584
    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    and-int/lit16 v0, v0, 0xff

    aget-byte v0, v1, v0

    and-int/lit16 v0, v0, 0xff

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v3, v5, 0x8

    and-int/lit16 v3, v3, 0xff

    aget-byte v1, v1, v3

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x8

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v3, v6, 0x10

    and-int/lit16 v3, v3, 0xff

    aget-byte v1, v1, v3

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    xor-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    ushr-int/lit8 v3, v7, 0x18

    aget-byte v1, v1, v3

    shl-int/lit8 v1, v1, 0x18

    xor-int/2addr v0, v1

    aget-object v1, p1, v2

    const/4 v2, 0x3

    aget v1, v1, v2

    xor-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    .line 585
    return-void
.end method

.method private generateWorkingKey([BZ)[[I
    .registers 16

    .prologue
    .line 284
    array-length v0, p1

    .line 285
    const/16 v1, 0x10

    if-lt v0, v1, :cond_d

    const/16 v1, 0x20

    if-gt v0, v1, :cond_d

    and-int/lit8 v1, v0, 0x7

    if-eqz v1, :cond_15

    .line 287
    :cond_d
    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "Key length not 128/192/256 bits."

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 290
    :cond_15
    ushr-int/lit8 v1, v0, 0x2

    .line 291
    add-int/lit8 v0, v1, 0x6

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    .line 292
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    add-int/lit8 v0, v0, 0x1

    const/4 v2, 0x4

    filled-new-array {v0, v2}, [I

    move-result-object v0

    sget-object v2, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

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

    move-result-object v0

    check-cast v0, [[I

    .line 294
    packed-switch v1, :pswitch_data_2ba

    .line 395
    :pswitch_2f
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Should never get here"

    invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 298
    :pswitch_37
    const/4 v1, 0x0

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v5

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x0

    aput v5, v1, v2

    .line 299
    const/4 v1, 0x4

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v4

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x1

    aput v4, v1, v2

    .line 300
    const/16 v1, 0x8

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v3

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x2

    aput v3, v1, v2

    .line 301
    const/16 v1, 0xc

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v2

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v6, 0x3

    aput v2, v1, v6

    .line 303
    const/4 v1, 0x1

    :goto_66
    const/16 v6, 0xa

    if-gt v1, v6, :cond_1be

    .line 305
    const/16 v6, 0x8

    invoke-static {v2, v6}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v6

    invoke-static {v6}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v6

    sget-object v7, Lorg/spongycastle/crypto/engines/AESEngine;->rcon:[I

    add-int/lit8 v8, v1, -0x1

    aget v7, v7, v8

    xor-int/2addr v6, v7

    .line 306
    xor-int/2addr v5, v6

    aget-object v6, v0, v1

    const/4 v7, 0x0

    aput v5, v6, v7

    .line 307
    xor-int/2addr v4, v5

    aget-object v6, v0, v1

    const/4 v7, 0x1

    aput v4, v6, v7

    .line 308
    xor-int/2addr v3, v4

    aget-object v6, v0, v1

    const/4 v7, 0x2

    aput v3, v6, v7

    .line 309
    xor-int/2addr v2, v3

    aget-object v6, v0, v1

    const/4 v7, 0x3

    aput v2, v6, v7

    .line 303
    add-int/lit8 v1, v1, 0x1

    goto :goto_66

    .line 316
    :pswitch_96
    const/4 v1, 0x0

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v1

    const/4 v2, 0x0

    aget-object v2, v0, v2

    const/4 v3, 0x0

    aput v1, v2, v3

    .line 317
    const/4 v2, 0x4

    invoke-static {p1, v2}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v3

    const/4 v2, 0x0

    aget-object v2, v0, v2

    const/4 v4, 0x1

    aput v3, v2, v4

    .line 318
    const/16 v2, 0x8

    invoke-static {p1, v2}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v4

    const/4 v2, 0x0

    aget-object v2, v0, v2

    const/4 v5, 0x2

    aput v4, v2, v5

    .line 319
    const/16 v2, 0xc

    invoke-static {p1, v2}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v5

    const/4 v2, 0x0

    aget-object v2, v0, v2

    const/4 v6, 0x3

    aput v5, v2, v6

    .line 320
    const/16 v2, 0x10

    invoke-static {p1, v2}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v9

    const/4 v2, 0x1

    aget-object v2, v0, v2

    const/4 v6, 0x0

    aput v9, v2, v6

    .line 321
    const/16 v2, 0x14

    invoke-static {p1, v2}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v10

    const/4 v2, 0x1

    aget-object v2, v0, v2

    const/4 v6, 0x1

    aput v10, v2, v6

    .line 324
    const/16 v2, 0x8

    invoke-static {v10, v2}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    invoke-static {v2}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v2

    xor-int/lit8 v6, v2, 0x1

    const/4 v2, 0x2

    .line 325
    xor-int v8, v1, v6

    const/4 v1, 0x1

    aget-object v1, v0, v1

    const/4 v6, 0x2

    aput v8, v1, v6

    .line 326
    xor-int v7, v3, v8

    const/4 v1, 0x1

    aget-object v1, v0, v1

    const/4 v3, 0x3

    aput v7, v1, v3

    .line 327
    xor-int v6, v4, v7

    const/4 v1, 0x2

    aget-object v1, v0, v1

    const/4 v3, 0x0

    aput v6, v1, v3

    .line 328
    xor-int/2addr v5, v6

    const/4 v1, 0x2

    aget-object v1, v0, v1

    const/4 v3, 0x1

    aput v5, v1, v3

    .line 329
    xor-int v4, v9, v5

    const/4 v1, 0x2

    aget-object v1, v0, v1

    const/4 v3, 0x2

    aput v4, v1, v3

    .line 330
    xor-int v3, v10, v4

    const/4 v1, 0x2

    aget-object v1, v0, v1

    const/4 v9, 0x3

    aput v3, v1, v9

    .line 332
    const/4 v1, 0x3

    :goto_119
    const/16 v9, 0xc

    if-ge v1, v9, :cond_192

    .line 334
    const/16 v9, 0x8

    invoke-static {v3, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v9

    invoke-static {v9}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v9

    xor-int/2addr v9, v2

    shl-int/lit8 v2, v2, 0x1

    .line 335
    xor-int/2addr v8, v9

    aget-object v9, v0, v1

    const/4 v10, 0x0

    aput v8, v9, v10

    .line 336
    xor-int/2addr v7, v8

    aget-object v9, v0, v1

    const/4 v10, 0x1

    aput v7, v9, v10

    .line 337
    xor-int/2addr v6, v7

    aget-object v9, v0, v1

    const/4 v10, 0x2

    aput v6, v9, v10

    .line 338
    xor-int/2addr v5, v6

    aget-object v9, v0, v1

    const/4 v10, 0x3

    aput v5, v9, v10

    .line 339
    xor-int/2addr v4, v5

    add-int/lit8 v9, v1, 0x1

    aget-object v9, v0, v9

    const/4 v10, 0x0

    aput v4, v9, v10

    .line 340
    xor-int/2addr v3, v4

    add-int/lit8 v9, v1, 0x1

    aget-object v9, v0, v9

    const/4 v10, 0x1

    aput v3, v9, v10

    .line 341
    const/16 v9, 0x8

    invoke-static {v3, v9}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v9

    invoke-static {v9}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v9

    xor-int/2addr v9, v2

    shl-int/lit8 v2, v2, 0x1

    .line 342
    xor-int/2addr v8, v9

    add-int/lit8 v9, v1, 0x1

    aget-object v9, v0, v9

    const/4 v10, 0x2

    aput v8, v9, v10

    .line 343
    xor-int/2addr v7, v8

    add-int/lit8 v9, v1, 0x1

    aget-object v9, v0, v9

    const/4 v10, 0x3

    aput v7, v9, v10

    .line 344
    xor-int/2addr v6, v7

    add-int/lit8 v9, v1, 0x2

    aget-object v9, v0, v9

    const/4 v10, 0x0

    aput v6, v9, v10

    .line 345
    xor-int/2addr v5, v6

    add-int/lit8 v9, v1, 0x2

    aget-object v9, v0, v9

    const/4 v10, 0x1

    aput v5, v9, v10

    .line 346
    xor-int/2addr v4, v5

    add-int/lit8 v9, v1, 0x2

    aget-object v9, v0, v9

    const/4 v10, 0x2

    aput v4, v9, v10

    .line 347
    xor-int/2addr v3, v4

    add-int/lit8 v9, v1, 0x2

    aget-object v9, v0, v9

    const/4 v10, 0x3

    aput v3, v9, v10

    .line 332
    add-int/lit8 v1, v1, 0x3

    goto :goto_119

    .line 350
    :cond_192
    const/16 v1, 0x8

    invoke-static {v3, v1}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    invoke-static {v1}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v1

    xor-int/lit16 v1, v1, 0x80

    .line 351
    xor-int/2addr v1, v8

    const/16 v2, 0xc

    aget-object v2, v0, v2

    const/4 v3, 0x0

    aput v1, v2, v3

    .line 352
    xor-int/2addr v1, v7

    const/16 v2, 0xc

    aget-object v2, v0, v2

    const/4 v3, 0x1

    aput v1, v2, v3

    .line 353
    xor-int/2addr v1, v6

    const/16 v2, 0xc

    aget-object v2, v0, v2

    const/4 v3, 0x2

    aput v1, v2, v3

    .line 354
    xor-int/2addr v1, v5

    const/16 v2, 0xc

    aget-object v2, v0, v2

    const/4 v3, 0x3

    aput v1, v2, v3

    .line 399
    :cond_1be
    :goto_1be
    if-nez p2, :cond_2b9

    .line 401
    const/4 v1, 0x1

    :goto_1c1
    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->ROUNDS:I

    if-ge v1, v2, :cond_2b9

    .line 403
    const/4 v2, 0x0

    :goto_1c6
    const/4 v3, 0x4

    if-ge v2, v3, :cond_2b5

    .line 405
    aget-object v3, v0, v1

    aget-object v4, v0, v1

    aget v4, v4, v2

    invoke-static {v4}, Lorg/spongycastle/crypto/engines/AESEngine;->inv_mcol(I)I

    move-result v4

    aput v4, v3, v2

    .line 403
    add-int/lit8 v2, v2, 0x1

    goto :goto_1c6

    .line 360
    :pswitch_1d8
    const/4 v1, 0x0

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v9

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x0

    aput v9, v1, v2

    .line 361
    const/4 v1, 0x4

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v8

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x1

    aput v8, v1, v2

    .line 362
    const/16 v1, 0x8

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v7

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x2

    aput v7, v1, v2

    .line 363
    const/16 v1, 0xc

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v6

    const/4 v1, 0x0

    aget-object v1, v0, v1

    const/4 v2, 0x3

    aput v6, v1, v2

    .line 364
    const/16 v1, 0x10

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v5

    const/4 v1, 0x1

    aget-object v1, v0, v1

    const/4 v2, 0x0

    aput v5, v1, v2

    .line 365
    const/16 v1, 0x14

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v4

    const/4 v1, 0x1

    aget-object v1, v0, v1

    const/4 v2, 0x1

    aput v4, v1, v2

    .line 366
    const/16 v1, 0x18

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v3

    const/4 v1, 0x1

    aget-object v1, v0, v1

    const/4 v2, 0x2

    aput v3, v1, v2

    .line 367
    const/16 v1, 0x1c

    invoke-static {p1, v1}, Lorg/spongycastle/util/Pack;->littleEndianToInt([BI)I

    move-result v10

    const/4 v1, 0x1

    aget-object v1, v0, v1

    const/4 v2, 0x3

    aput v10, v1, v2

    .line 369
    const/4 v2, 0x1

    .line 371
    const/4 v1, 0x2

    :goto_238
    const/16 v11, 0xe

    if-ge v1, v11, :cond_288

    .line 373
    const/16 v11, 0x8

    invoke-static {v10, v11}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v11

    invoke-static {v11}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v11

    xor-int/2addr v11, v2

    shl-int/lit8 v2, v2, 0x1

    .line 374
    xor-int/2addr v9, v11

    aget-object v11, v0, v1

    const/4 v12, 0x0

    aput v9, v11, v12

    .line 375
    xor-int/2addr v8, v9

    aget-object v11, v0, v1

    const/4 v12, 0x1

    aput v8, v11, v12

    .line 376
    xor-int/2addr v7, v8

    aget-object v11, v0, v1

    const/4 v12, 0x2

    aput v7, v11, v12

    .line 377
    xor-int/2addr v6, v7

    aget-object v11, v0, v1

    const/4 v12, 0x3

    aput v6, v11, v12

    .line 378
    invoke-static {v6}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v11

    .line 379
    xor-int/2addr v5, v11

    add-int/lit8 v11, v1, 0x1

    aget-object v11, v0, v11

    const/4 v12, 0x0

    aput v5, v11, v12

    .line 380
    xor-int/2addr v4, v5

    add-int/lit8 v11, v1, 0x1

    aget-object v11, v0, v11

    const/4 v12, 0x1

    aput v4, v11, v12

    .line 381
    xor-int/2addr v3, v4

    add-int/lit8 v11, v1, 0x1

    aget-object v11, v0, v11

    const/4 v12, 0x2

    aput v3, v11, v12

    .line 382
    xor-int/2addr v10, v3

    add-int/lit8 v11, v1, 0x1

    aget-object v11, v0, v11

    const/4 v12, 0x3

    aput v10, v11, v12

    .line 371
    add-int/lit8 v1, v1, 0x2

    goto :goto_238

    .line 385
    :cond_288
    const/16 v1, 0x8

    invoke-static {v10, v1}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v1

    invoke-static {v1}, Lorg/spongycastle/crypto/engines/AESEngine;->subWord(I)I

    move-result v1

    xor-int/2addr v1, v2

    .line 386
    xor-int/2addr v1, v9

    const/16 v2, 0xe

    aget-object v2, v0, v2

    const/4 v3, 0x0

    aput v1, v2, v3

    .line 387
    xor-int/2addr v1, v8

    const/16 v2, 0xe

    aget-object v2, v0, v2

    const/4 v3, 0x1

    aput v1, v2, v3

    .line 388
    xor-int/2addr v1, v7

    const/16 v2, 0xe

    aget-object v2, v0, v2

    const/4 v3, 0x2

    aput v1, v2, v3

    .line 389
    xor-int/2addr v1, v6

    const/16 v2, 0xe

    aget-object v2, v0, v2

    const/4 v3, 0x3

    aput v1, v2, v3

    goto/16 :goto_1be

    .line 401
    :cond_2b5
    add-int/lit8 v1, v1, 0x1

    goto/16 :goto_1c1

    .line 410
    :cond_2b9
    return-object v0

    .line 294
    :pswitch_data_2ba
    .packed-switch 0x4
        :pswitch_37
        :pswitch_2f
        :pswitch_96
        :pswitch_2f
        :pswitch_1d8
    .end packed-switch
.end method

.method private static inv_mcol(I)I
    .registers 4

    .prologue
    .line 264
    const/16 v0, 0x8

    invoke-static {p0, v0}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v0

    xor-int/2addr v0, p0

    .line 265
    invoke-static {v0}, Lorg/spongycastle/crypto/engines/AESEngine;->FFmulX(I)I

    move-result v1

    xor-int/2addr v1, p0

    .line 266
    invoke-static {v1}, Lorg/spongycastle/crypto/engines/AESEngine;->FFmulX2(I)I

    move-result v2

    xor-int/2addr v0, v2

    .line 267
    const/16 v2, 0x10

    invoke-static {v0, v2}, Lorg/spongycastle/crypto/engines/AESEngine;->shift(II)I

    move-result v2

    xor-int/2addr v0, v2

    xor-int/2addr v0, v1

    .line 268
    return v0
.end method

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

    .prologue
    .line 531
    .line 533
    add-int/lit8 v0, p2, 0x1

    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    int-to-byte v1, v1

    aput-byte v1, p1, p2

    .line 534
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    shr-int/lit8 v2, v2, 0x8

    int-to-byte v2, v2

    aput-byte v2, p1, v0

    .line 535
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    shr-int/lit8 v2, v2, 0x10

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 536
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    shr-int/lit8 v2, v2, 0x18

    aput-byte v2, p1, v0

    .line 538
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 539
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    shr-int/lit8 v2, v2, 0x8

    int-to-byte v2, v2

    aput-byte v2, p1, v0

    .line 540
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    shr-int/lit8 v2, v2, 0x10

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 541
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    shr-int/lit8 v2, v2, 0x18

    aput-byte v2, p1, v0

    .line 543
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 544
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    shr-int/lit8 v2, v2, 0x8

    int-to-byte v2, v2

    aput-byte v2, p1, v0

    .line 545
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    shr-int/lit8 v2, v2, 0x10

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 546
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    shr-int/lit8 v2, v2, 0x18

    aput-byte v2, p1, v0

    .line 548
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 549
    add-int/lit8 v1, v0, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    shr-int/lit8 v2, v2, 0x8

    int-to-byte v2, v2

    aput-byte v2, p1, v0

    .line 550
    add-int/lit8 v0, v1, 0x1

    iget v2, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    shr-int/lit8 v2, v2, 0x10

    int-to-byte v2, v2

    aput-byte v2, p1, v1

    .line 551
    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    shr-int/lit8 v1, v1, 0x18

    aput-byte v1, p1, v0

    .line 552
    return-void
.end method

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

    .prologue
    .line 226
    ushr-int v0, p0, p1

    neg-int v1, p1

    shl-int v1, p0, v1

    or-int/2addr v0, v1

    return v0
.end method

.method private static subWord(I)I
    .registers 4

    .prologue
    .line 273
    sget-object v0, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    and-int/lit16 v1, p0, 0xff

    aget-byte v0, v0, v1

    and-int/lit16 v0, v0, 0xff

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v2, p0, 0x8

    and-int/lit16 v2, v2, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x8

    or-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    shr-int/lit8 v2, p0, 0x10

    and-int/lit16 v2, v2, 0xff

    aget-byte v1, v1, v2

    and-int/lit16 v1, v1, 0xff

    shl-int/lit8 v1, v1, 0x10

    or-int/2addr v0, v1

    sget-object v1, Lorg/spongycastle/crypto/engines/AESEngine;->S:[B

    ushr-int/lit8 v2, p0, 0x18

    aget-byte v1, v1, v2

    shl-int/lit8 v1, v1, 0x18

    or-int/2addr v0, v1

    return v0
.end method

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

    .prologue
    .line 504
    .line 506
    add-int/lit8 v0, p2, 0x1

    aget-byte v1, p1, p2

    and-int/lit16 v1, v1, 0xff

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    .line 507
    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    add-int/lit8 v2, v0, 0x1

    aget-byte v0, p1, v0

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v0, v0, 0x8

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    .line 508
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    add-int/lit8 v1, v2, 0x1

    aget-byte v2, p1, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    or-int/2addr v0, v2

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    .line 509
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    add-int/lit8 v2, v1, 0x1

    aget-byte v1, p1, v1

    shl-int/lit8 v1, v1, 0x18

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C0:I

    .line 511
    add-int/lit8 v0, v2, 0x1

    aget-byte v1, p1, v2

    and-int/lit16 v1, v1, 0xff

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    .line 512
    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    add-int/lit8 v2, v0, 0x1

    aget-byte v0, p1, v0

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v0, v0, 0x8

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    .line 513
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    add-int/lit8 v1, v2, 0x1

    aget-byte v2, p1, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    or-int/2addr v0, v2

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    .line 514
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    add-int/lit8 v2, v1, 0x1

    aget-byte v1, p1, v1

    shl-int/lit8 v1, v1, 0x18

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C1:I

    .line 516
    add-int/lit8 v0, v2, 0x1

    aget-byte v1, p1, v2

    and-int/lit16 v1, v1, 0xff

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    .line 517
    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    add-int/lit8 v2, v0, 0x1

    aget-byte v0, p1, v0

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v0, v0, 0x8

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    .line 518
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    add-int/lit8 v1, v2, 0x1

    aget-byte v2, p1, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    or-int/2addr v0, v2

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    .line 519
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    add-int/lit8 v2, v1, 0x1

    aget-byte v1, p1, v1

    shl-int/lit8 v1, v1, 0x18

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C2:I

    .line 521
    add-int/lit8 v0, v2, 0x1

    aget-byte v1, p1, v2

    and-int/lit16 v1, v1, 0xff

    iput v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    .line 522
    iget v1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    add-int/lit8 v2, v0, 0x1

    aget-byte v0, p1, v0

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v0, v0, 0x8

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    .line 523
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    add-int/lit8 v1, v2, 0x1

    aget-byte v2, p1, v2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x10

    or-int/2addr v0, v2

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    .line 524
    iget v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    aget-byte v1, p1, v1

    shl-int/lit8 v1, v1, 0x18

    or-int/2addr v0, v1

    iput v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->C3:I

    .line 525
    return-void
.end method


# virtual methods
.method public getAlgorithmName()Ljava/lang/String;
    .registers 2

    .prologue
    .line 451
    const-string v0, "AES"

    return-object v0
.end method

.method public getBlockSize()I
    .registers 2

    .prologue
    .line 456
    const/16 v0, 0x10

    return v0
.end method

.method public init(ZLorg/spongycastle/crypto/CipherParameters;)V
    .registers 6

    .prologue
    .line 439
    instance-of v0, p2, Lorg/spongycastle/crypto/params/KeyParameter;

    if-eqz v0, :cond_13

    .line 441
    check-cast p2, Lorg/spongycastle/crypto/params/KeyParameter;

    invoke-virtual {p2}, Lorg/spongycastle/crypto/params/KeyParameter;->getKey()[B

    move-result-object v0

    invoke-direct {p0, v0, p1}, Lorg/spongycastle/crypto/engines/AESEngine;->generateWorkingKey([BZ)[[I

    move-result-object v0

    iput-object v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->WorkingKey:[[I

    .line 442
    iput-boolean p1, p0, Lorg/spongycastle/crypto/engines/AESEngine;->forEncryption:Z

    .line 443
    return-void

    .line 446
    :cond_13
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "invalid parameter passed to AES init - "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0
.end method

.method public processBlock([BI[BI)I
    .registers 7

    .prologue
    .line 465
    iget-object v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->WorkingKey:[[I

    if-nez v0, :cond_c

    .line 467
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "AES engine not initialised"

    invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 470
    :cond_c
    add-int/lit8 v0, p2, 0x10

    array-length v1, p1

    if-le v0, v1, :cond_19

    .line 472
    new-instance v0, Lorg/spongycastle/crypto/DataLengthException;

    const-string v1, "input buffer too short"

    invoke-direct {v0, v1}, Lorg/spongycastle/crypto/DataLengthException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 475
    :cond_19
    add-int/lit8 v0, p4, 0x10

    array-length v1, p3

    if-le v0, v1, :cond_26

    .line 477
    new-instance v0, Lorg/spongycastle/crypto/OutputLengthException;

    const-string v1, "output buffer too short"

    invoke-direct {v0, v1}, Lorg/spongycastle/crypto/OutputLengthException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 480
    :cond_26
    iget-boolean v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->forEncryption:Z

    if-eqz v0, :cond_38

    .line 482
    invoke-direct {p0, p1, p2}, Lorg/spongycastle/crypto/engines/AESEngine;->unpackBlock([BI)V

    .line 483
    iget-object v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->WorkingKey:[[I

    invoke-direct {p0, v0}, Lorg/spongycastle/crypto/engines/AESEngine;->encryptBlock([[I)V

    .line 484
    invoke-direct {p0, p3, p4}, Lorg/spongycastle/crypto/engines/AESEngine;->packBlock([BI)V

    .line 493
    :goto_35
    const/16 v0, 0x10

    return v0

    .line 488
    :cond_38
    invoke-direct {p0, p1, p2}, Lorg/spongycastle/crypto/engines/AESEngine;->unpackBlock([BI)V

    .line 489
    iget-object v0, p0, Lorg/spongycastle/crypto/engines/AESEngine;->WorkingKey:[[I

    invoke-direct {p0, v0}, Lorg/spongycastle/crypto/engines/AESEngine;->decryptBlock([[I)V

    .line 490
    invoke-direct {p0, p3, p4}, Lorg/spongycastle/crypto/engines/AESEngine;->packBlock([BI)V

    goto :goto_35
.end method

.method public reset()V
    .registers 1

    .prologue
    .line 498
    return-void
.end method