public class org.bouncycastle.crypto.engines.IDEAEngine implements org.bouncycastle.crypto.BlockCipher
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.engines.IDEAEngine
super_class: java.lang.Object
{
protected static final int BLOCK_SIZE;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private int[] workingKey;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private static final int MASK;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65535
private static final int BASE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65537
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
0: .line 39
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 34
aload 0 /* this */
aconst_null
putfield org.bouncycastle.crypto.engines.IDEAEngine.workingKey:[I
2: .line 41
return
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
public void init(boolean, org.bouncycastle.crypto.CipherParameters);
descriptor: (ZLorg/bouncycastle/crypto/CipherParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // boolean forEncryption
start local 2 // org.bouncycastle.crypto.CipherParameters params
0: .line 55
aload 2 /* params */
instanceof org.bouncycastle.crypto.params.KeyParameter
ifeq 5
1: .line 57
aload 0 /* this */
aload 0 /* this */
iload 1 /* forEncryption */
2: .line 58
aload 2 /* params */
checkcast org.bouncycastle.crypto.params.KeyParameter
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
3: .line 57
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.generateWorkingKey:(Z[B)[I
putfield org.bouncycastle.crypto.engines.IDEAEngine.workingKey:[I
4: .line 59
return
5: .line 62
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "invalid parameter passed to IDEA init - "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2 /* params */
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 2 // org.bouncycastle.crypto.CipherParameters params
end local 1 // boolean forEncryption
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 6 1 forEncryption Z
0 6 2 params Lorg/bouncycastle/crypto/CipherParameters;
MethodParameters:
Name Flags
forEncryption
params
public java.lang.String getAlgorithmName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
0: .line 67
ldc "IDEA"
areturn
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
public int getBlockSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
0: .line 72
bipush 8
ireturn
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
public int processBlock(byte[], int, byte[], int);
descriptor: ([BI[BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=5
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // byte[] in
start local 2 // int inOff
start local 3 // byte[] out
start local 4 // int outOff
0: .line 81
aload 0 /* this */
getfield org.bouncycastle.crypto.engines.IDEAEngine.workingKey:[I
ifnonnull 2
1: .line 83
new java.lang.IllegalStateException
dup
ldc "IDEA engine not initialised"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: .line 86
StackMap locals:
StackMap stack:
iload 2 /* inOff */
bipush 8
iadd
aload 1 /* in */
arraylength
if_icmple 4
3: .line 88
new org.bouncycastle.crypto.DataLengthException
dup
ldc "input buffer too short"
invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
athrow
4: .line 91
StackMap locals:
StackMap stack:
iload 4 /* outOff */
bipush 8
iadd
aload 3 /* out */
arraylength
if_icmple 6
5: .line 93
new org.bouncycastle.crypto.DataLengthException
dup
ldc "output buffer too short"
invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
athrow
6: .line 96
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 0 /* this */
getfield org.bouncycastle.crypto.engines.IDEAEngine.workingKey:[I
aload 1 /* in */
iload 2 /* inOff */
aload 3 /* out */
iload 4 /* outOff */
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.ideaFunc:([I[BI[BI)V
7: .line 98
bipush 8
ireturn
end local 4 // int outOff
end local 3 // byte[] out
end local 2 // int inOff
end local 1 // byte[] in
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 8 1 in [B
0 8 2 inOff I
0 8 3 out [B
0 8 4 outOff I
MethodParameters:
Name Flags
in
inOff
out
outOff
public void reset();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=1, args_size=1
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
0: .line 103
return
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
private int bytesToWord(byte[], int);
descriptor: ([BI)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // byte[] in
start local 2 // int inOff
0: .line 112
aload 1 /* in */
iload 2 /* inOff */
baload
bipush 8
ishl
ldc 65280
iand
aload 1 /* in */
iload 2 /* inOff */
iconst_1
iadd
baload
sipush 255
iand
iadd
ireturn
end local 2 // int inOff
end local 1 // byte[] in
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 1 1 in [B
0 1 2 inOff I
MethodParameters:
Name Flags
in
inOff
private void wordToBytes(int, byte[], int);
descriptor: (I[BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=4
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // int word
start local 2 // byte[] out
start local 3 // int outOff
0: .line 120
aload 2 /* out */
iload 3 /* outOff */
iload 1 /* word */
bipush 8
iushr
i2b
bastore
1: .line 121
aload 2 /* out */
iload 3 /* outOff */
iconst_1
iadd
iload 1 /* word */
i2b
bastore
2: .line 122
return
end local 3 // int outOff
end local 2 // byte[] out
end local 1 // int word
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 3 1 word I
0 3 2 out [B
0 3 3 outOff I
MethodParameters:
Name Flags
word
out
outOff
private int mul(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // int x
start local 2 // int y
0: .line 137
iload 1 /* x */
ifne 3
1: .line 139
ldc 65537
iload 2 /* y */
isub
istore 1 /* x */
2: .line 140
goto 12
3: .line 141
StackMap locals:
StackMap stack:
iload 2 /* y */
ifne 6
4: .line 143
ldc 65537
iload 1 /* x */
isub
istore 1 /* x */
5: .line 144
goto 12
6: .line 147
StackMap locals:
StackMap stack:
iload 1 /* x */
iload 2 /* y */
imul
istore 3 /* p */
start local 3 // int p
7: .line 149
iload 3 /* p */
ldc 65535
iand
istore 2 /* y */
8: .line 150
iload 3 /* p */
bipush 16
iushr
istore 1 /* x */
9: .line 151
iload 2 /* y */
iload 1 /* x */
isub
iload 2 /* y */
iload 1 /* x */
if_icmpge 10
iconst_1
goto 11
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int int int
StackMap stack: int
10: iconst_0
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int int int
StackMap stack: int int
11: iadd
istore 1 /* x */
end local 3 // int p
12: .line 154
StackMap locals:
StackMap stack:
iload 1 /* x */
ldc 65535
iand
ireturn
end local 2 // int y
end local 1 // int x
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 13 1 x I
0 13 2 y I
7 12 3 p I
MethodParameters:
Name Flags
x
y
private void ideaFunc(int[], byte[], int, byte[], int);
descriptor: ([I[BI[BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=14, args_size=6
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // int[] workingKey
start local 2 // byte[] in
start local 3 // int inOff
start local 4 // byte[] out
start local 5 // int outOff
0: .line 165
iconst_0
istore 12 /* keyOff */
start local 12 // int keyOff
1: .line 167
aload 0 /* this */
aload 2 /* in */
iload 3 /* inOff */
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.bytesToWord:([BI)I
istore 6 /* x0 */
start local 6 // int x0
2: .line 168
aload 0 /* this */
aload 2 /* in */
iload 3 /* inOff */
iconst_2
iadd
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.bytesToWord:([BI)I
istore 7 /* x1 */
start local 7 // int x1
3: .line 169
aload 0 /* this */
aload 2 /* in */
iload 3 /* inOff */
iconst_4
iadd
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.bytesToWord:([BI)I
istore 8 /* x2 */
start local 8 // int x2
4: .line 170
aload 0 /* this */
aload 2 /* in */
iload 3 /* inOff */
bipush 6
iadd
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.bytesToWord:([BI)I
istore 9 /* x3 */
start local 9 // int x3
5: .line 172
iconst_0
istore 13 /* round */
start local 13 // int round
6: goto 28
7: .line 174
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int[] byte[] int byte[] int int int int int top top int int
StackMap stack:
aload 0 /* this */
iload 6 /* x0 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mul:(II)I
istore 6 /* x0 */
8: .line 175
iload 7 /* x1 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
iadd
istore 7 /* x1 */
9: .line 176
iload 7 /* x1 */
ldc 65535
iand
istore 7 /* x1 */
10: .line 177
iload 8 /* x2 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
iadd
istore 8 /* x2 */
11: .line 178
iload 8 /* x2 */
ldc 65535
iand
istore 8 /* x2 */
12: .line 179
aload 0 /* this */
iload 9 /* x3 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mul:(II)I
istore 9 /* x3 */
13: .line 181
iload 7 /* x1 */
istore 10 /* t0 */
start local 10 // int t0
14: .line 182
iload 8 /* x2 */
istore 11 /* t1 */
start local 11 // int t1
15: .line 183
iload 8 /* x2 */
iload 6 /* x0 */
ixor
istore 8 /* x2 */
16: .line 184
iload 7 /* x1 */
iload 9 /* x3 */
ixor
istore 7 /* x1 */
17: .line 186
aload 0 /* this */
iload 8 /* x2 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mul:(II)I
istore 8 /* x2 */
18: .line 187
iload 7 /* x1 */
iload 8 /* x2 */
iadd
istore 7 /* x1 */
19: .line 188
iload 7 /* x1 */
ldc 65535
iand
istore 7 /* x1 */
20: .line 190
aload 0 /* this */
iload 7 /* x1 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mul:(II)I
istore 7 /* x1 */
21: .line 191
iload 8 /* x2 */
iload 7 /* x1 */
iadd
istore 8 /* x2 */
22: .line 192
iload 8 /* x2 */
ldc 65535
iand
istore 8 /* x2 */
23: .line 194
iload 6 /* x0 */
iload 7 /* x1 */
ixor
istore 6 /* x0 */
24: .line 195
iload 9 /* x3 */
iload 8 /* x2 */
ixor
istore 9 /* x3 */
25: .line 196
iload 7 /* x1 */
iload 11 /* t1 */
ixor
istore 7 /* x1 */
26: .line 197
iload 8 /* x2 */
iload 10 /* t0 */
ixor
istore 8 /* x2 */
27: .line 172
iinc 13 /* round */ 1
end local 11 // int t1
end local 10 // int t0
StackMap locals:
StackMap stack:
28: iload 13 /* round */
bipush 8
if_icmplt 7
end local 13 // int round
29: .line 200
aload 0 /* this */
aload 0 /* this */
iload 6 /* x0 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mul:(II)I
aload 4 /* out */
iload 5 /* outOff */
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.wordToBytes:(I[BI)V
30: .line 201
aload 0 /* this */
iload 8 /* x2 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
iadd
aload 4 /* out */
iload 5 /* outOff */
iconst_2
iadd
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.wordToBytes:(I[BI)V
31: .line 202
aload 0 /* this */
iload 7 /* x1 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iinc 12 /* keyOff */ 1
iaload
iadd
aload 4 /* out */
iload 5 /* outOff */
iconst_4
iadd
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.wordToBytes:(I[BI)V
32: .line 203
aload 0 /* this */
aload 0 /* this */
iload 9 /* x3 */
aload 1 /* workingKey */
iload 12 /* keyOff */
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mul:(II)I
aload 4 /* out */
iload 5 /* outOff */
bipush 6
iadd
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.wordToBytes:(I[BI)V
33: .line 204
return
end local 12 // int keyOff
end local 9 // int x3
end local 8 // int x2
end local 7 // int x1
end local 6 // int x0
end local 5 // int outOff
end local 4 // byte[] out
end local 3 // int inOff
end local 2 // byte[] in
end local 1 // int[] workingKey
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 34 1 workingKey [I
0 34 2 in [B
0 34 3 inOff I
0 34 4 out [B
0 34 5 outOff I
2 34 6 x0 I
3 34 7 x1 I
4 34 8 x2 I
5 34 9 x3 I
14 28 10 t0 I
15 28 11 t1 I
1 34 12 keyOff I
6 29 13 round I
MethodParameters:
Name Flags
workingKey
in
inOff
out
outOff
private int[] expandKey(byte[]);
descriptor: ([B)[I
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=4, args_size=2
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // byte[] uKey
0: .line 215
bipush 52
newarray 10
astore 2 /* key */
start local 2 // int[] key
1: .line 217
aload 1 /* uKey */
arraylength
bipush 16
if_icmpge 5
2: .line 219
bipush 16
newarray 8
astore 3 /* tmp */
start local 3 // byte[] tmp
3: .line 221
aload 1 /* uKey */
iconst_0
aload 3 /* tmp */
aload 3 /* tmp */
arraylength
aload 1 /* uKey */
arraylength
isub
aload 1 /* uKey */
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: .line 223
aload 3 /* tmp */
astore 1 /* uKey */
end local 3 // byte[] tmp
5: .line 226
StackMap locals: int[]
StackMap stack:
iconst_0
istore 3 /* i */
start local 3 // int i
6: goto 9
7: .line 228
StackMap locals: int
StackMap stack:
aload 2 /* key */
iload 3 /* i */
aload 0 /* this */
aload 1 /* uKey */
iload 3 /* i */
iconst_2
imul
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.bytesToWord:([BI)I
iastore
8: .line 226
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
9: iload 3 /* i */
bipush 8
if_icmplt 7
end local 3 // int i
10: .line 231
bipush 8
istore 3 /* i */
start local 3 // int i
11: goto 20
12: .line 233
StackMap locals:
StackMap stack:
iload 3 /* i */
bipush 7
iand
bipush 6
if_icmpge 15
13: .line 235
aload 2 /* key */
iload 3 /* i */
aload 2 /* key */
iload 3 /* i */
bipush 7
isub
iaload
bipush 127
iand
bipush 9
ishl
aload 2 /* key */
iload 3 /* i */
bipush 6
isub
iaload
bipush 7
ishr
ior
ldc 65535
iand
iastore
14: .line 236
goto 19
15: .line 237
StackMap locals:
StackMap stack:
iload 3 /* i */
bipush 7
iand
bipush 6
if_icmpne 18
16: .line 239
aload 2 /* key */
iload 3 /* i */
aload 2 /* key */
iload 3 /* i */
bipush 7
isub
iaload
bipush 127
iand
bipush 9
ishl
aload 2 /* key */
iload 3 /* i */
bipush 14
isub
iaload
bipush 7
ishr
ior
ldc 65535
iand
iastore
17: .line 240
goto 19
18: .line 243
StackMap locals:
StackMap stack:
aload 2 /* key */
iload 3 /* i */
aload 2 /* key */
iload 3 /* i */
bipush 15
isub
iaload
bipush 127
iand
bipush 9
ishl
aload 2 /* key */
iload 3 /* i */
bipush 14
isub
iaload
bipush 7
ishr
ior
ldc 65535
iand
iastore
19: .line 231
StackMap locals:
StackMap stack:
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
20: iload 3 /* i */
bipush 52
if_icmplt 12
end local 3 // int i
21: .line 247
aload 2 /* key */
areturn
end local 2 // int[] key
end local 1 // byte[] uKey
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 22 1 uKey [B
1 22 2 key [I
3 5 3 tmp [B
6 10 3 i I
11 21 3 i I
MethodParameters:
Name Flags
uKey
private int mulInv(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=2
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // int x
0: .line 261
iload 1 /* x */
iconst_2
if_icmpge 2
1: .line 263
iload 1 /* x */
ireturn
2: .line 266
StackMap locals:
StackMap stack:
iconst_1
istore 2 /* t0 */
start local 2 // int t0
3: .line 267
ldc 65537
iload 1 /* x */
idiv
istore 3 /* t1 */
start local 3 // int t1
4: .line 268
ldc 65537
iload 1 /* x */
irem
istore 5 /* y */
start local 5 // int y
5: .line 270
goto 14
6: .line 272
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int int int top int
StackMap stack:
iload 1 /* x */
iload 5 /* y */
idiv
istore 4 /* q */
start local 4 // int q
7: .line 273
iload 1 /* x */
iload 5 /* y */
irem
istore 1 /* x */
8: .line 274
iload 2 /* t0 */
iload 3 /* t1 */
iload 4 /* q */
imul
iadd
ldc 65535
iand
istore 2 /* t0 */
9: .line 275
iload 1 /* x */
iconst_1
if_icmpne 11
10: .line 277
iload 2 /* t0 */
ireturn
11: .line 279
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int int int int int
StackMap stack:
iload 5 /* y */
iload 1 /* x */
idiv
istore 4 /* q */
12: .line 280
iload 5 /* y */
iload 1 /* x */
irem
istore 5 /* y */
13: .line 281
iload 3 /* t1 */
iload 2 /* t0 */
iload 4 /* q */
imul
iadd
ldc 65535
iand
istore 3 /* t1 */
end local 4 // int q
14: .line 270
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int int int top int
StackMap stack:
iload 5 /* y */
iconst_1
if_icmpne 6
15: .line 284
iconst_1
iload 3 /* t1 */
isub
ldc 65535
iand
ireturn
end local 5 // int y
end local 3 // int t1
end local 2 // int t0
end local 1 // int x
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 16 1 x I
3 16 2 t0 I
4 16 3 t1 I
7 14 4 q I
5 16 5 y I
MethodParameters:
Name Flags
x
int addInv(int);
descriptor: (I)I
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // int x
0: .line 295
iconst_0
iload 1 /* x */
isub
ldc 65535
iand
ireturn
end local 1 // int x
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 1 1 x I
MethodParameters:
Name Flags
x
private int[] invertKey(int[]);
descriptor: ([I)[I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=10, args_size=2
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // int[] inKey
0: .line 306
bipush 52
istore 6 /* p */
start local 6 // int p
1: .line 307
bipush 52
newarray 10
astore 7 /* key */
start local 7 // int[] key
2: .line 308
iconst_0
istore 8 /* inOff */
start local 8 // int inOff
3: .line 310
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mulInv:(I)I
istore 2 /* t1 */
start local 2 // int t1
4: .line 311
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.addInv:(I)I
istore 3 /* t2 */
start local 3 // int t2
5: .line 312
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.addInv:(I)I
istore 4 /* t3 */
start local 4 // int t3
6: .line 313
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mulInv:(I)I
istore 5 /* t4 */
start local 5 // int t4
7: .line 314
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 5 /* t4 */
iastore
8: .line 315
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 4 /* t3 */
iastore
9: .line 316
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 3 /* t2 */
iastore
10: .line 317
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 2 /* t1 */
iastore
11: .line 319
iconst_1
istore 9 /* round */
start local 9 // int round
12: goto 26
13: .line 321
StackMap locals: org.bouncycastle.crypto.engines.IDEAEngine int[] int int int int int int[] int int
StackMap stack:
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
istore 2 /* t1 */
14: .line 322
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
istore 3 /* t2 */
15: .line 323
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 3 /* t2 */
iastore
16: .line 324
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 2 /* t1 */
iastore
17: .line 326
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mulInv:(I)I
istore 2 /* t1 */
18: .line 327
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.addInv:(I)I
istore 3 /* t2 */
19: .line 328
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.addInv:(I)I
istore 4 /* t3 */
20: .line 329
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mulInv:(I)I
istore 5 /* t4 */
21: .line 330
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 5 /* t4 */
iastore
22: .line 331
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 3 /* t2 */
iastore
23: .line 332
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 4 /* t3 */
iastore
24: .line 333
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 2 /* t1 */
iastore
25: .line 319
iinc 9 /* round */ 1
StackMap locals:
StackMap stack:
26: iload 9 /* round */
bipush 8
if_icmplt 13
end local 9 // int round
27: .line 336
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
istore 2 /* t1 */
28: .line 337
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
istore 3 /* t2 */
29: .line 338
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 3 /* t2 */
iastore
30: .line 339
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 2 /* t1 */
iastore
31: .line 341
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mulInv:(I)I
istore 2 /* t1 */
32: .line 342
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.addInv:(I)I
istore 3 /* t2 */
33: .line 343
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iinc 8 /* inOff */ 1
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.addInv:(I)I
istore 4 /* t3 */
34: .line 344
aload 0 /* this */
aload 1 /* inKey */
iload 8 /* inOff */
iaload
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.mulInv:(I)I
istore 5 /* t4 */
35: .line 345
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 5 /* t4 */
iastore
36: .line 346
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 4 /* t3 */
iastore
37: .line 347
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 3 /* t2 */
iastore
38: .line 348
aload 7 /* key */
iinc 6 /* p */ -1
iload 6 /* p */
iload 2 /* t1 */
iastore
39: .line 350
aload 7 /* key */
areturn
end local 8 // int inOff
end local 7 // int[] key
end local 6 // int p
end local 5 // int t4
end local 4 // int t3
end local 3 // int t2
end local 2 // int t1
end local 1 // int[] inKey
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 40 1 inKey [I
4 40 2 t1 I
5 40 3 t2 I
6 40 4 t3 I
7 40 5 t4 I
1 40 6 p I
2 40 7 key [I
3 40 8 inOff I
12 27 9 round I
MethodParameters:
Name Flags
inKey
private int[] generateWorkingKey(boolean, byte[]);
descriptor: (Z[B)[I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
start local 1 // boolean forEncryption
start local 2 // byte[] userKey
0: .line 357
iload 1 /* forEncryption */
ifeq 2
1: .line 359
aload 0 /* this */
aload 2 /* userKey */
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.expandKey:([B)[I
areturn
2: .line 363
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 0 /* this */
aload 2 /* userKey */
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.expandKey:([B)[I
invokevirtual org.bouncycastle.crypto.engines.IDEAEngine.invertKey:([I)[I
areturn
end local 2 // byte[] userKey
end local 1 // boolean forEncryption
end local 0 // org.bouncycastle.crypto.engines.IDEAEngine this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/engines/IDEAEngine;
0 3 1 forEncryption Z
0 3 2 userKey [B
MethodParameters:
Name Flags
forEncryption
userKey
}
SourceFile: "IDEAEngine.java"