public class org.bouncycastle.jce.provider.JCEBlockCipher extends org.bouncycastle.jce.provider.WrapCipherSpi implements org.bouncycastle.jce.provider.PBE
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.JCEBlockCipher
  super_class: org.bouncycastle.jce.provider.WrapCipherSpi
{
  private java.lang.Class[] availableSpecs;
    descriptor: [Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.BlockCipher baseEngine;
    descriptor: Lorg/bouncycastle/crypto/BlockCipher;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher cipher;
    descriptor: Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.params.ParametersWithIV ivParam;
    descriptor: Lorg/bouncycastle/crypto/params/ParametersWithIV;
    flags: (0x0002) ACC_PRIVATE

  private int ivLength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private boolean padded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private javax.crypto.spec.PBEParameterSpec pbeSpec;
    descriptor: Ljavax/crypto/spec/PBEParameterSpec;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String pbeAlgorithm;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String modeName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  protected void <init>(org.bouncycastle.crypto.BlockCipher);
    descriptor: (Lorg/bouncycastle/crypto/BlockCipher;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // org.bouncycastle.crypto.BlockCipher engine
         0: .line 90
            aload 0 /* this */
            invokespecial org.bouncycastle.jce.provider.WrapCipherSpi.<init>:()V
         1: .line 68
            aload 0 /* this */
         2: .line 69
            iconst_5
            anewarray java.lang.Class
            dup
            iconst_0
         3: .line 70
            ldc Ljavax/crypto/spec/RC2ParameterSpec;
            aastore
            dup
            iconst_1
         4: .line 71
            ldc Ljavax/crypto/spec/RC5ParameterSpec;
            aastore
            dup
            iconst_2
         5: .line 72
            ldc Ljavax/crypto/spec/IvParameterSpec;
            aastore
            dup
            iconst_3
         6: .line 73
            ldc Ljavax/crypto/spec/PBEParameterSpec;
            aastore
            dup
            iconst_4
         7: .line 74
            ldc Lorg/bouncycastle/jce/spec/GOST28147ParameterSpec;
            aastore
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.availableSpecs:[Ljava/lang/Class;
         8: .line 81
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
         9: .line 85
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
        10: .line 86
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
        11: .line 88
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
        12: .line 93
            aload 0 /* this */
            aload 1 /* engine */
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
        13: .line 95
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 1 /* engine */
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        14: .line 96
            return
        end local 1 // org.bouncycastle.crypto.BlockCipher engine
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0    this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   15     1  engine  Lorg/bouncycastle/crypto/BlockCipher;
    MethodParameters:
        Name  Flags
      engine  

  protected void <init>(org.bouncycastle.crypto.BlockCipher, int);
    descriptor: (Lorg/bouncycastle/crypto/BlockCipher;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // org.bouncycastle.crypto.BlockCipher engine
        start local 2 // int ivLength
         0: .line 98
            aload 0 /* this */
            invokespecial org.bouncycastle.jce.provider.WrapCipherSpi.<init>:()V
         1: .line 68
            aload 0 /* this */
         2: .line 69
            iconst_5
            anewarray java.lang.Class
            dup
            iconst_0
         3: .line 70
            ldc Ljavax/crypto/spec/RC2ParameterSpec;
            aastore
            dup
            iconst_1
         4: .line 71
            ldc Ljavax/crypto/spec/RC5ParameterSpec;
            aastore
            dup
            iconst_2
         5: .line 72
            ldc Ljavax/crypto/spec/IvParameterSpec;
            aastore
            dup
            iconst_3
         6: .line 73
            ldc Ljavax/crypto/spec/PBEParameterSpec;
            aastore
            dup
            iconst_4
         7: .line 74
            ldc Lorg/bouncycastle/jce/spec/GOST28147ParameterSpec;
            aastore
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.availableSpecs:[Ljava/lang/Class;
         8: .line 81
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
         9: .line 85
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
        10: .line 86
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
        11: .line 88
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
        12: .line 102
            aload 0 /* this */
            aload 1 /* engine */
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
        13: .line 104
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 1 /* engine */
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        14: .line 105
            aload 0 /* this */
            iload 2 /* ivLength */
            bipush 8
            idiv
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        15: .line 106
            return
        end local 2 // int ivLength
        end local 1 // org.bouncycastle.crypto.BlockCipher engine
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   16     1    engine  Lorg/bouncycastle/crypto/BlockCipher;
            0   16     2  ivLength  I
    MethodParameters:
          Name  Flags
      engine    
      ivLength  

  protected void <init>(org.bouncycastle.crypto.BufferedBlockCipher, int);
    descriptor: (Lorg/bouncycastle/crypto/BufferedBlockCipher;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // org.bouncycastle.crypto.BufferedBlockCipher engine
        start local 2 // int ivLength
         0: .line 108
            aload 0 /* this */
            invokespecial org.bouncycastle.jce.provider.WrapCipherSpi.<init>:()V
         1: .line 68
            aload 0 /* this */
         2: .line 69
            iconst_5
            anewarray java.lang.Class
            dup
            iconst_0
         3: .line 70
            ldc Ljavax/crypto/spec/RC2ParameterSpec;
            aastore
            dup
            iconst_1
         4: .line 71
            ldc Ljavax/crypto/spec/RC5ParameterSpec;
            aastore
            dup
            iconst_2
         5: .line 72
            ldc Ljavax/crypto/spec/IvParameterSpec;
            aastore
            dup
            iconst_3
         6: .line 73
            ldc Ljavax/crypto/spec/PBEParameterSpec;
            aastore
            dup
            iconst_4
         7: .line 74
            ldc Lorg/bouncycastle/jce/spec/GOST28147ParameterSpec;
            aastore
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.availableSpecs:[Ljava/lang/Class;
         8: .line 81
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
         9: .line 85
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
        10: .line 86
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
        11: .line 88
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
        12: .line 112
            aload 0 /* this */
            aload 1 /* engine */
            invokevirtual org.bouncycastle.crypto.BufferedBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
        13: .line 114
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 1 /* engine */
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        14: .line 115
            aload 0 /* this */
            iload 2 /* ivLength */
            bipush 8
            idiv
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        15: .line 116
            return
        end local 2 // int ivLength
        end local 1 // org.bouncycastle.crypto.BufferedBlockCipher engine
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   16     1    engine  Lorg/bouncycastle/crypto/BufferedBlockCipher;
            0   16     2  ivLength  I
    MethodParameters:
          Name  Flags
      engine    
      ivLength  

  protected int engineGetBlockSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
         0: .line 120
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            ireturn
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;

  protected byte[] engineGetIV();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
         0: .line 125
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
            ifnull 1
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
            invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getIV:()[B
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: byte[]
         2: areturn
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;

  protected int engineGetKeySize(java.security.Key);
    descriptor: (Ljava/security/Key;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // java.security.Key key
         0: .line 131
            aload 1 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            arraylength
            bipush 8
            imul
            ireturn
        end local 1 // java.security.Key key
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0    1     1   key  Ljava/security/Key;
    MethodParameters:
      Name  Flags
      key   

  protected int engineGetOutputSize(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // int inputLen
         0: .line 137
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            iload 1 /* inputLen */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getOutputSize:(I)I
            ireturn
        end local 1 // int inputLen
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0    1     1  inputLen  I
    MethodParameters:
          Name  Flags
      inputLen  

  protected java.security.AlgorithmParameters engineGetParameters();
    descriptor: ()Ljava/security/AlgorithmParameters;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
         0: .line 142
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
            ifnonnull 16
         1: .line 144
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
            ifnull 7
         2: .line 148
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
            getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
            invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
         3: .line 149
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
            invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
         4: .line 150
            goto 16
         5: .line 151
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         6: .line 153
            aconst_null
            areturn
         7: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
            ifnull 16
         8: .line 158
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            astore 1 /* name */
        start local 1 // java.lang.String name
         9: .line 160
            aload 1 /* name */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 11
        10: .line 162
            aload 1 /* name */
            iconst_0
            aload 1 /* name */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* name */
        11: .line 167
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
            invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
        12: .line 168
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
            invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getIV:()[B
            invokevirtual java.security.AlgorithmParameters.init:([B)V
        13: .line 169
            goto 16
        14: .line 170
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        15: .line 172
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // java.lang.String name
        16: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
            areturn
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            9   16     1  name  Ljava/lang/String;
           15   16     2     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.Exception
          11    13      14  Class java.lang.Exception

  protected void engineSetMode(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=3, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // java.lang.String mode
         0: .line 184
            aload 0 /* this */
            aload 1 /* mode */
            invokestatic org.bouncycastle.util.Strings.toUpperCase:(Ljava/lang/String;)Ljava/lang/String;
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
         1: .line 186
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "ECB"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         2: .line 188
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
         3: .line 189
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
         4: .line 190
            goto 85
         5: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "CBC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
         6: .line 193
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
         7: .line 194
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
         8: .line 195
            new org.bouncycastle.crypto.modes.CBCBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.CBCBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
         9: .line 194
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        10: .line 196
            goto 85
        11: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "OFB"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 23
        12: .line 199
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        13: .line 200
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iconst_3
            if_icmpeq 19
        14: .line 202
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* wordSize */
        start local 2 // int wordSize
        15: .line 204
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
        16: .line 205
            new org.bouncycastle.crypto.modes.OFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            iload 2 /* wordSize */
            invokespecial org.bouncycastle.crypto.modes.OFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
        17: .line 204
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        end local 2 // int wordSize
        18: .line 206
            goto 85
        19: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
        20: .line 210
            new org.bouncycastle.crypto.modes.OFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            bipush 8
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            imul
            invokespecial org.bouncycastle.crypto.modes.OFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
        21: .line 209
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        22: .line 212
            goto 85
        23: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "CFB"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 35
        24: .line 215
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        25: .line 216
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iconst_3
            if_icmpeq 31
        26: .line 218
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* wordSize */
        start local 2 // int wordSize
        27: .line 220
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
        28: .line 221
            new org.bouncycastle.crypto.modes.CFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            iload 2 /* wordSize */
            invokespecial org.bouncycastle.crypto.modes.CFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
        29: .line 220
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        end local 2 // int wordSize
        30: .line 222
            goto 85
        31: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
        32: .line 226
            new org.bouncycastle.crypto.modes.CFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            bipush 8
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            imul
            invokespecial org.bouncycastle.crypto.modes.CFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
        33: .line 225
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        34: .line 228
            goto 85
        35: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "PGP"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 42
        36: .line 231
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "PGPCFBwithIV"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            istore 2 /* inlineIV */
        start local 2 // boolean inlineIV
        37: .line 233
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        38: .line 234
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
        39: .line 235
            new org.bouncycastle.crypto.modes.PGPCFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            iload 2 /* inlineIV */
            invokespecial org.bouncycastle.crypto.modes.PGPCFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Z)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
        40: .line 234
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        end local 2 // boolean inlineIV
        41: .line 236
            goto 85
        42: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "OpenPGPCFB"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 48
        43: .line 239
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        44: .line 240
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
        45: .line 241
            new org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
        46: .line 240
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        47: .line 242
            goto 85
        48: .line 243
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "SIC"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 56
        49: .line 245
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        50: .line 246
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            bipush 16
            if_icmpge 52
        51: .line 248
            new java.lang.IllegalArgumentException
            dup
            ldc "Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        52: .line 250
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            new org.bouncycastle.crypto.BufferedBlockCipher
            dup
        53: .line 251
            new org.bouncycastle.crypto.modes.SICBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.SICBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.crypto.BufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
        54: .line 250
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        55: .line 252
            goto 85
        56: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "CTR"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 62
        57: .line 255
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        58: .line 256
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            new org.bouncycastle.crypto.BufferedBlockCipher
            dup
        59: .line 257
            new org.bouncycastle.crypto.modes.SICBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.SICBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.crypto.BufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
        60: .line 256
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        61: .line 258
            goto 85
        62: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "GOFB"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 68
        63: .line 261
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        64: .line 262
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            new org.bouncycastle.crypto.BufferedBlockCipher
            dup
        65: .line 263
            new org.bouncycastle.crypto.modes.GOFBBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.GOFBBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.crypto.BufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
        66: .line 262
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        67: .line 264
            goto 85
        68: .line 265
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "CTS"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 72
        69: .line 267
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        70: .line 268
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            new org.bouncycastle.crypto.modes.CTSBlockCipher
            dup
            new org.bouncycastle.crypto.modes.CBCBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.CBCBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.crypto.modes.CTSBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        71: .line 269
            goto 85
        72: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "CCM"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 76
        73: .line 272
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        74: .line 273
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher
            dup
            new org.bouncycastle.crypto.modes.CCMBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.CCMBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/modes/AEADBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        75: .line 274
            goto 85
        76: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "EAX"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 80
        77: .line 277
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        78: .line 278
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher
            dup
            new org.bouncycastle.crypto.modes.EAXBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.EAXBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/modes/AEADBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        79: .line 279
            goto 85
        80: .line 280
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "GCM"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 84
        81: .line 282
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
        82: .line 283
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher
            dup
            new org.bouncycastle.crypto.modes.GCMBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.GCMBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/modes/AEADBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        83: .line 284
            goto 85
        84: .line 287
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "can't support mode "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mode */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        85: .line 289
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String mode
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   86     0      this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   86     1      mode  Ljava/lang/String;
           15   18     2  wordSize  I
           27   30     2  wordSize  I
           37   41     2  inlineIV  Z
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
      Name  Flags
      mode  

  protected void engineSetPadding(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // java.lang.String padding
         0: .line 295
            aload 1 /* padding */
            invokestatic org.bouncycastle.util.Strings.toUpperCase:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* paddingName */
        start local 2 // java.lang.String paddingName
         1: .line 297
            aload 2 /* paddingName */
            ldc "NOPADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         2: .line 299
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.wrapOnNoPadding:()Z
            ifeq 30
         3: .line 301
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            new org.bouncycastle.crypto.BufferedBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.BufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
         4: .line 303
            goto 30
         5: .line 304
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* paddingName */
            ldc "WITHCTS"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         6: .line 306
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            new org.bouncycastle.crypto.modes.CTSBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.crypto.modes.CTSBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BufferedBlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
         7: .line 307
            goto 30
         8: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.padded:Z
         9: .line 312
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            invokevirtual org.bouncycastle.jce.provider.JCEBlockCipher.isAEADModeName:(Ljava/lang/String;)Z
            ifeq 11
        10: .line 314
            new javax.crypto.NoSuchPaddingException
            dup
            ldc "Only NoPadding can be used with AEAD modes."
            invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 316
      StackMap locals:
      StackMap stack:
            aload 2 /* paddingName */
            ldc "PKCS5PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            aload 2 /* paddingName */
            ldc "PKCS7PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        12: .line 318
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        13: .line 319
            goto 30
        14: .line 320
      StackMap locals:
      StackMap stack:
            aload 2 /* paddingName */
            ldc "ZEROBYTEPADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        15: .line 322
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            new org.bouncycastle.crypto.paddings.ZeroBytePadding
            dup
            invokespecial org.bouncycastle.crypto.paddings.ZeroBytePadding.<init>:()V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        16: .line 323
            goto 30
        17: .line 324
      StackMap locals:
      StackMap stack:
            aload 2 /* paddingName */
            ldc "ISO10126PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            aload 2 /* paddingName */
            ldc "ISO10126-2PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        18: .line 326
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            new org.bouncycastle.crypto.paddings.ISO10126d2Padding
            dup
            invokespecial org.bouncycastle.crypto.paddings.ISO10126d2Padding.<init>:()V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        19: .line 327
            goto 30
        20: .line 328
      StackMap locals:
      StackMap stack:
            aload 2 /* paddingName */
            ldc "X9.23PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 21
            aload 2 /* paddingName */
            ldc "X923PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        21: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            new org.bouncycastle.crypto.paddings.X923Padding
            dup
            invokespecial org.bouncycastle.crypto.paddings.X923Padding.<init>:()V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        22: .line 331
            goto 30
        23: .line 332
      StackMap locals:
      StackMap stack:
            aload 2 /* paddingName */
            ldc "ISO7816-4PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 24
            aload 2 /* paddingName */
            ldc "ISO9797-1PADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        24: .line 334
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            new org.bouncycastle.crypto.paddings.ISO7816d4Padding
            dup
            invokespecial org.bouncycastle.crypto.paddings.ISO7816d4Padding.<init>:()V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        25: .line 335
            goto 30
        26: .line 336
      StackMap locals:
      StackMap stack:
            aload 2 /* paddingName */
            ldc "TBCPADDING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 29
        27: .line 338
            aload 0 /* this */
            new org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            new org.bouncycastle.crypto.paddings.TBCPadding
            dup
            invokespecial org.bouncycastle.crypto.paddings.TBCPadding.<init>:()V
            invokespecial org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;Lorg/bouncycastle/crypto/paddings/BlockCipherPadding;)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
        28: .line 339
            goto 30
        29: .line 342
      StackMap locals:
      StackMap stack:
            new javax.crypto.NoSuchPaddingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Padding "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* padding */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " unknown."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 345
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String paddingName
        end local 1 // java.lang.String padding
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   31     0         this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   31     1      padding  Ljava/lang/String;
            1   31     2  paddingName  Ljava/lang/String;
    Exceptions:
      throws javax.crypto.NoSuchPaddingException
    MethodParameters:
         Name  Flags
      padding  

  protected void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.spec.AlgorithmParameterSpec params
        start local 4 // java.security.SecureRandom random
         0: .line 356
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
         1: .line 357
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
         2: .line 358
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
         3: .line 363
            aload 2 /* key */
            instanceof javax.crypto.SecretKey
            ifne 5
         4: .line 365
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Key for algorithm "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* key */
            invokeinterface java.security.Key.getAlgorithm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " not suitable for symmetric enryption."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 371
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            ifnonnull 7
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            ldc "RC5-64"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 7
         6: .line 373
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "RC5 requires an RC5ParametersSpec to be passed in."
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 379
      StackMap locals:
      StackMap stack:
            aload 2 /* key */
            instanceof org.bouncycastle.jce.provider.JCEPBEKey
            ifeq 25
         8: .line 381
            aload 2 /* key */
            checkcast org.bouncycastle.jce.provider.JCEPBEKey
            astore 6 /* k */
        start local 6 // org.bouncycastle.jce.provider.JCEPBEKey k
         9: .line 383
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getOID:()Lorg/bouncycastle/asn1/DERObjectIdentifier;
            ifnull 12
        10: .line 385
            aload 0 /* this */
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getOID:()Lorg/bouncycastle/asn1/DERObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.DERObjectIdentifier.getId:()Ljava/lang/String;
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
        11: .line 386
            goto 13
        12: .line 389
      StackMap locals: org.bouncycastle.jce.provider.JCEBlockCipher int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom top org.bouncycastle.jce.provider.JCEPBEKey
      StackMap stack:
            aload 0 /* this */
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getAlgorithm:()Ljava/lang/String;
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeAlgorithm:Ljava/lang/String;
        13: .line 392
      StackMap locals:
      StackMap stack:
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getParam:()Lorg/bouncycastle/crypto/CipherParameters;
            ifnull 17
        14: .line 394
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getParam:()Lorg/bouncycastle/crypto/CipherParameters;
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        15: .line 395
            aload 0 /* this */
            new javax.crypto.spec.PBEParameterSpec
            dup
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getSalt:()[B
            aload 6 /* k */
            invokevirtual org.bouncycastle.jce.provider.JCEPBEKey.getIterationCount:()I
            invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BI)V
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
        16: .line 396
            goto 22
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        17: .line 397
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            instanceof javax.crypto.spec.PBEParameterSpec
            ifeq 21
        18: .line 399
            aload 0 /* this */
            aload 3 /* params */
            checkcast javax.crypto.spec.PBEParameterSpec
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.pbeSpec:Ljavax/crypto/spec/PBEParameterSpec;
        19: .line 400
            aload 6 /* k */
            aload 3 /* params */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            invokestatic org.bouncycastle.jce.provider.PBE$Util.makePBEParameters:(Lorg/bouncycastle/jce/provider/JCEPBEKey;Ljava/security/spec/AlgorithmParameterSpec;Ljava/lang/String;)Lorg/bouncycastle/crypto/CipherParameters;
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        20: .line 401
            goto 22
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        21: .line 404
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "PBE requires PBE parameters to be set."
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        22: .line 407
      StackMap locals: org.bouncycastle.jce.provider.JCEBlockCipher int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom org.bouncycastle.crypto.CipherParameters org.bouncycastle.jce.provider.JCEPBEKey
      StackMap stack:
            aload 5 /* param */
            instanceof org.bouncycastle.crypto.params.ParametersWithIV
            ifeq 72
        23: .line 409
            aload 0 /* this */
            aload 5 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
        end local 6 // org.bouncycastle.jce.provider.JCEPBEKey k
        24: .line 411
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        25: .line 412
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            ifnonnull 28
        26: .line 414
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        27: .line 415
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        28: .line 416
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            instanceof javax.crypto.spec.IvParameterSpec
            ifeq 40
        29: .line 418
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            ifeq 36
        30: .line 420
            aload 3 /* params */
            checkcast javax.crypto.spec.IvParameterSpec
            astore 6 /* p */
        start local 6 // javax.crypto.spec.IvParameterSpec p
        31: .line 422
            aload 6 /* p */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            if_icmpeq 33
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            invokevirtual org.bouncycastle.jce.provider.JCEBlockCipher.isAEADModeName:(Ljava/lang/String;)Z
            ifne 33
        32: .line 424
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "IV must be "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes long."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        33: .line 427
      StackMap locals: org.bouncycastle.jce.provider.JCEBlockCipher int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom top javax.crypto.spec.IvParameterSpec
      StackMap stack:
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            aload 6 /* p */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        34: .line 428
            aload 0 /* this */
            aload 5 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
        end local 6 // javax.crypto.spec.IvParameterSpec p
        35: .line 429
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        36: .line 432
      StackMap locals: org.bouncycastle.jce.provider.JCEBlockCipher int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ifnull 38
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.modeName:Ljava/lang/String;
            ldc "ECB"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 38
        37: .line 434
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "ECB mode does not use an IV"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        38: .line 437
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        39: .line 439
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        40: .line 440
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            instanceof org.bouncycastle.jce.spec.GOST28147ParameterSpec
            ifeq 49
        41: .line 442
            aload 3 /* params */
            checkcast org.bouncycastle.jce.spec.GOST28147ParameterSpec
            astore 6 /* gost28147Param */
        start local 6 // org.bouncycastle.jce.spec.GOST28147ParameterSpec gost28147Param
        42: .line 444
            new org.bouncycastle.crypto.params.ParametersWithSBox
            dup
        43: .line 445
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            aload 3 /* params */
            checkcast org.bouncycastle.jce.spec.GOST28147ParameterSpec
            invokevirtual org.bouncycastle.jce.spec.GOST28147ParameterSpec.getSbox:()[B
        44: .line 444
            invokespecial org.bouncycastle.crypto.params.ParametersWithSBox.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        45: .line 447
            aload 6 /* gost28147Param */
            invokevirtual org.bouncycastle.jce.spec.GOST28147ParameterSpec.getIV:()[B
            ifnull 72
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            ifeq 72
        46: .line 449
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            aload 5 /* param */
            aload 6 /* gost28147Param */
            invokevirtual org.bouncycastle.jce.spec.GOST28147ParameterSpec.getIV:()[B
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            astore 5 /* param */
        47: .line 450
            aload 0 /* this */
            aload 5 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
        end local 6 // org.bouncycastle.jce.spec.GOST28147ParameterSpec gost28147Param
        48: .line 452
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        49: .line 453
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            instanceof javax.crypto.spec.RC2ParameterSpec
            ifeq 56
        50: .line 455
            aload 3 /* params */
            checkcast javax.crypto.spec.RC2ParameterSpec
            astore 6 /* rc2Param */
        start local 6 // javax.crypto.spec.RC2ParameterSpec rc2Param
        51: .line 457
            new org.bouncycastle.crypto.params.RC2Parameters
            dup
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            aload 3 /* params */
            checkcast javax.crypto.spec.RC2ParameterSpec
            invokevirtual javax.crypto.spec.RC2ParameterSpec.getEffectiveKeyBits:()I
            invokespecial org.bouncycastle.crypto.params.RC2Parameters.<init>:([BI)V
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        52: .line 459
            aload 6 /* rc2Param */
            invokevirtual javax.crypto.spec.RC2ParameterSpec.getIV:()[B
            ifnull 72
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            ifeq 72
        53: .line 461
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            aload 5 /* param */
            aload 6 /* rc2Param */
            invokevirtual javax.crypto.spec.RC2ParameterSpec.getIV:()[B
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            astore 5 /* param */
        54: .line 462
            aload 0 /* this */
            aload 5 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
        end local 6 // javax.crypto.spec.RC2ParameterSpec rc2Param
        55: .line 464
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        56: .line 465
      StackMap locals:
      StackMap stack:
            aload 3 /* params */
            instanceof javax.crypto.spec.RC5ParameterSpec
            ifeq 71
        57: .line 467
            aload 3 /* params */
            checkcast javax.crypto.spec.RC5ParameterSpec
            astore 6 /* rc5Param */
        start local 6 // javax.crypto.spec.RC5ParameterSpec rc5Param
        58: .line 469
            new org.bouncycastle.crypto.params.RC5Parameters
            dup
            aload 2 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            aload 3 /* params */
            checkcast javax.crypto.spec.RC5ParameterSpec
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getRounds:()I
            invokespecial org.bouncycastle.crypto.params.RC5Parameters.<init>:([BI)V
            astore 5 /* param */
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        59: .line 470
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            ldc "RC5"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 66
        60: .line 472
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            ldc "RC5-32"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 63
        61: .line 474
            aload 6 /* rc5Param */
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getWordSize:()I
            bipush 32
            if_icmpeq 67
        62: .line 476
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "RC5 already set up for a word size of 32 not "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* rc5Param */
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getWordSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        63: .line 479
      StackMap locals: org.bouncycastle.crypto.CipherParameters javax.crypto.spec.RC5ParameterSpec
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.baseEngine:Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            ldc "RC5-64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 67
        64: .line 481
            aload 6 /* rc5Param */
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getWordSize:()I
            bipush 64
            if_icmpeq 67
        65: .line 483
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "RC5 already set up for a word size of 64 not "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* rc5Param */
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getWordSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        66: .line 489
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "RC5 parameters passed to a cipher that is not RC5."
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        67: .line 491
      StackMap locals:
      StackMap stack:
            aload 6 /* rc5Param */
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getIV:()[B
            ifnull 72
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            ifeq 72
        68: .line 493
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            aload 5 /* param */
            aload 6 /* rc5Param */
            invokevirtual javax.crypto.spec.RC5ParameterSpec.getIV:()[B
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            astore 5 /* param */
        69: .line 494
            aload 0 /* this */
            aload 5 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
        end local 6 // javax.crypto.spec.RC5ParameterSpec rc5Param
        70: .line 496
            goto 72
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        71: .line 499
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "unknown parameter type."
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        start local 5 // org.bouncycastle.crypto.CipherParameters param
        72: .line 502
      StackMap locals: org.bouncycastle.crypto.CipherParameters
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            ifeq 84
            aload 5 /* param */
            instanceof org.bouncycastle.crypto.params.ParametersWithIV
            ifne 84
        73: .line 504
            aload 4 /* random */
            astore 6 /* ivRandom */
        start local 6 // java.security.SecureRandom ivRandom
        74: .line 506
            aload 6 /* ivRandom */
            ifnonnull 76
        75: .line 508
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            astore 6 /* ivRandom */
        76: .line 511
      StackMap locals: java.security.SecureRandom
      StackMap stack:
            iload 1 /* opmode */
            iconst_1
            if_icmpeq 77
            iload 1 /* opmode */
            iconst_3
            if_icmpne 82
        77: .line 513
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.ivLength:I
            newarray 8
            astore 7 /* iv */
        start local 7 // byte[] iv
        78: .line 515
            aload 6 /* ivRandom */
            aload 7 /* iv */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        79: .line 516
            new org.bouncycastle.crypto.params.ParametersWithIV
            dup
            aload 5 /* param */
            aload 7 /* iv */
            invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
            astore 5 /* param */
        80: .line 517
            aload 0 /* this */
            aload 5 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithIV
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.ivParam:Lorg/bouncycastle/crypto/params/ParametersWithIV;
        end local 7 // byte[] iv
        81: .line 518
            goto 84
        82: .line 519
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUnderlyingCipher:()Lorg/bouncycastle/crypto/BlockCipher;
            invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
            ldc "PGPCFB"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            ifge 84
        83: .line 521
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "no IV set when one expected"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.security.SecureRandom ivRandom
        84: .line 525
      StackMap locals:
      StackMap stack:
            aload 4 /* random */
            ifnull 86
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.padded:Z
            ifeq 86
        85: .line 527
            new org.bouncycastle.crypto.params.ParametersWithRandom
            dup
            aload 5 /* param */
            aload 4 /* random */
            invokespecial org.bouncycastle.crypto.params.ParametersWithRandom.<init>:(Lorg/bouncycastle/crypto/CipherParameters;Ljava/security/SecureRandom;)V
            astore 5 /* param */
        86: .line 532
      StackMap locals:
      StackMap stack:
            iload 1 /* opmode */
            tableswitch { // 1 - 4
                    1: 87
                    2: 89
                    3: 87
                    4: 89
              default: 91
          }
        87: .line 536
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            iconst_1
            aload 5 /* param */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
        88: .line 537
            goto 94
        89: .line 540
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            iconst_0
            aload 5 /* param */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
        90: .line 541
            goto 94
        91: .line 543
      StackMap locals:
      StackMap stack:
            new java.security.InvalidParameterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown opmode "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* opmode */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " passed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        92: .line 546
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        93: .line 548
            new java.security.InvalidKeyException
            dup
            aload 6 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.Exception e
        94: .line 550
      StackMap locals:
      StackMap stack:
            return
        end local 5 // org.bouncycastle.crypto.CipherParameters param
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.spec.AlgorithmParameterSpec params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   95     0            this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   95     1          opmode  I
            0   95     2             key  Ljava/security/Key;
            0   95     3          params  Ljava/security/spec/AlgorithmParameterSpec;
            0   95     4          random  Ljava/security/SecureRandom;
           15   17     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           20   21     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           22   25     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           27   28     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           34   36     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           39   40     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           45   49     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           52   56     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           59   71     5           param  Lorg/bouncycastle/crypto/CipherParameters;
           72   95     5           param  Lorg/bouncycastle/crypto/CipherParameters;
            9   24     6               k  Lorg/bouncycastle/jce/provider/JCEPBEKey;
           31   35     6               p  Ljavax/crypto/spec/IvParameterSpec;
           42   48     6  gost28147Param  Lorg/bouncycastle/jce/spec/GOST28147ParameterSpec;
           51   55     6        rc2Param  Ljavax/crypto/spec/RC2ParameterSpec;
           58   70     6        rc5Param  Ljavax/crypto/spec/RC5ParameterSpec;
           74   84     6        ivRandom  Ljava/security/SecureRandom;
           78   81     7              iv  [B
           93   94     6               e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          86    92      92  Class java.lang.Exception
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.AlgorithmParameters params
        start local 4 // java.security.SecureRandom random
         0: .line 559
            aconst_null
            astore 5 /* paramSpec */
        start local 5 // java.security.spec.AlgorithmParameterSpec paramSpec
         1: .line 561
            aload 3 /* params */
            ifnull 11
         2: .line 563
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 8
         4: .line 567
      StackMap locals: java.security.spec.AlgorithmParameterSpec int
      StackMap stack:
            aload 3 /* params */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.availableSpecs:[Ljava/lang/Class;
            iload 6 /* i */
            aaload
            invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
            astore 5 /* paramSpec */
         5: .line 568
            goto 9
         6: .line 570
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         7: .line 563
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 6 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.availableSpecs:[Ljava/lang/Class;
            arraylength
            if_icmpne 4
        end local 6 // int i
         9: .line 576
      StackMap locals:
      StackMap stack:
            aload 5 /* paramSpec */
            ifnonnull 11
        10: .line 578
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "can't handle parameter "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* params */
            invokevirtual java.security.AlgorithmParameters.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 582
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* opmode */
            aload 2 /* key */
            aload 5 /* paramSpec */
            aload 4 /* random */
            invokevirtual org.bouncycastle.jce.provider.JCEBlockCipher.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
        12: .line 584
            aload 0 /* this */
            aload 3 /* params */
            putfield org.bouncycastle.jce.provider.JCEBlockCipher.engineParams:Ljava/security/AlgorithmParameters;
        13: .line 585
            return
        end local 5 // java.security.spec.AlgorithmParameterSpec paramSpec
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.AlgorithmParameters params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   14     1     opmode  I
            0   14     2        key  Ljava/security/Key;
            0   14     3     params  Ljava/security/AlgorithmParameters;
            0   14     4     random  Ljava/security/SecureRandom;
            1   14     5  paramSpec  Ljava/security/spec/AlgorithmParameterSpec;
            3    9     6          i  I
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.Exception
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected void engineInit(int, java.security.Key, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.SecureRandom random
         0: .line 595
            aload 0 /* this */
            iload 1 /* opmode */
            aload 2 /* key */
            aconst_null
            aload 3 /* random */
            invokevirtual org.bouncycastle.jce.provider.JCEBlockCipher.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         1: .line 596
            goto 4
         2: .line 597
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
            astore 4 /* e */
        start local 4 // java.security.InvalidAlgorithmParameterException e
         3: .line 599
            new java.security.InvalidKeyException
            dup
            aload 4 /* e */
            invokevirtual java.security.InvalidAlgorithmParameterException.getMessage:()Ljava/lang/String;
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.security.InvalidAlgorithmParameterException e
         4: .line 601
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.security.SecureRandom random
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0    5     1  opmode  I
            0    5     2     key  Ljava/security/Key;
            0    5     3  random  Ljava/security/SecureRandom;
            3    4     4       e  Ljava/security/InvalidAlgorithmParameterException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidAlgorithmParameterException
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      random  

  protected byte[] engineUpdate(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 608
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            iload 3 /* inputLen */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.getUpdateOutputSize:(I)I
            istore 4 /* length */
        start local 4 // int length
         1: .line 610
            iload 4 /* length */
            ifle 11
         2: .line 612
            iload 4 /* length */
            newarray 8
            astore 5 /* out */
        start local 5 // byte[] out
         3: .line 614
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 5 /* out */
            iconst_0
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.processBytes:([BII[BI)I
            istore 6 /* len */
        start local 6 // int len
         4: .line 616
            iload 6 /* len */
            ifne 6
         5: .line 618
            aconst_null
            areturn
         6: .line 620
      StackMap locals: int byte[] int
      StackMap stack:
            iload 6 /* len */
            aload 5 /* out */
            arraylength
            if_icmpeq 10
         7: .line 622
            iload 6 /* len */
            newarray 8
            astore 7 /* tmp */
        start local 7 // byte[] tmp
         8: .line 624
            aload 5 /* out */
            iconst_0
            aload 7 /* tmp */
            iconst_0
            iload 6 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 626
            aload 7 /* tmp */
            areturn
        end local 7 // byte[] tmp
        10: .line 629
      StackMap locals:
      StackMap stack:
            aload 5 /* out */
            areturn
        end local 6 // int len
        end local 5 // byte[] out
        11: .line 632
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aconst_null
            iconst_0
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.processBytes:([BII[BI)I
            pop
        12: .line 634
            aconst_null
            areturn
        end local 4 // int length
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   13     1        input  [B
            0   13     2  inputOffset  I
            0   13     3     inputLen  I
            1   13     4       length  I
            3   11     5          out  [B
            4   11     6          len  I
            8   10     7          tmp  [B
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineUpdate(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 647
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 4 /* output */
            iload 5 /* outputOffset */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.processBytes:([BII[BI)I
         1: ireturn
         2: .line 649
      StackMap locals:
      StackMap stack: org.bouncycastle.crypto.DataLengthException
            astore 6 /* e */
        start local 6 // org.bouncycastle.crypto.DataLengthException e
         3: .line 651
            new javax.crypto.ShortBufferException
            dup
            aload 6 /* e */
            invokevirtual org.bouncycastle.crypto.DataLengthException.getMessage:()Ljava/lang/String;
            invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // org.bouncycastle.crypto.DataLengthException e
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0    4     1         input  [B
            0    4     2   inputOffset  I
            0    4     3      inputLen  I
            0    4     4        output  [B
            0    4     5  outputOffset  I
            3    4     6             e  Lorg/bouncycastle/crypto/DataLengthException;
      Exception table:
        from    to  target  type
           0     1       2  Class org.bouncycastle.crypto.DataLengthException
    Exceptions:
      throws javax.crypto.ShortBufferException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected byte[] engineDoFinal(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 661
            iconst_0
            istore 4 /* len */
        start local 4 // int len
         1: .line 662
            aload 0 /* this */
            iload 3 /* inputLen */
            invokevirtual org.bouncycastle.jce.provider.JCEBlockCipher.engineGetOutputSize:(I)I
            newarray 8
            astore 5 /* tmp */
        start local 5 // byte[] tmp
         2: .line 664
            iload 3 /* inputLen */
            ifeq 4
         3: .line 666
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 5 /* tmp */
            iconst_0
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.processBytes:([BII[BI)I
            istore 4 /* len */
         4: .line 671
      StackMap locals: int byte[]
      StackMap stack:
            iload 4 /* len */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 5 /* tmp */
            iload 4 /* len */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.doFinal:([BI)I
            iadd
            istore 4 /* len */
         5: .line 672
            goto 10
         6: .line 673
      StackMap locals:
      StackMap stack: org.bouncycastle.crypto.DataLengthException
            astore 6 /* e */
        start local 6 // org.bouncycastle.crypto.DataLengthException e
         7: .line 675
            new javax.crypto.IllegalBlockSizeException
            dup
            aload 6 /* e */
            invokevirtual org.bouncycastle.crypto.DataLengthException.getMessage:()Ljava/lang/String;
            invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // org.bouncycastle.crypto.DataLengthException e
         8: .line 677
      StackMap locals:
      StackMap stack: org.bouncycastle.crypto.InvalidCipherTextException
            astore 6 /* e */
        start local 6 // org.bouncycastle.crypto.InvalidCipherTextException e
         9: .line 679
            new javax.crypto.BadPaddingException
            dup
            aload 6 /* e */
            invokevirtual org.bouncycastle.crypto.InvalidCipherTextException.getMessage:()Ljava/lang/String;
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // org.bouncycastle.crypto.InvalidCipherTextException e
        10: .line 682
      StackMap locals:
      StackMap stack:
            iload 4 /* len */
            aload 5 /* tmp */
            arraylength
            if_icmpne 12
        11: .line 684
            aload 5 /* tmp */
            areturn
        12: .line 687
      StackMap locals:
      StackMap stack:
            iload 4 /* len */
            newarray 8
            astore 6 /* out */
        start local 6 // byte[] out
        13: .line 689
            aload 5 /* tmp */
            iconst_0
            aload 6 /* out */
            iconst_0
            iload 4 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 691
            aload 6 /* out */
            areturn
        end local 6 // byte[] out
        end local 5 // byte[] tmp
        end local 4 // int len
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0   15     1        input  [B
            0   15     2  inputOffset  I
            0   15     3     inputLen  I
            1   15     4          len  I
            2   15     5          tmp  [B
            7    8     6            e  Lorg/bouncycastle/crypto/DataLengthException;
            9   10     6            e  Lorg/bouncycastle/crypto/InvalidCipherTextException;
           13   15     6          out  [B
      Exception table:
        from    to  target  type
           4     5       6  Class org.bouncycastle.crypto.DataLengthException
           4     5       8  Class org.bouncycastle.crypto.InvalidCipherTextException
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineDoFinal(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=8, args_size=6
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 702
            iconst_0
            istore 6 /* len */
        start local 6 // int len
         1: .line 704
            iload 3 /* inputLen */
            ifeq 3
         2: .line 706
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 4 /* output */
            iload 5 /* outputOffset */
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.processBytes:([BII[BI)I
            istore 6 /* len */
         3: .line 711
      StackMap locals: int
      StackMap stack:
            iload 6 /* len */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.JCEBlockCipher.cipher:Lorg/bouncycastle/jce/provider/JCEBlockCipher$GenericBlockCipher;
            aload 4 /* output */
            iload 5 /* outputOffset */
            iload 6 /* len */
            iadd
            invokeinterface org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher.doFinal:([BI)I
            iadd
         4: ireturn
         5: .line 713
      StackMap locals:
      StackMap stack: org.bouncycastle.crypto.DataLengthException
            astore 7 /* e */
        start local 7 // org.bouncycastle.crypto.DataLengthException e
         6: .line 715
            new javax.crypto.IllegalBlockSizeException
            dup
            aload 7 /* e */
            invokevirtual org.bouncycastle.crypto.DataLengthException.getMessage:()Ljava/lang/String;
            invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // org.bouncycastle.crypto.DataLengthException e
         7: .line 717
      StackMap locals:
      StackMap stack: org.bouncycastle.crypto.InvalidCipherTextException
            astore 7 /* e */
        start local 7 // org.bouncycastle.crypto.InvalidCipherTextException e
         8: .line 719
            new javax.crypto.BadPaddingException
            dup
            aload 7 /* e */
            invokevirtual org.bouncycastle.crypto.InvalidCipherTextException.getMessage:()Ljava/lang/String;
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // org.bouncycastle.crypto.InvalidCipherTextException e
        end local 6 // int len
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0    9     1         input  [B
            0    9     2   inputOffset  I
            0    9     3      inputLen  I
            0    9     4        output  [B
            0    9     5  outputOffset  I
            1    9     6           len  I
            6    7     7             e  Lorg/bouncycastle/crypto/DataLengthException;
            8    9     7             e  Lorg/bouncycastle/crypto/InvalidCipherTextException;
      Exception table:
        from    to  target  type
           3     4       5  Class org.bouncycastle.crypto.DataLengthException
           3     4       7  Class org.bouncycastle.crypto.InvalidCipherTextException
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  private boolean isAEADModeName(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
        start local 1 // java.lang.String modeName
         0: .line 726
            ldc "CCM"
            aload 1 /* modeName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 1
            ldc "EAX"
            aload 1 /* modeName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 1
            ldc "GCM"
            aload 1 /* modeName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // java.lang.String modeName
        end local 0 // org.bouncycastle.jce.provider.JCEBlockCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/bouncycastle/jce/provider/JCEBlockCipher;
            0    2     1  modeName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      modeName  
}
SourceFile: "JCEBlockCipher.java"
NestMembers:
  org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher  org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher  org.bouncycastle.jce.provider.JCEBlockCipher$DES  org.bouncycastle.jce.provider.JCEBlockCipher$DESCBC  org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147  org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147cbc  org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndDES  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndRC2  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndDES  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndRC2  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd128BitRC2  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd40BitRC2  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES2Key  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES3Key  org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndTwofish  org.bouncycastle.jce.provider.JCEBlockCipher$RC2  org.bouncycastle.jce.provider.JCEBlockCipher$RC2CBC
InnerClasses:
  private AEADGenericBlockCipher = org.bouncycastle.jce.provider.JCEBlockCipher$AEADGenericBlockCipher of org.bouncycastle.jce.provider.JCEBlockCipher
  private BufferedGenericBlockCipher = org.bouncycastle.jce.provider.JCEBlockCipher$BufferedGenericBlockCipher of org.bouncycastle.jce.provider.JCEBlockCipher
  public DES = org.bouncycastle.jce.provider.JCEBlockCipher$DES of org.bouncycastle.jce.provider.JCEBlockCipher
  public DESCBC = org.bouncycastle.jce.provider.JCEBlockCipher$DESCBC of org.bouncycastle.jce.provider.JCEBlockCipher
  public GOST28147 = org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147 of org.bouncycastle.jce.provider.JCEBlockCipher
  public GOST28147cbc = org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147cbc of org.bouncycastle.jce.provider.JCEBlockCipher
  private abstract GenericBlockCipher = org.bouncycastle.jce.provider.JCEBlockCipher$GenericBlockCipher of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithAESCBC = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithMD5AndDES = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndDES of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithMD5AndRC2 = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndRC2 of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHA1AndDES = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndDES of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHA1AndRC2 = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndRC2 of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHAAnd128BitRC2 = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd128BitRC2 of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHAAnd40BitRC2 = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd40BitRC2 of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHAAndDES2Key = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES2Key of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHAAndDES3Key = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES3Key of org.bouncycastle.jce.provider.JCEBlockCipher
  public PBEWithSHAAndTwofish = org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndTwofish of org.bouncycastle.jce.provider.JCEBlockCipher
  public RC2 = org.bouncycastle.jce.provider.JCEBlockCipher$RC2 of org.bouncycastle.jce.provider.JCEBlockCipher
  public RC2CBC = org.bouncycastle.jce.provider.JCEBlockCipher$RC2CBC of org.bouncycastle.jce.provider.JCEBlockCipher
  public Util = org.bouncycastle.jce.provider.PBE$Util of org.bouncycastle.jce.provider.PBE