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"