CamelliaEngine.smali
.class public Lorg/spongycastle/crypto/engines/CamelliaEngine;
.super Ljava/lang/Object;
.source "CamelliaEngine.java"
# interfaces
.implements Lorg/spongycastle/crypto/BlockCipher;
# static fields
.field private static final BLOCK_SIZE:I = 0x10
.field private static final MASK8:I = 0xff
.field private static final SBOX1_1110:[I
.field private static final SBOX2_0222:[I
.field private static final SBOX3_3033:[I
.field private static final SBOX4_4404:[I
.field private static final SIGMA:[I
# instance fields
.field private _keyIs128:Z
.field private initialised:Z
.field private ke:[I
.field private kw:[I
.field private state:[I
.field private subkey:[I
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
const/16 v1, 0x100
.line 26
const/16 v0, 0xc
new-array v0, v0, [I
fill-array-data v0, :array_28
sput-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SIGMA:[I
.line 40
new-array v0, v1, [I
fill-array-data v0, :array_44
sput-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX1_1110:[I
.line 86
new-array v0, v1, [I
fill-array-data v0, :array_248
sput-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX4_4404:[I
.line 132
new-array v0, v1, [I
fill-array-data v0, :array_44c
sput-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX2_0222:[I
.line 178
new-array v0, v1, [I
fill-array-data v0, :array_650
sput-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX3_3033:[I
return-void
.line 26
:array_28
.array-data 4
-0x5f619981
0x3bcc908b
-0x498517a8
0x4caa73b2 # 8.9365904E7f
-0x3910c8d1
-0x16b07d42
0x54ff53a5
-0xe2c90e4
0x10e527fa
-0x2197d2e3
-0x4fa9773e
-0x4c193e03
.end array-data
.line 40
:array_44
.array-data 4
0x70707000
-0x7d7d7e00
0x2c2c2c00
-0x13131400
-0x4c4c4d00
0x27272700
-0x3f3f4000 # -6.0234375f
-0x1a1a1b00
-0x1b1b1c00
-0x7a7a7b00
0x57575700
0x35353500
-0x15151600
0xc0c0c00
-0x51515200
0x41414100
0x23232300
-0x10101100
0x6b6b6b00
-0x6c6c6d00
0x45454500 # 3156.3125f
0x19191900
-0x5a5a5b00
0x21212100
-0x12121300
0xe0e0e00
0x4f4f4f00
0x4e4e4e00 # 8.6530458E8f
0x1d1d1d00
0x65656500
-0x6d6d6e00
-0x42424300
-0x79797a00
-0x47474800
-0x50505100
-0x70707100
0x7c7c7c00
-0x14141500
0x1f1f1f00
-0x31313200
0x3e3e3e00
0x30303000
-0x23232400
0x5f5f5f00
0x5e5e5e00
-0x3a3a3b00 # -6328.625f
0xb0b0b00
0x1a1a1a00
-0x59595a00
-0x1e1e1f00
0x39393900
-0x35353600 # -6644992.0f
-0x2a2a2b00
0x47474700 # 51015.0f
0x5d5d5d00
0x3d3d3d00
-0x26262700
0x1010100
0x5a5a5a00
-0x29292a00
0x51515100
0x56565600
0x6c6c6c00
0x4d4d4d00 # 2.15273472E8f
-0x74747500 # -5.3749996E-32f
0xd0d0d00
-0x65656600
0x66666600
-0x4040500
-0x33333400
-0x4f4f5000
0x2d2d2d00
0x74747400
0x12121200
0x2b2b2b00
0x20202000
-0xf0f1000
-0x4e4e4f00
-0x7b7b7c00
-0x66666700
-0x20202100
0x4c4c4c00 # 5.35552E7f
-0x34343500 # -2.6711552E7f
-0x3d3d3e00
0x34343400
0x7e7e7e00
0x76767600
0x5050500
0x6d6d6d00
-0x48484900
-0x56565700
0x31313100
-0x2e2e2f00
0x17171700
0x4040400
-0x28282900
0x14141400
0x58585800
0x3a3a3a00
0x61616100
-0x21212200
0x1b1b1b00
0x11111100
0x1c1c1c00
0x32323200
0xf0f0f00
-0x63636400
0x16161600
0x53535300
0x18181800
-0xd0d0e00
0x22222200
-0x1010200
0x44444400 # 785.0625f
-0x30303100
-0x4d4d4e00
-0x3c3c3d00
-0x4a4a4b00
0x7a7a7a00
-0x6e6e6f00
0x24242400
0x8080800
-0x17171800
-0x57575800
0x60606000
-0x3030400
0x69696900
0x50505000
-0x55555600
-0x2f2f3000
-0x5f5f6000
0x7d7d7d00
-0x5e5e5f00
-0x76767700
0x62626200
-0x68686900
0x54545400
0x5b5b5b00
0x1e1e1e00
-0x6a6a6b00
-0x1f1f2000
-0x100
0x64646400
-0x2d2d2e00
0x10101000
-0x3b3b3c00 # -1574.125f
0x0
0x48484800 # 205088.0f
-0x5c5c5d00
-0x8080900
0x75757500
-0x24242500
-0x75757600
0x3030300
-0x19191a00
-0x25252600
0x9090900
0x3f3f3f00
-0x22222300
-0x6b6b6c00
-0x78787900
0x5c5c5c00
-0x7c7c7d00
0x2020200
-0x32323300 # -4.3159552E8f
0x4a4a4a00 # 3314304.0f
-0x6f6f7000
0x33333300
0x73737300
0x67676700
-0x9090a00
-0xc0c0d00
-0x62626300
0x7f7f7f00
-0x40404100
-0x1d1d1e00
0x52525200
-0x64646500
-0x27272800
0x26262600
-0x37373800 # -411200.0f
0x37373700
-0x39393a00 # -25443.0f
0x3b3b3b00
-0x7e7e7f00
-0x69696a00
0x6f6f6f00
0x4b4b4b00
0x13131300
-0x41414200
0x63636300
0x2e2e2e00
-0x16161700
0x79797900
-0x58585900
-0x73737400
-0x60606100
0x6e6e6e00
-0x43434400
-0x71717200
0x29292900 # 3.75611E-14f
-0xa0a0b00
-0x6060700
-0x49494a00
0x2f2f2f00
-0x2020300
-0x4b4b4c00
0x59595900
0x78787800
-0x67676800
0x6060600
0x6a6a6a00
-0x18181900
0x46464600 # 12689.5f
0x71717100
-0x45454600
-0x2b2b2c00
0x25252500
-0x54545500
0x42424200
-0x77777800
-0x5d5d5e00
-0x72727300
-0x5050600
0x72727200
0x7070700
-0x46464700
0x55555500
-0x7070800
-0x11111200
-0x53535400
0xa0a0a00
0x36363600
0x49494900 # 824464.0f
0x2a2a2a00
0x68686800
0x3c3c3c00
0x38383800
-0xe0e0f00
-0x5b5b5c00
0x40404000 # 3.0039062f
0x28282800
-0x2c2c2d00
0x7b7b7b00
-0x44444500
-0x36363700 # -1653024.0f
0x43434300
-0x3e3e3f00
0x15151500
-0x1c1c1d00
-0x52525300
-0xb0b0c00
0x77777700
-0x38383900 # -102286.0f
-0x7f7f8000
-0x61616200
.end array-data
.line 86
:array_248
.array-data 4
0x70700070
0x2c2c002c
-0x4c4cff4d
-0x3f3fff40 # -6.0000916f
-0x1b1bff1c
0x57570057
-0x1515ff16
-0x5151ff52
0x23230023
0x6b6b006b
0x45450045
-0x5a5aff5b
-0x1212ff13
0x4f4f004f
0x1d1d001d
-0x6d6dff6e
-0x7979ff7a
-0x5050ff51
0x7c7c007c
0x1f1f001f
0x3e3e003e
-0x2323ff24
0x5e5e005e # 3.99922231E18f
0xb0b000b
-0x5959ff5a
0x39390039
-0x2a2aff2b
0x5d5d005d
-0x2626ff27
0x5a5a005a
0x51510051
0x6c6c006c
-0x7474ff75
-0x6565ff66
-0x404ff05
-0x4f4fff50
0x74740074
0x2b2b002b
-0xf0fff10
-0x7b7bff7c
-0x2020ff21
-0x3434ff35 # -2.6608022E7f
0x34340034
0x76760076
0x6d6d006d
-0x5656ff57
-0x2e2eff2f
0x4040004
0x14140014
0x3a3a003a
-0x2121ff22
0x11110011
0x32320032
-0x6363ff64
0x53530053
-0xd0dff0e
-0x101ff02
-0x3030ff31
-0x3c3cff3d # -390.00595f
0x7a7a007a
0x24240024
-0x1717ff18
0x60600060
0x69690069
-0x5555ff56
-0x5f5fff60
-0x5e5eff5f
0x62620062
0x54540054
0x1e1e001e
-0x1f1fff20
0x64640064
0x10100010
0x0
-0x5c5cff5d
0x75750075
-0x7575ff76
-0x1919ff1a
0x9090009
-0x2222ff23
-0x7878ff79
-0x7c7cff7d
-0x3232ff33 # -4.2992272E8f
-0x6f6fff70
0x73730073
-0x909ff0a
-0x6262ff63
-0x4040ff41
0x52520052
-0x2727ff28 # -1.89998508E15f
-0x3737ff38 # -409606.25f
-0x3939ff3a
-0x7e7eff7f
0x6f6f006f
0x13130013
0x63630063
-0x1616ff17
-0x5858ff59
-0x6060ff61
-0x4343ff44
0x29290029
-0x606ff07
0x2f2f002f
-0x4b4bff4c
0x78780078
0x6060006
-0x1818ff19
0x71710071
-0x2b2bff2c
-0x5454ff55
-0x7777ff78
-0x7272ff73
0x72720072
-0x4646ff47
-0x707ff08
-0x5353ff54
0x36360036
0x2a2a002a
0x3c3c003c
-0xe0eff0f
0x40400040 # 3.0000153f
-0x2c2cff2d
-0x4444ff45
0x43430043
0x15150015
-0x5252ff53
0x77770077 # 5.009792E33f
-0x7f7fff80
-0x7d7dff7e
-0x1313ff14
0x27270027
-0x1a1aff1b
-0x7a7aff7b
0x35350035
0xc0c000c
0x41410041
-0x1010ff11
-0x6c6cff6d
0x19190019
0x21210021
0xe0e000e
0x4e4e004e # 8.6403162E8f
0x65650065
-0x4242ff43
-0x4747ff48
-0x7070ff71
-0x1414ff15
-0x3131ff32
0x30300030
0x5f5f005f
-0x3a3aff3b
0x1a1a001a
-0x1e1eff1f
-0x3535ff36 # -6619237.0f
0x47470047
0x3d3d003d
0x1010001
-0x2929ff2a
0x56560056
0x4d4d004d # 2.14959312E8f
0xd0d000d
0x66660066
-0x3333ff34
0x2d2d002d
0x12120012
0x20200020
-0x4e4eff4f
-0x6666ff67
0x4c4c004c # 5.347768E7f
-0x3d3dff3e
0x7e7e007e
0x5050005
-0x4848ff49
0x31310031
0x17170017
-0x2828ff29
0x58580058
0x61610061
0x1b1b001b
0x1c1c001c
0xf0f000f
0x16160016
0x18180018
0x22220022
0x44440044
-0x4d4dff4e
-0x4a4aff4b
-0x6e6eff6f
0x8080008
-0x5757ff58
-0x303ff04
0x50500050
-0x2f2fff30
0x7d7d007d
-0x7676ff77
-0x6868ff69
0x5b5b005b
-0x6a6aff6b
-0xff01
-0x2d2dff2e
-0x3b3bff3c
0x48480048 # 204801.12f
-0x808ff09
-0x2424ff25
0x3030003
-0x2525ff26
0x3f3f003f
-0x6b6bff6c
0x5c5c005c
0x2020002
0x4a4a004a # 3309586.5f
0x33330033
0x67670067
-0xc0cff0d
0x7f7f007f
-0x1d1dff1e
-0x6464ff65
0x26260026
0x37370037 # 1.09077E-5f
0x3b3b003b
-0x6969ff6a
0x4b4b004b # 1.3303883E7f
-0x4141ff42
0x2e2e002e
0x79790079
-0x7373ff74
0x6e6e006e
-0x7171ff72
-0xa0aff0b
-0x4949ff4a
-0x202ff03
0x59590059
-0x6767ff68
0x6a6a006a
0x46460046
-0x4545ff46
0x25250025
0x42420042
-0x5d5dff5e
-0x505ff06
0x7070007
0x55550055
-0x1111ff12
0xa0a000a
0x49490049
0x68680068
0x38380038
-0x5b5bff5c
0x28280028
0x7b7b007b
-0x3636ff37
-0x3e3eff3f
-0x1c1cff1d
-0xb0bff0c
-0x3838ff39
-0x6161ff62
.end array-data
.line 132
:array_44c
.array-data 4
0xe0e0e0
0x50505
0x585858
0xd9d9d9 # 2.0006452E-38f
0x676767
0x4e4e4e
0x818181
0xcbcbcb
0xc9c9c9
0xb0b0b
0xaeaeae
0x6a6a6a
0xd5d5d5
0x181818
0x5d5d5d
0x828282
0x464646
0xdfdfdf
0xd6d6d6
0x272727
0x8a8a8a
0x323232
0x4b4b4b
0x424242
0xdbdbdb
0x1c1c1c
0x9e9e9e
0x9c9c9c
0x3a3a3a
0xcacaca
0x252525
0x7b7b7b
0xd0d0d
0x717171
0x5f5f5f
0x1f1f1f
0xf8f8f8
0xd7d7d7
0x3e3e3e
0x9d9d9d
0x7c7c7c
0x606060
0xb9b9b9
0xbebebe
0xbcbcbc
0x8b8b8b
0x161616
0x343434
0x4d4d4d
0xc3c3c3
0x727272
0x959595
0xababab
0x8e8e8e
0xbababa
0x7a7a7a
0xb3b3b3
0x20202
0xb4b4b4
0xadadad
0xa2a2a2
0xacacac
0xd8d8d8
0x9a9a9a
0x171717
0x1a1a1a
0x353535
0xcccccc
0xf7f7f7
0x999999
0x616161
0x5a5a5a
0xe8e8e8
0x242424
0x565656
0x404040
0xe1e1e1
0x636363
0x90909
0x333333
0xbfbfbf
0x989898
0x979797
0x858585
0x686868
0xfcfcfc
0xececec
0xa0a0a
0xdadada
0x6f6f6f
0x535353
0x626262
0xa3a3a3
0x2e2e2e
0x80808
0xafafaf
0x282828
0xb0b0b0
0x747474
0xc2c2c2
0xbdbdbd
0x363636
0x222222
0x383838
0x646464
0x1e1e1e
0x393939
0x2c2c2c
0xa6a6a6
0x303030
0xe5e5e5
0x444444
0xfdfdfd
0x888888
0x9f9f9f
0x656565
0x878787
0x6b6b6b
0xf4f4f4
0x232323
0x484848
0x101010
0xd1d1d1
0x515151
0xc0c0c0
0xf9f9f9
0xd2d2d2
0xa0a0a0
0x555555
0xa1a1a1
0x414141
0xfafafa
0x434343
0x131313
0xc4c4c4
0x2f2f2f
0xa8a8a8
0xb6b6b6
0x3c3c3c
0x2b2b2b
0xc1c1c1
0xffffff
0xc8c8c8
0xa5a5a5
0x202020
0x898989
0x0
0x909090
0x474747
0xefefef
0xeaeaea
0xb7b7b7
0x151515
0x60606
0xcdcdcd
0xb5b5b5
0x121212
0x7e7e7e
0xbbbbbb
0x292929
0xf0f0f
0xb8b8b8
0x70707
0x40404
0x9b9b9b
0x949494
0x212121
0x666666
0xe6e6e6
0xcecece
0xededed
0xe7e7e7
0x3b3b3b
0xfefefe
0x7f7f7f
0xc5c5c5
0xa4a4a4
0x373737
0xb1b1b1
0x4c4c4c
0x919191
0x6e6e6e
0x8d8d8d # 1.2999584E-38f
0x767676
0x30303
0x2d2d2d
0xdedede
0x969696
0x262626
0x7d7d7d
0xc6c6c6
0x5c5c5c
0xd3d3d3
0xf2f2f2
0x4f4f4f
0x191919
0x3f3f3f
0xdcdcdc
0x797979
0x1d1d1d
0x525252
0xebebeb
0xf3f3f3
0x6d6d6d
0x5e5e5e
0xfbfbfb
0x696969
0xb2b2b2
0xf0f0f0
0x313131
0xc0c0c
0xd4d4d4
0xcfcfcf
0x8c8c8c
0xe2e2e2
0x757575
0xa9a9a9
0x4a4a4a
0x575757
0x848484
0x111111
0x454545
0x1b1b1b
0xf5f5f5
0xe4e4e4
0xe0e0e
0x737373
0xaaaaaa
0xf1f1f1
0xdddddd
0x595959
0x141414
0x6c6c6c
0x929292
0x545454
0xd0d0d0
0x787878
0x707070
0xe3e3e3
0x494949
0x808080
0x505050
0xa7a7a7
0xf6f6f6
0x777777
0x939393
0x868686
0x838383
0x2a2a2a
0xc7c7c7
0x5b5b5b
0xe9e9e9
0xeeeeee
0x8f8f8f
0x10101
0x3d3d3d
.end array-data
.line 178
:array_650
.array-data 4
0x38003838
0x41004141
0x16001616
0x76007676
-0x26ff2627
-0x6cff6c6d
0x60006060
-0xdff0d0e
0x72007272
-0x3dff3d3e
-0x54ff5455
-0x65ff6566
0x75007575
0x6000606
0x57005757
-0x5fff5f60
-0x6eff6e6f
-0x8ff0809
-0x4aff4a4b
-0x36ff3637
-0x5dff5d5e
-0x73ff7374
-0x2dff2d2e
-0x6fff6f70
-0x9ff090a
0x7000707
-0x58ff5859
0x27002727
-0x71ff7172
-0x4dff4d4e
0x49004949
-0x21ff2122
0x43004343
0x5c005c5c
-0x28ff2829
-0x38ff3839
0x3e003e3e
-0xaff0a0b
-0x70ff7071
0x67006767
0x1f001f1f
0x18001818
0x6e006e6e
-0x50ff5051
0x2f002f2f
-0x1dff1d1e
-0x7aff7a7b
0xd000d0d
0x53005353
-0xfff0f10
-0x63ff6364
0x65006565
-0x15ff1516
-0x5cff5c5d
-0x51ff5152
-0x61ff6162
-0x13ff1314
-0x7fff7f80
0x2d002d2d
0x6b006b6b
-0x57ff5758
0x2b002b2b
0x36003636
-0x59ff595a
-0x3aff3a3b
-0x79ff797a
0x4d004d4d # 1.34534352E8f
0x33003333
-0x2ff0203
0x66006666
0x58005858
-0x69ff696a
0x3a003a3a
0x9000909
-0x6aff6a6b
0x10001010
0x78007878
-0x27ff2728
0x42004242
-0x33ff3334 # -3.3764144E7f
-0x10ff1011
0x26002626
-0x1aff1a1b
0x61006161
0x1a001a1a
0x3f003f3f
0x3b003b3b
-0x7dff7d7e
-0x49ff494a
-0x24ff2425
-0x2bff2b2c
-0x67ff6768
-0x17ff1718
-0x74ff7475
0x2000202
-0x14ff1415
0xa000a0a
0x2c002c2c
0x1d001d1d
-0x4fff4f50
0x6f006f6f
-0x72ff7273
-0x77ff7778
0xe000e0e
0x19001919
-0x78ff7879
0x4e004e4e # 5.3815386E8f
0xb000b0b
-0x56ff5657
0xc000c0c
0x79007979
0x11001111
0x7f007f7f
0x22002222
-0x18ff1819
0x59005959
-0x1eff1e1f
-0x25ff2526
0x3d003d3d
-0x37ff3738
0x12001212
0x4000404
0x74007474
0x54005454
0x30003030
0x7e007e7e
-0x4bff4b4c
0x28002828
0x55005555 # 8.8189992E12f
0x68006868
0x50005050
-0x41ff4142
-0x2fff2f30
-0x3bff3b3c
0x31003131
-0x34ff3435 # -8440779.0f
0x2a002a2a
-0x52ff5253
0xf000f0f
-0x35ff3536
0x70007070 # 1.5900004E29f
-0xff0001
0x32003232
0x69006969
0x8000808
0x62006262
0x0
0x24002424
-0x2eff2e2f
-0x4ff0405
-0x45ff4546
-0x12ff1213
0x45004545
-0x7eff7e7f
0x73007373
0x6d006d6d
-0x7bff7b7c
-0x60ff6061
-0x11ff1112
0x4a004a4a # 2101906.5f
-0x3cff3c3d
0x2e002e2e
-0x3eff3e3f
0x1000101
-0x19ff191a
0x25002525
0x48004848 # 131361.12f
-0x66ff6667
-0x46ff4647
-0x4cff4c4d
0x7b007b7b
-0x6ff0607
-0x31ff3132 # -5.402592E8f
-0x40ff4041
-0x20ff2021
0x71007171
0x29002929
-0x32ff3233
0x6c006c6c
0x13001313
0x64006464
-0x64ff6465
0x63006363
-0x62ff6263
-0x3fff3f40
0x4b004b4b # 8407883.0f
-0x48ff4849
-0x5aff5a5b
-0x76ff7677
0x5f005f5f
-0x4eff4e4f
0x17001717
-0xbff0b0c
-0x43ff4344
-0x2cff2c2d
0x46004646
-0x30ff3031
0x37003737
0x5e005e5e
0x47004747
-0x6bff6b6c
-0x5ff0506
-0x3ff0304
0x5b005b5b
-0x68ff6869
-0x1ff0102
0x5a005a5a
-0x53ff5354
0x3c003c3c
0x4c004c4c # 3.363256E7f
0x3000303
0x35003535
-0xcff0c0d
0x23002323
-0x47ff4748
0x5d005d5d
0x6a006a6a
-0x6dff6d6e
-0x2aff2a2b
0x21002121
0x44004444
0x51005151
-0x39ff393a
0x7d007d7d
0x39003939
-0x7cff7c7d
-0x23ff2324
-0x55ff5556
0x7c007c7c
0x77007777
0x56005656
0x5000505
0x1b001b1b
-0x5bff5b5c
0x15001515
0x34003434
0x1e001e1e
0x1c001c1c
-0x7ff0708
0x52005252
0x20002020
0x14001414
-0x16ff1617
-0x42ff4243
-0x22ff2223
-0x1bff1b1c
-0x5eff5e5f # -4.3582E-19f
-0x1fff1f20
-0x75ff7576
-0xeff0e0f
-0x29ff292a
0x7a007a7a
-0x44ff4445
-0x1cff1c1d
0x40004040
0x4f004f4f
.end array-data
.end method
.method public constructor <init>()V
.registers 2
.prologue
.line 622
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 15
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->initialised:Z
.line 21
const/16 v0, 0x60
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
.line 22
const/16 v0, 0x8
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
.line 23
const/16 v0, 0xc
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
.line 24
const/4 v0, 0x4
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
.line 623
return-void
.end method
.method private bytes2int([BI)I
.registers 6
.prologue
const/4 v0, 0x0
.line 288
move v1, v0
.line 290
:goto_2
const/4 v2, 0x4
if-ge v0, v2, :cond_11
.line 292
shl-int/lit8 v1, v1, 0x8
add-int v2, v0, p2
aget-byte v2, p1, v2
and-int/lit16 v2, v2, 0xff
add-int/2addr v1, v2
.line 290
add-int/lit8 v0, v0, 0x1
goto :goto_2
.line 294
:cond_11
return v1
.end method
.method private camelliaF2([I[II)V
.registers 14
.prologue
const/16 v9, 0x8
const/4 v8, 0x3
const/4 v7, 0x2
const/4 v6, 0x1
const/4 v5, 0x0
.line 310
aget v0, p1, v5
aget v1, p2, p3
xor-int/2addr v0, v1
.line 311
sget-object v1, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX4_4404:[I
and-int/lit16 v2, v0, 0xff
aget v1, v1, v2
.line 312
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX3_3033:[I
ushr-int/lit8 v3, v0, 0x8
and-int/lit16 v3, v3, 0xff
aget v2, v2, v3
xor-int/2addr v1, v2
.line 313
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX2_0222:[I
ushr-int/lit8 v3, v0, 0x10
and-int/lit16 v3, v3, 0xff
aget v2, v2, v3
xor-int/2addr v1, v2
.line 314
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX1_1110:[I
ushr-int/lit8 v0, v0, 0x18
aget v0, v2, v0
xor-int/2addr v0, v1
.line 315
aget v1, p1, v6
add-int/lit8 v2, p3, 0x1
aget v2, p2, v2
xor-int/2addr v1, v2
.line 316
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX1_1110:[I
and-int/lit16 v3, v1, 0xff
aget v2, v2, v3
.line 317
sget-object v3, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX4_4404:[I
ushr-int/lit8 v4, v1, 0x8
and-int/lit16 v4, v4, 0xff
aget v3, v3, v4
xor-int/2addr v2, v3
.line 318
sget-object v3, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX3_3033:[I
ushr-int/lit8 v4, v1, 0x10
and-int/lit16 v4, v4, 0xff
aget v3, v3, v4
xor-int/2addr v2, v3
.line 319
sget-object v3, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX2_0222:[I
ushr-int/lit8 v1, v1, 0x18
aget v1, v3, v1
xor-int/2addr v1, v2
.line 321
aget v2, p1, v7
xor-int v3, v0, v1
xor-int/2addr v2, v3
aput v2, p1, v7
.line 322
aget v2, p1, v8
xor-int/2addr v1, v0
invoke-static {v0, v9}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->rightRotate(II)I
move-result v0
xor-int/2addr v0, v1
xor-int/2addr v0, v2
aput v0, p1, v8
.line 324
aget v0, p1, v7
add-int/lit8 v1, p3, 0x2
aget v1, p2, v1
xor-int/2addr v0, v1
.line 325
sget-object v1, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX4_4404:[I
and-int/lit16 v2, v0, 0xff
aget v1, v1, v2
.line 326
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX3_3033:[I
ushr-int/lit8 v3, v0, 0x8
and-int/lit16 v3, v3, 0xff
aget v2, v2, v3
xor-int/2addr v1, v2
.line 327
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX2_0222:[I
ushr-int/lit8 v3, v0, 0x10
and-int/lit16 v3, v3, 0xff
aget v2, v2, v3
xor-int/2addr v1, v2
.line 328
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX1_1110:[I
ushr-int/lit8 v0, v0, 0x18
aget v0, v2, v0
xor-int/2addr v0, v1
.line 329
aget v1, p1, v8
add-int/lit8 v2, p3, 0x3
aget v2, p2, v2
xor-int/2addr v1, v2
.line 330
sget-object v2, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX1_1110:[I
and-int/lit16 v3, v1, 0xff
aget v2, v2, v3
.line 331
sget-object v3, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX4_4404:[I
ushr-int/lit8 v4, v1, 0x8
and-int/lit16 v4, v4, 0xff
aget v3, v3, v4
xor-int/2addr v2, v3
.line 332
sget-object v3, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX3_3033:[I
ushr-int/lit8 v4, v1, 0x10
and-int/lit16 v4, v4, 0xff
aget v3, v3, v4
xor-int/2addr v2, v3
.line 333
sget-object v3, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SBOX2_0222:[I
ushr-int/lit8 v1, v1, 0x18
aget v1, v3, v1
xor-int/2addr v1, v2
.line 335
aget v2, p1, v5
xor-int v3, v0, v1
xor-int/2addr v2, v3
aput v2, p1, v5
.line 336
aget v2, p1, v6
xor-int/2addr v1, v0
invoke-static {v0, v9}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->rightRotate(II)I
move-result v0
xor-int/2addr v0, v1
xor-int/2addr v0, v2
aput v0, p1, v6
.line 337
return-void
.end method
.method private camelliaFLs([I[II)V
.registers 11
.prologue
const/4 v6, 0x3
const/4 v5, 0x2
const/4 v4, 0x0
const/4 v3, 0x1
.line 342
aget v0, p1, v3
aget v1, p1, v4
aget v2, p2, p3
and-int/2addr v1, v2
invoke-static {v1, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->leftRotate(II)I
move-result v1
xor-int/2addr v0, v1
aput v0, p1, v3
.line 343
aget v0, p1, v4
add-int/lit8 v1, p3, 0x1
aget v1, p2, v1
aget v2, p1, v3
or-int/2addr v1, v2
xor-int/2addr v0, v1
aput v0, p1, v4
.line 345
aget v0, p1, v5
add-int/lit8 v1, p3, 0x3
aget v1, p2, v1
aget v2, p1, v6
or-int/2addr v1, v2
xor-int/2addr v0, v1
aput v0, p1, v5
.line 346
aget v0, p1, v6
add-int/lit8 v1, p3, 0x2
aget v1, p2, v1
aget v2, p1, v5
and-int/2addr v1, v2
invoke-static {v1, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->leftRotate(II)I
move-result v1
xor-int/2addr v0, v1
aput v0, p1, v6
.line 347
return-void
.end method
.method private static decroldq(I[II[II)V
.registers 9
.prologue
.line 250
add-int/lit8 v0, p4, 0x2
aget v1, p1, p2
shl-int/2addr v1, p0
add-int/lit8 v2, p2, 0x1
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x20
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 251
add-int/lit8 v0, p4, 0x3
add-int/lit8 v1, p2, 0x1
aget v1, p1, v1
shl-int/2addr v1, p0
add-int/lit8 v2, p2, 0x2
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x20
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 252
add-int/lit8 v0, p2, 0x2
aget v0, p1, v0
shl-int/2addr v0, p0
add-int/lit8 v1, p2, 0x3
aget v1, p1, v1
rsub-int/lit8 v2, p0, 0x20
ushr-int/2addr v1, v2
or-int/2addr v0, v1
aput v0, p3, p4
.line 253
add-int/lit8 v0, p4, 0x1
add-int/lit8 v1, p2, 0x3
aget v1, p1, v1
shl-int/2addr v1, p0
aget v2, p1, p2
rsub-int/lit8 v3, p0, 0x20
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 254
add-int/lit8 v0, p4, 0x2
aget v0, p3, v0
aput v0, p1, p2
.line 255
add-int/lit8 v0, p2, 0x1
add-int/lit8 v1, p4, 0x3
aget v1, p3, v1
aput v1, p1, v0
.line 256
add-int/lit8 v0, p2, 0x2
aget v1, p3, p4
aput v1, p1, v0
.line 257
add-int/lit8 v0, p2, 0x3
add-int/lit8 v1, p4, 0x1
aget v1, p3, v1
aput v1, p1, v0
.line 258
return-void
.end method
.method private static decroldqo32(I[II[II)V
.registers 9
.prologue
.line 276
add-int/lit8 v0, p4, 0x2
add-int/lit8 v1, p2, 0x1
aget v1, p1, v1
add-int/lit8 v2, p0, -0x20
shl-int/2addr v1, v2
add-int/lit8 v2, p2, 0x2
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x40
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 277
add-int/lit8 v0, p4, 0x3
add-int/lit8 v1, p2, 0x2
aget v1, p1, v1
add-int/lit8 v2, p0, -0x20
shl-int/2addr v1, v2
add-int/lit8 v2, p2, 0x3
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x40
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 278
add-int/lit8 v0, p2, 0x3
aget v0, p1, v0
add-int/lit8 v1, p0, -0x20
shl-int/2addr v0, v1
aget v1, p1, p2
rsub-int/lit8 v2, p0, 0x40
ushr-int/2addr v1, v2
or-int/2addr v0, v1
aput v0, p3, p4
.line 279
add-int/lit8 v0, p4, 0x1
aget v1, p1, p2
add-int/lit8 v2, p0, -0x20
shl-int/2addr v1, v2
add-int/lit8 v2, p2, 0x1
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x40
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 280
add-int/lit8 v0, p4, 0x2
aget v0, p3, v0
aput v0, p1, p2
.line 281
add-int/lit8 v0, p2, 0x1
add-int/lit8 v1, p4, 0x3
aget v1, p3, v1
aput v1, p1, v0
.line 282
add-int/lit8 v0, p2, 0x2
aget v1, p3, p4
aput v1, p1, v0
.line 283
add-int/lit8 v0, p2, 0x3
add-int/lit8 v1, p4, 0x1
aget v1, p3, v1
aput v1, p1, v0
.line 284
return-void
.end method
.method private int2bytes(I[BI)V
.registers 7
.prologue
.line 299
const/4 v0, 0x0
:goto_1
const/4 v1, 0x4
if-ge v0, v1, :cond_f
.line 301
rsub-int/lit8 v1, v0, 0x3
add-int/2addr v1, p3
int-to-byte v2, p1
aput-byte v2, p2, v1
.line 302
ushr-int/lit8 p1, p1, 0x8
.line 299
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 304
:cond_f
return-void
.end method
.method private static leftRotate(II)I
.registers 4
.prologue
.line 231
shl-int v0, p0, p1
rsub-int/lit8 v1, p1, 0x20
ushr-int v1, p0, v1
add-int/2addr v0, v1
return v0
.end method
.method private processBlock128([BI[BI)I
.registers 14
.prologue
const/4 v8, 0x3
const/4 v7, 0x2
const/4 v6, 0x1
const/4 v5, 0x4
const/4 v1, 0x0
.line 553
move v0, v1
:goto_6
if-ge v0, v5, :cond_21
.line 555
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
shl-int/lit8 v3, v0, 0x2
add-int/2addr v3, p2
invoke-direct {p0, p1, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v3
aput v3, v2, v0
.line 556
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v3, v2, v0
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v4, v0
xor-int/2addr v3, v4
aput v3, v2, v0
.line 553
add-int/lit8 v0, v0, 0x1
goto :goto_6
.line 559
:cond_21
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-direct {p0, v0, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 560
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-direct {p0, v0, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 561
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x8
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 562
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-direct {p0, v0, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaFLs([I[II)V
.line 563
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0xc
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 564
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x10
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 565
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x14
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 566
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-direct {p0, v0, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaFLs([I[II)V
.line 567
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x18
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 568
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x1c
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 569
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x20
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 571
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v7
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v3, v3, v5
xor-int/2addr v2, v3
aput v2, v0, v7
.line 572
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v8
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x5
aget v3, v3, v4
xor-int/2addr v2, v3
aput v2, v0, v8
.line 573
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v1
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x6
aget v3, v3, v4
xor-int/2addr v2, v3
aput v2, v0, v1
.line 574
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v6
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x7
aget v3, v3, v4
xor-int/2addr v2, v3
aput v2, v0, v6
.line 576
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v7
invoke-direct {p0, v0, p3, p4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 577
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v8
add-int/lit8 v2, p4, 0x4
invoke-direct {p0, v0, p3, v2}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 578
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v1
add-int/lit8 v1, p4, 0x8
invoke-direct {p0, v0, p3, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 579
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v6
add-int/lit8 v1, p4, 0xc
invoke-direct {p0, v0, p3, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 581
const/16 v0, 0x10
return v0
.end method
.method private processBlock192or256([BI[BI)I
.registers 14
.prologue
const/4 v8, 0x3
const/4 v7, 0x2
const/4 v6, 0x1
const/4 v5, 0x4
const/4 v1, 0x0
.line 587
move v0, v1
:goto_6
if-ge v0, v5, :cond_21
.line 589
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
shl-int/lit8 v3, v0, 0x2
add-int/2addr v3, p2
invoke-direct {p0, p1, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v3
aput v3, v2, v0
.line 590
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v3, v2, v0
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v4, v0
xor-int/2addr v3, v4
aput v3, v2, v0
.line 587
add-int/lit8 v0, v0, 0x1
goto :goto_6
.line 593
:cond_21
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-direct {p0, v0, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 594
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-direct {p0, v0, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 595
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x8
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 596
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-direct {p0, v0, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaFLs([I[II)V
.line 597
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0xc
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 598
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x10
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 599
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x14
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 600
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-direct {p0, v0, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaFLs([I[II)V
.line 601
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x18
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 602
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x1c
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 603
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x20
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 604
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
const/16 v3, 0x8
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaFLs([I[II)V
.line 605
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x24
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 606
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x28
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 607
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x2c
invoke-direct {p0, v0, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 609
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v7
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v3, v3, v5
xor-int/2addr v2, v3
aput v2, v0, v7
.line 610
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v8
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x5
aget v3, v3, v4
xor-int/2addr v2, v3
aput v2, v0, v8
.line 611
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v1
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x6
aget v3, v3, v4
xor-int/2addr v2, v3
aput v2, v0, v1
.line 612
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v2, v0, v6
iget-object v3, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x7
aget v3, v3, v4
xor-int/2addr v2, v3
aput v2, v0, v6
.line 614
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v7
invoke-direct {p0, v0, p3, p4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 615
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v8
add-int/lit8 v2, p4, 0x4
invoke-direct {p0, v0, p3, v2}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 616
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v1
add-int/lit8 v1, p4, 0x8
invoke-direct {p0, v0, p3, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 617
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->state:[I
aget v0, v0, v6
add-int/lit8 v1, p4, 0xc
invoke-direct {p0, v0, p3, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->int2bytes(I[BI)V
.line 618
const/16 v0, 0x10
return v0
.end method
.method private static rightRotate(II)I
.registers 4
.prologue
.line 226
ushr-int v0, p0, p1
rsub-int/lit8 v1, p1, 0x20
shl-int v1, p0, v1
add-int/2addr v0, v1
return v0
.end method
.method private static roldq(I[II[II)V
.registers 9
.prologue
.line 237
aget v0, p1, p2
shl-int/2addr v0, p0
add-int/lit8 v1, p2, 0x1
aget v1, p1, v1
rsub-int/lit8 v2, p0, 0x20
ushr-int/2addr v1, v2
or-int/2addr v0, v1
aput v0, p3, p4
.line 238
add-int/lit8 v0, p4, 0x1
add-int/lit8 v1, p2, 0x1
aget v1, p1, v1
shl-int/2addr v1, p0
add-int/lit8 v2, p2, 0x2
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x20
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 239
add-int/lit8 v0, p4, 0x2
add-int/lit8 v1, p2, 0x2
aget v1, p1, v1
shl-int/2addr v1, p0
add-int/lit8 v2, p2, 0x3
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x20
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 240
add-int/lit8 v0, p4, 0x3
add-int/lit8 v1, p2, 0x3
aget v1, p1, v1
shl-int/2addr v1, p0
aget v2, p1, p2
rsub-int/lit8 v3, p0, 0x20
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 241
aget v0, p3, p4
aput v0, p1, p2
.line 242
add-int/lit8 v0, p2, 0x1
add-int/lit8 v1, p4, 0x1
aget v1, p3, v1
aput v1, p1, v0
.line 243
add-int/lit8 v0, p2, 0x2
add-int/lit8 v1, p4, 0x2
aget v1, p3, v1
aput v1, p1, v0
.line 244
add-int/lit8 v0, p2, 0x3
add-int/lit8 v1, p4, 0x3
aget v1, p3, v1
aput v1, p1, v0
.line 245
return-void
.end method
.method private static roldqo32(I[II[II)V
.registers 9
.prologue
.line 263
add-int/lit8 v0, p2, 0x1
aget v0, p1, v0
add-int/lit8 v1, p0, -0x20
shl-int/2addr v0, v1
add-int/lit8 v1, p2, 0x2
aget v1, p1, v1
rsub-int/lit8 v2, p0, 0x40
ushr-int/2addr v1, v2
or-int/2addr v0, v1
aput v0, p3, p4
.line 264
add-int/lit8 v0, p4, 0x1
add-int/lit8 v1, p2, 0x2
aget v1, p1, v1
add-int/lit8 v2, p0, -0x20
shl-int/2addr v1, v2
add-int/lit8 v2, p2, 0x3
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x40
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 265
add-int/lit8 v0, p4, 0x2
add-int/lit8 v1, p2, 0x3
aget v1, p1, v1
add-int/lit8 v2, p0, -0x20
shl-int/2addr v1, v2
aget v2, p1, p2
rsub-int/lit8 v3, p0, 0x40
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 266
add-int/lit8 v0, p4, 0x3
aget v1, p1, p2
add-int/lit8 v2, p0, -0x20
shl-int/2addr v1, v2
add-int/lit8 v2, p2, 0x1
aget v2, p1, v2
rsub-int/lit8 v3, p0, 0x40
ushr-int/2addr v2, v3
or-int/2addr v1, v2
aput v1, p3, v0
.line 267
aget v0, p3, p4
aput v0, p1, p2
.line 268
add-int/lit8 v0, p2, 0x1
add-int/lit8 v1, p4, 0x1
aget v1, p3, v1
aput v1, p1, v0
.line 269
add-int/lit8 v0, p2, 0x2
add-int/lit8 v1, p4, 0x2
aget v1, p3, v1
aput v1, p1, v0
.line 270
add-int/lit8 v0, p2, 0x3
add-int/lit8 v1, p4, 0x3
aget v1, p3, v1
aput v1, p1, v0
.line 271
return-void
.end method
.method private setKey(Z[B)V
.registers 15
.prologue
const/4 v11, 0x3
const/4 v10, 0x2
const/4 v9, 0x1
const/4 v8, 0x4
const/4 v1, 0x0
.line 351
const/16 v0, 0x8
new-array v2, v0, [I
.line 352
new-array v3, v8, [I
.line 353
new-array v4, v8, [I
.line 354
new-array v5, v8, [I
.line 356
array-length v0, p2
sparse-switch v0, :sswitch_data_402
.line 389
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "key sizes are only 16/24/32 bytes."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 359
:sswitch_1b
iput-boolean v9, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->_keyIs128:Z
.line 360
invoke-direct {p0, p2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v1
.line 361
invoke-direct {p0, p2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v9
.line 362
const/16 v0, 0x8
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v10
.line 363
const/16 v0, 0xc
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v11
.line 364
const/4 v0, 0x5
const/4 v6, 0x6
const/4 v7, 0x7
aput v1, v2, v7
aput v1, v2, v6
aput v1, v2, v0
aput v1, v2, v8
:goto_44
move v0, v1
.line 393
:goto_45
if-ge v0, v8, :cond_d5
.line 395
aget v6, v2, v0
add-int/lit8 v7, v0, 0x4
aget v7, v2, v7
xor-int/2addr v6, v7
aput v6, v3, v0
.line 393
add-int/lit8 v0, v0, 0x1
goto :goto_45
.line 367
:sswitch_53
invoke-direct {p0, p2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v1
.line 368
invoke-direct {p0, p2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v9
.line 369
const/16 v0, 0x8
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v10
.line 370
const/16 v0, 0xc
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v11
.line 371
const/16 v0, 0x10
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v8
.line 372
const/4 v0, 0x5
const/16 v6, 0x14
invoke-direct {p0, p2, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v6
aput v6, v2, v0
.line 373
const/4 v0, 0x6
aget v6, v2, v8
xor-int/lit8 v6, v6, -0x1
aput v6, v2, v0
.line 374
const/4 v0, 0x7
const/4 v6, 0x5
aget v6, v2, v6
xor-int/lit8 v6, v6, -0x1
aput v6, v2, v0
.line 375
iput-boolean v1, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->_keyIs128:Z
goto :goto_44
.line 378
:sswitch_92
invoke-direct {p0, p2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v1
.line 379
invoke-direct {p0, p2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v9
.line 380
const/16 v0, 0x8
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v10
.line 381
const/16 v0, 0xc
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v11
.line 382
const/16 v0, 0x10
invoke-direct {p0, p2, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v0
aput v0, v2, v8
.line 383
const/4 v0, 0x5
const/16 v6, 0x14
invoke-direct {p0, p2, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v6
aput v6, v2, v0
.line 384
const/4 v0, 0x6
const/16 v6, 0x18
invoke-direct {p0, p2, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v6
aput v6, v2, v0
.line 385
const/4 v0, 0x7
const/16 v6, 0x1c
invoke-direct {p0, p2, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->bytes2int([BI)I
move-result v6
aput v6, v2, v0
.line 386
iput-boolean v1, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->_keyIs128:Z
goto/16 :goto_44
.line 398
:cond_d5
sget-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SIGMA:[I
invoke-direct {p0, v3, v0, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
move v0, v1
.line 399
:goto_db
if-ge v0, v8, :cond_e7
.line 401
aget v6, v3, v0
aget v7, v2, v0
xor-int/2addr v6, v7
aput v6, v3, v0
.line 399
add-int/lit8 v0, v0, 0x1
goto :goto_db
.line 403
:cond_e7
sget-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SIGMA:[I
invoke-direct {p0, v3, v0, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 405
iget-boolean v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->_keyIs128:Z
if-eqz v0, :cond_256
.line 407
if-eqz p1, :cond_19f
.line 410
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v2, v1
aput v4, v0, v1
.line 411
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v2, v9
aput v4, v0, v9
.line 412
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v2, v10
aput v4, v0, v10
.line 413
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v2, v11
aput v4, v0, v11
.line 414
const/16 v0, 0xf
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-static {v0, v2, v1, v4, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 415
const/16 v0, 0x1e
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0xc
invoke-static {v0, v2, v1, v4, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 416
const/16 v0, 0xf
invoke-static {v0, v2, v1, v5, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 417
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x12
aget v6, v5, v10
aput v6, v0, v4
.line 418
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x13
aget v6, v5, v11
aput v6, v0, v4
.line 419
const/16 v0, 0x11
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v2, v1, v4, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 420
const/16 v0, 0x11
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x18
invoke-static {v0, v2, v1, v4, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 421
const/16 v0, 0x11
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x20
invoke-static {v0, v2, v1, v4, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 423
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v3, v1
aput v2, v0, v1
.line 424
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v3, v9
aput v2, v0, v9
.line 425
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v3, v10
aput v2, v0, v10
.line 426
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v3, v11
aput v2, v0, v11
.line 427
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x8
invoke-static {v0, v3, v1, v2, v4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 428
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v3, v1, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 429
const/16 v0, 0xf
invoke-static {v0, v3, v1, v5, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 430
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x10
aget v4, v5, v1
aput v4, v0, v2
.line 431
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x11
aget v4, v5, v9
aput v4, v0, v2
.line 432
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x14
invoke-static {v0, v3, v1, v2, v4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 433
const/16 v0, 0x22
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x1c
invoke-static {v0, v3, v1, v2, v4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
.line 434
const/16 v0, 0x11
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
invoke-static {v0, v3, v1, v2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 548
:goto_19e
return-void
.line 440
:cond_19f
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v4, v2, v1
aput v4, v0, v8
.line 441
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x5
aget v6, v2, v9
aput v6, v0, v4
.line 442
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x6
aget v6, v2, v10
aput v6, v0, v4
.line 443
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v4, 0x7
aget v6, v2, v11
aput v6, v0, v4
.line 444
const/16 v0, 0xf
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x1c
invoke-static {v0, v2, v1, v4, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 445
const/16 v0, 0x1e
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x14
invoke-static {v0, v2, v1, v4, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 446
const/16 v0, 0xf
invoke-static {v0, v2, v1, v5, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 447
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x10
aget v6, v5, v1
aput v6, v0, v4
.line 448
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x11
aget v6, v5, v9
aput v6, v0, v4
.line 449
const/16 v0, 0x11
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v2, v1, v4, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 450
const/16 v0, 0x11
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x8
invoke-static {v0, v2, v1, v4, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 451
const/16 v0, 0x11
iget-object v4, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-static {v0, v2, v1, v4, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 453
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x22
aget v4, v3, v1
aput v4, v0, v2
.line 454
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x23
aget v4, v3, v9
aput v4, v0, v2
.line 455
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x20
aget v4, v3, v10
aput v4, v0, v2
.line 456
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x21
aget v4, v3, v11
aput v4, v0, v2
.line 457
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0x18
invoke-static {v0, v3, v1, v2, v4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 458
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v3, v1, v2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 459
const/16 v0, 0xf
invoke-static {v0, v3, v1, v5, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 460
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x12
aget v4, v5, v10
aput v4, v0, v2
.line 461
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x13
aget v4, v5, v11
aput v4, v0, v2
.line 462
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v4, 0xc
invoke-static {v0, v3, v1, v2, v4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 463
const/16 v0, 0x22
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-static {v0, v3, v1, v2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldqo32(I[II[II)V
.line 464
const/16 v0, 0x11
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
invoke-static {v0, v3, v1, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
goto/16 :goto_19e
:cond_256
move v0, v1
.line 470
:goto_257
if-ge v0, v8, :cond_265
.line 472
aget v5, v3, v0
add-int/lit8 v6, v0, 0x4
aget v6, v2, v6
xor-int/2addr v5, v6
aput v5, v4, v0
.line 470
add-int/lit8 v0, v0, 0x1
goto :goto_257
.line 474
:cond_265
sget-object v0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->SIGMA:[I
const/16 v5, 0x8
invoke-direct {p0, v4, v0, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->camelliaF2([I[II)V
.line 476
if-eqz p1, :cond_336
.line 479
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v5, v2, v1
aput v5, v0, v1
.line 480
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v5, v2, v9
aput v5, v0, v9
.line 481
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v5, v2, v10
aput v5, v0, v10
.line 482
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v5, v2, v11
aput v5, v0, v11
.line 483
const/16 v0, 0x2d
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x10
invoke-static {v0, v2, v1, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
.line 484
const/16 v0, 0xf
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v2, v1, v5, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 485
const/16 v0, 0x11
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x20
invoke-static {v0, v2, v1, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 486
const/16 v0, 0x22
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x2c
invoke-static {v0, v2, v1, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
.line 488
const/16 v0, 0xf
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-static {v0, v2, v8, v5, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 489
const/16 v0, 0xf
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v2, v8, v5, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 490
const/16 v0, 0x1e
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x18
invoke-static {v0, v2, v8, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 491
const/16 v0, 0x22
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x24
invoke-static {v0, v2, v8, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
.line 493
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v5, 0x8
invoke-static {v0, v3, v1, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 494
const/16 v0, 0x1e
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v5, 0x14
invoke-static {v0, v3, v1, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 496
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
const/16 v2, 0x8
aget v5, v3, v9
aput v5, v0, v2
.line 497
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
const/16 v2, 0x9
aget v5, v3, v10
aput v5, v0, v2
.line 498
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
const/16 v2, 0xa
aget v5, v3, v11
aput v5, v0, v2
.line 499
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
const/16 v2, 0xb
aget v5, v3, v1
aput v5, v0, v2
.line 500
const/16 v0, 0x31
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v5, 0x28
invoke-static {v0, v3, v1, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
.line 503
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v4, v1
aput v2, v0, v1
.line 504
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v4, v9
aput v2, v0, v9
.line 505
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v4, v10
aput v2, v0, v10
.line 506
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
aget v2, v4, v11
aput v2, v0, v11
.line 507
const/16 v0, 0x1e
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0xc
invoke-static {v0, v4, v1, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 508
const/16 v0, 0x1e
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x1c
invoke-static {v0, v4, v1, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldq(I[II[II)V
.line 509
const/16 v0, 0x33
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
invoke-static {v0, v4, v1, v2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
goto/16 :goto_19e
.line 515
:cond_336
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
aget v5, v2, v1
aput v5, v0, v8
.line 516
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v5, 0x5
aget v6, v2, v9
aput v6, v0, v5
.line 517
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v5, 0x6
aget v6, v2, v10
aput v6, v0, v5
.line 518
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
const/4 v5, 0x7
aget v6, v2, v11
aput v6, v0, v5
.line 519
const/16 v0, 0x2d
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x1c
invoke-static {v0, v2, v1, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldqo32(I[II[II)V
.line 520
const/16 v0, 0xf
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
invoke-static {v0, v2, v1, v5, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 521
const/16 v0, 0x11
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0xc
invoke-static {v0, v2, v1, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 522
const/16 v0, 0x22
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-static {v0, v2, v1, v5, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldqo32(I[II[II)V
.line 524
const/16 v0, 0xf
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x28
invoke-static {v0, v2, v8, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 525
const/16 v0, 0xf
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
const/16 v6, 0x8
invoke-static {v0, v2, v8, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 526
const/16 v0, 0x1e
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x14
invoke-static {v0, v2, v8, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 527
const/16 v0, 0x22
iget-object v5, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v6, 0x8
invoke-static {v0, v2, v8, v5, v6}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldqo32(I[II[II)V
.line 529
const/16 v0, 0xf
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v5, 0x24
invoke-static {v0, v3, v1, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 530
const/16 v0, 0x1e
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v5, 0x18
invoke-static {v0, v3, v1, v2, v5}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 532
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
aget v2, v3, v9
aput v2, v0, v10
.line 533
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
aget v2, v3, v10
aput v2, v0, v11
.line 534
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
aget v2, v3, v11
aput v2, v0, v1
.line 535
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->ke:[I
aget v2, v3, v1
aput v2, v0, v9
.line 536
const/16 v0, 0x31
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
invoke-static {v0, v3, v1, v2, v8}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldqo32(I[II[II)V
.line 539
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x2e
aget v3, v4, v1
aput v3, v0, v2
.line 540
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x2f
aget v3, v4, v9
aput v3, v0, v2
.line 541
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x2c
aget v3, v4, v10
aput v3, v0, v2
.line 542
iget-object v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v2, 0x2d
aget v3, v4, v11
aput v3, v0, v2
.line 543
const/16 v0, 0x1e
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x20
invoke-static {v0, v4, v1, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 544
const/16 v0, 0x1e
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->subkey:[I
const/16 v3, 0x10
invoke-static {v0, v4, v1, v2, v3}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->decroldq(I[II[II)V
.line 545
const/16 v0, 0x33
iget-object v2, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->kw:[I
invoke-static {v0, v4, v1, v2, v1}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->roldqo32(I[II[II)V
goto/16 :goto_19e
.line 356
nop
:sswitch_data_402
.sparse-switch
0x10 -> :sswitch_1b
0x18 -> :sswitch_53
0x20 -> :sswitch_92
.end sparse-switch
.end method
# virtual methods
.method public getAlgorithmName()Ljava/lang/String;
.registers 2
.prologue
.line 639
const-string v0, "Camellia"
return-object v0
.end method
.method public getBlockSize()I
.registers 2
.prologue
.line 644
const/16 v0, 0x10
return v0
.end method
.method public init(ZLorg/spongycastle/crypto/CipherParameters;)V
.registers 5
.prologue
.line 628
instance-of v0, p2, Lorg/spongycastle/crypto/params/KeyParameter;
if-nez v0, :cond_c
.line 630
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "only simple KeyParameter expected."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 633
:cond_c
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, p1, v0}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->setKey(Z[B)V
.line 634
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->initialised:Z
.line 635
return-void
.end method
.method public processBlock([BI[BI)I
.registers 7
.prologue
.line 654
iget-boolean v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->initialised:Z
if-nez v0, :cond_c
.line 656
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Camellia engine not initialised"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 659
:cond_c
add-int/lit8 v0, p2, 0x10
array-length v1, p1
if-le v0, v1, :cond_19
.line 661
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 664
:cond_19
add-int/lit8 v0, p4, 0x10
array-length v1, p3
if-le v0, v1, :cond_26
.line 666
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 669
:cond_26
iget-boolean v0, p0, Lorg/spongycastle/crypto/engines/CamelliaEngine;->_keyIs128:Z
if-eqz v0, :cond_2f
.line 671
invoke-direct {p0, p1, p2, p3, p4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->processBlock128([BI[BI)I
move-result v0
.line 675
:goto_2e
return v0
:cond_2f
invoke-direct {p0, p1, p2, p3, p4}, Lorg/spongycastle/crypto/engines/CamelliaEngine;->processBlock192or256([BI[BI)I
move-result v0
goto :goto_2e
.end method
.method public reset()V
.registers 1
.prologue
.line 683
return-void
.end method