public class org.bouncycastle.crypto.examples.DESExample
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.examples.DESExample
  super_class: java.lang.Object
{
  private boolean encrypt;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher cipher;
    descriptor: Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
    flags: (0x0002) ACC_PRIVATE

  private java.io.BufferedInputStream in;
    descriptor: Ljava/io/BufferedInputStream;
    flags: (0x0002) ACC_PRIVATE

  private java.io.BufferedOutputStream out;
    descriptor: Ljava/io/BufferedOutputStream;
    flags: (0x0002) ACC_PRIVATE

  private byte[] key;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 74
            iconst_1
            istore 1 /* encrypt */
        start local 1 // boolean encrypt
         1: .line 75
            aconst_null
            astore 2 /* infile */
        start local 2 // java.lang.String infile
         2: .line 76
            aconst_null
            astore 3 /* outfile */
        start local 3 // java.lang.String outfile
         3: .line 77
            aconst_null
            astore 4 /* keyfile */
        start local 4 // java.lang.String keyfile
         4: .line 79
            aload 0 /* args */
            arraylength
            iconst_2
            if_icmpge 10
         5: .line 81
            new org.bouncycastle.crypto.examples.DESExample
            dup
            invokespecial org.bouncycastle.crypto.examples.DESExample.<init>:()V
            astore 5 /* de */
        start local 5 // org.bouncycastle.crypto.examples.DESExample de
         6: .line 82
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Usage: java "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* de */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 83
            ldc " infile outfile [keyfile]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 82
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 84
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        end local 5 // org.bouncycastle.crypto.examples.DESExample de
        10: .line 87
      StackMap locals: java.lang.String[] int java.lang.String java.lang.String java.lang.String
      StackMap stack:
            ldc "deskey.dat"
            astore 4 /* keyfile */
        11: .line 88
            aload 0 /* args */
            iconst_0
            aaload
            astore 2 /* infile */
        12: .line 89
            aload 0 /* args */
            iconst_1
            aaload
            astore 3 /* outfile */
        13: .line 91
            aload 0 /* args */
            arraylength
            iconst_2
            if_icmple 16
        14: .line 93
            iconst_0
            istore 1 /* encrypt */
        15: .line 94
            aload 0 /* args */
            iconst_2
            aaload
            astore 4 /* keyfile */
        16: .line 97
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.examples.DESExample
            dup
            aload 2 /* infile */
            aload 3 /* outfile */
            aload 4 /* keyfile */
            iload 1 /* encrypt */
            invokespecial org.bouncycastle.crypto.examples.DESExample.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
            astore 5 /* de */
        start local 5 // org.bouncycastle.crypto.examples.DESExample de
        17: .line 98
            aload 5 /* de */
            invokevirtual org.bouncycastle.crypto.examples.DESExample.process:()V
        18: .line 99
            return
        end local 5 // org.bouncycastle.crypto.examples.DESExample de
        end local 4 // java.lang.String keyfile
        end local 3 // java.lang.String outfile
        end local 2 // java.lang.String infile
        end local 1 // boolean encrypt
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     args  [Ljava/lang/String;
            1   19     1  encrypt  Z
            2   19     2   infile  Ljava/lang/String;
            3   19     3  outfile  Ljava/lang/String;
            4   19     4  keyfile  Ljava/lang/String;
            6   10     5       de  Lorg/bouncycastle/crypto/examples/DESExample;
           17   19     5       de  Lorg/bouncycastle/crypto/examples/DESExample;
    MethodParameters:
      Name  Flags
      args  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.examples.DESExample this
         0: .line 102
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 0 /* this */
            iconst_1
            putfield org.bouncycastle.crypto.examples.DESExample.encrypt:Z
         2: .line 58
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
         3: .line 61
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.in:Ljava/io/BufferedInputStream;
         4: .line 64
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
         5: .line 67
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.key:[B
         6: .line 104
            return
        end local 0 // org.bouncycastle.crypto.examples.DESExample this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/bouncycastle/crypto/examples/DESExample;

  public void <init>(java.lang.String, java.lang.String, java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=5
        start local 0 // org.bouncycastle.crypto.examples.DESExample this
        start local 1 // java.lang.String infile
        start local 2 // java.lang.String outfile
        start local 3 // java.lang.String keyfile
        start local 4 // boolean encrypt
         0: .line 110
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 0 /* this */
            iconst_1
            putfield org.bouncycastle.crypto.examples.DESExample.encrypt:Z
         2: .line 58
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
         3: .line 61
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.in:Ljava/io/BufferedInputStream;
         4: .line 64
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
         5: .line 67
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.examples.DESExample.key:[B
         6: .line 124
            aload 0 /* this */
            iload 4 /* encrypt */
            putfield org.bouncycastle.crypto.examples.DESExample.encrypt:Z
         7: .line 127
            aload 0 /* this */
            new java.io.BufferedInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 1 /* infile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            putfield org.bouncycastle.crypto.examples.DESExample.in:Ljava/io/BufferedInputStream;
         8: .line 128
            goto 12
         9: .line 129
      StackMap locals: org.bouncycastle.crypto.examples.DESExample java.lang.String java.lang.String java.lang.String int
      StackMap stack: java.io.FileNotFoundException
            pop
        10: .line 131
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Input file not found ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* infile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 132
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        12: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.io.BufferedOutputStream
            dup
            new java.io.FileOutputStream
            dup
            aload 2 /* outfile */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            putfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
        13: .line 138
            goto 17
        14: .line 139
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        15: .line 141
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Output file not created ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* outfile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        16: .line 142
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        17: .line 145
      StackMap locals:
      StackMap stack:
            iload 4 /* encrypt */
            ifeq 45
        18: .line 157
            aconst_null
            astore 5 /* sr */
        start local 5 // java.security.SecureRandom sr
        19: .line 160
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            astore 5 /* sr */
        20: .line 175
            aload 5 /* sr */
            ldc "www.bouncycastle.org"
            invokevirtual java.lang.String.getBytes:()[B
            invokevirtual java.security.SecureRandom.setSeed:([B)V
        21: .line 176
            goto 25
        22: .line 177
      StackMap locals: org.bouncycastle.crypto.examples.DESExample java.lang.String java.lang.String java.lang.String int java.security.SecureRandom
      StackMap stack: java.lang.Exception
            pop
        23: .line 179
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Hmmm, no SHA1PRNG, you need the Sun implementation"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 181
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        25: .line 183
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.KeyGenerationParameters
            dup
        26: .line 184
            aload 5 /* sr */
        27: .line 185
            sipush 192
        28: .line 183
            invokespecial org.bouncycastle.crypto.KeyGenerationParameters.<init>:(Ljava/security/SecureRandom;I)V
            astore 6 /* kgp */
        start local 6 // org.bouncycastle.crypto.KeyGenerationParameters kgp
        29: .line 190
            new org.bouncycastle.crypto.generators.DESedeKeyGenerator
            dup
            invokespecial org.bouncycastle.crypto.generators.DESedeKeyGenerator.<init>:()V
            astore 7 /* kg */
        start local 7 // org.bouncycastle.crypto.generators.DESedeKeyGenerator kg
        30: .line 191
            aload 7 /* kg */
            aload 6 /* kgp */
            invokevirtual org.bouncycastle.crypto.generators.DESedeKeyGenerator.init:(Lorg/bouncycastle/crypto/KeyGenerationParameters;)V
        31: .line 196
            aload 0 /* this */
            aload 7 /* kg */
            invokevirtual org.bouncycastle.crypto.generators.DESedeKeyGenerator.generateKey:()[B
            putfield org.bouncycastle.crypto.examples.DESExample.key:[B
        32: .line 204
            new java.io.BufferedOutputStream
            dup
            new java.io.FileOutputStream
            dup
            aload 3 /* keyfile */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
        33: .line 203
            astore 8 /* keystream */
        start local 8 // java.io.BufferedOutputStream keystream
        34: .line 205
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.key:[B
            invokestatic org.bouncycastle.util.encoders.Hex.encode:([B)[B
            astore 9 /* keyhex */
        start local 9 // byte[] keyhex
        35: .line 206
            aload 8 /* keystream */
            aload 9 /* keyhex */
            iconst_0
            aload 9 /* keyhex */
            arraylength
            invokevirtual java.io.BufferedOutputStream.write:([BII)V
        36: .line 207
            aload 8 /* keystream */
            invokevirtual java.io.BufferedOutputStream.flush:()V
        37: .line 208
            aload 8 /* keystream */
            invokevirtual java.io.BufferedOutputStream.close:()V
        end local 9 // byte[] keyhex
        end local 8 // java.io.BufferedOutputStream keystream
        end local 7 // org.bouncycastle.crypto.generators.DESedeKeyGenerator kg
        end local 6 // org.bouncycastle.crypto.KeyGenerationParameters kgp
        end local 5 // java.security.SecureRandom sr
        38: .line 209
            goto 57
        39: .line 210
      StackMap locals: org.bouncycastle.crypto.examples.DESExample java.lang.String java.lang.String java.lang.String int
      StackMap stack: java.io.IOException
            pop
        40: .line 212
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Could not decryption create key file ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        41: .line 213
            aload 3 /* keyfile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        42: .line 212
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 214
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        44: .line 216
            goto 57
        45: .line 223
      StackMap locals:
      StackMap stack:
            new java.io.BufferedInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 3 /* keyfile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
        46: .line 222
            astore 5 /* keystream */
        start local 5 // java.io.BufferedInputStream keystream
        47: .line 224
            aload 5 /* keystream */
            invokevirtual java.io.BufferedInputStream.available:()I
            istore 6 /* len */
        start local 6 // int len
        48: .line 225
            iload 6 /* len */
            newarray 8
            astore 7 /* keyhex */
        start local 7 // byte[] keyhex
        49: .line 226
            aload 5 /* keystream */
            aload 7 /* keyhex */
            iconst_0
            iload 6 /* len */
            invokevirtual java.io.BufferedInputStream.read:([BII)I
            pop
        50: .line 227
            aload 0 /* this */
            aload 7 /* keyhex */
            invokestatic org.bouncycastle.util.encoders.Hex.decode:([B)[B
            putfield org.bouncycastle.crypto.examples.DESExample.key:[B
        end local 7 // byte[] keyhex
        end local 6 // int len
        end local 5 // java.io.BufferedInputStream keystream
        51: .line 228
            goto 57
        52: .line 229
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        53: .line 231
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Decryption key file not found, or not valid ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        54: .line 232
            aload 3 /* keyfile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        55: .line 231
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        56: .line 233
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        57: .line 236
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean encrypt
        end local 3 // java.lang.String keyfile
        end local 2 // java.lang.String outfile
        end local 1 // java.lang.String infile
        end local 0 // org.bouncycastle.crypto.examples.DESExample this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   58     0       this  Lorg/bouncycastle/crypto/examples/DESExample;
            0   58     1     infile  Ljava/lang/String;
            0   58     2    outfile  Ljava/lang/String;
            0   58     3    keyfile  Ljava/lang/String;
            0   58     4    encrypt  Z
           19   38     5         sr  Ljava/security/SecureRandom;
           29   38     6        kgp  Lorg/bouncycastle/crypto/KeyGenerationParameters;
           30   38     7         kg  Lorg/bouncycastle/crypto/generators/DESedeKeyGenerator;
           34   38     8  keystream  Ljava/io/BufferedOutputStream;
           35   38     9     keyhex  [B
           47   51     5  keystream  Ljava/io/BufferedInputStream;
           48   51     6        len  I
           49   51     7     keyhex  [B
      Exception table:
        from    to  target  type
           7     8       9  Class java.io.FileNotFoundException
          12    13      14  Class java.io.IOException
          19    21      22  Class java.lang.Exception
          18    38      39  Class java.io.IOException
          45    51      52  Class java.io.IOException
    MethodParameters:
         Name  Flags
      infile   
      outfile  
      keyfile  
      encrypt  

  private void process();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.examples.DESExample this
         0: .line 244
            aload 0 /* this */
            new org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
            dup
         1: .line 245
            new org.bouncycastle.crypto.modes.CBCBlockCipher
            dup
            new org.bouncycastle.crypto.engines.DESedeEngine
            dup
            invokespecial org.bouncycastle.crypto.engines.DESedeEngine.<init>:()V
            invokespecial org.bouncycastle.crypto.modes.CBCBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
            invokespecial org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
         2: .line 244
            putfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
         3: .line 254
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.encrypt:Z
            ifeq 6
         4: .line 256
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.key:[B
            invokevirtual org.bouncycastle.crypto.examples.DESExample.performEncrypt:([B)V
         5: .line 257
            goto 7
         6: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.key:[B
            invokevirtual org.bouncycastle.crypto.examples.DESExample.performDecrypt:([B)V
         7: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.in:Ljava/io/BufferedInputStream;
            invokevirtual java.io.BufferedInputStream.close:()V
         8: .line 267
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            invokevirtual java.io.BufferedOutputStream.flush:()V
         9: .line 268
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            invokevirtual java.io.BufferedOutputStream.close:()V
        10: .line 269
            goto 12
        11: .line 270
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        12: .line 274
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bouncycastle.crypto.examples.DESExample this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/bouncycastle/crypto/examples/DESExample;
      Exception table:
        from    to  target  type
           7    10      11  Class java.io.IOException

  private void performEncrypt(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // org.bouncycastle.crypto.examples.DESExample this
        start local 1 // byte[] key
         0: .line 284
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            iconst_1
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 1 /* key */
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
         1: .line 297
            bipush 47
            istore 2 /* inBlockSize */
        start local 2 // int inBlockSize
         2: .line 298
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            iload 2 /* inBlockSize */
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.getOutputSize:(I)I
            istore 3 /* outBlockSize */
        start local 3 // int outBlockSize
         3: .line 300
            iload 2 /* inBlockSize */
            newarray 8
            astore 4 /* inblock */
        start local 4 // byte[] inblock
         4: .line 301
            iload 3 /* outBlockSize */
            newarray 8
            astore 5 /* outblock */
        start local 5 // byte[] outblock
         5: .line 310
            aconst_null
            astore 8 /* rv */
        start local 8 // byte[] rv
         6: .line 311
            goto 12
        start local 6 // int inL
         7: .line 313
      StackMap locals: org.bouncycastle.crypto.examples.DESExample byte[] int int byte[] byte[] int top byte[]
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            aload 4 /* inblock */
            iconst_0
            iload 6 /* inL */
            aload 5 /* outblock */
            iconst_0
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.processBytes:([BII[BI)I
            istore 7 /* outL */
        start local 7 // int outL
         8: .line 318
            iload 7 /* outL */
            ifle 12
         9: .line 320
            aload 5 /* outblock */
            iconst_0
            iload 7 /* outL */
            invokestatic org.bouncycastle.util.encoders.Hex.encode:([BII)[B
            astore 8 /* rv */
        10: .line 321
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            aload 8 /* rv */
            iconst_0
            aload 8 /* rv */
            arraylength
            invokevirtual java.io.BufferedOutputStream.write:([BII)V
        11: .line 322
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            bipush 10
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        end local 7 // int outL
        end local 6 // int inL
        12: .line 311
      StackMap locals: org.bouncycastle.crypto.examples.DESExample byte[] int int byte[] byte[] top top byte[]
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.in:Ljava/io/BufferedInputStream;
            aload 4 /* inblock */
            iconst_0
            iload 2 /* inBlockSize */
            invokevirtual java.io.BufferedInputStream.read:([BII)I
            dup
            istore 6 /* inL */
        start local 6 // int inL
        13: ifgt 7
        14: .line 332
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            aload 5 /* outblock */
            iconst_0
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.doFinal:([BI)I
            istore 7 /* outL */
        start local 7 // int outL
        15: .line 333
            iload 7 /* outL */
            ifle 24
        16: .line 335
            aload 5 /* outblock */
            iconst_0
            iload 7 /* outL */
            invokestatic org.bouncycastle.util.encoders.Hex.encode:([BII)[B
            astore 8 /* rv */
        17: .line 336
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            aload 8 /* rv */
            iconst_0
            aload 8 /* rv */
            arraylength
            invokevirtual java.io.BufferedOutputStream.write:([BII)V
        18: .line 337
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            bipush 10
            invokevirtual java.io.BufferedOutputStream.write:(I)V
        19: .line 339
            goto 24
        end local 7 // int outL
        20: .line 340
      StackMap locals: org.bouncycastle.crypto.examples.DESExample byte[] int int byte[] byte[] int top byte[]
      StackMap stack: org.bouncycastle.crypto.CryptoException
            pop
        end local 8 // byte[] rv
        end local 6 // int inL
        21: .line 344
            goto 24
        22: .line 345
      StackMap locals: org.bouncycastle.crypto.examples.DESExample byte[] int int byte[] byte[]
      StackMap stack: java.io.IOException
            astore 6 /* ioeread */
        start local 6 // java.io.IOException ioeread
        23: .line 347
            aload 6 /* ioeread */
            invokevirtual java.io.IOException.printStackTrace:()V
        end local 6 // java.io.IOException ioeread
        24: .line 349
      StackMap locals:
      StackMap stack:
            return
        end local 5 // byte[] outblock
        end local 4 // byte[] inblock
        end local 3 // int outBlockSize
        end local 2 // int inBlockSize
        end local 1 // byte[] key
        end local 0 // org.bouncycastle.crypto.examples.DESExample this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   25     0          this  Lorg/bouncycastle/crypto/examples/DESExample;
            0   25     1           key  [B
            2   25     2   inBlockSize  I
            3   25     3  outBlockSize  I
            4   25     4       inblock  [B
            5   25     5      outblock  [B
            7   12     6           inL  I
           13   21     6           inL  I
            8   12     7          outL  I
           15   20     7          outL  I
            6   21     8            rv  [B
           23   24     6       ioeread  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    19      20  Class org.bouncycastle.crypto.CryptoException
           5    21      22  Class java.io.IOException
    MethodParameters:
      Name  Flags
      key   

  private void performDecrypt(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // org.bouncycastle.crypto.examples.DESExample this
        start local 1 // byte[] key
         0: .line 359
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            iconst_0
            new org.bouncycastle.crypto.params.KeyParameter
            dup
            aload 1 /* key */
            invokespecial org.bouncycastle.crypto.params.KeyParameter.<init>:([B)V
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
         1: .line 367
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.in:Ljava/io/BufferedInputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 2 /* br */
        start local 2 // java.io.BufferedReader br
         2: .line 375
            aconst_null
            astore 4 /* inblock */
        start local 4 // byte[] inblock
         3: .line 376
            aconst_null
            astore 5 /* outblock */
        start local 5 // byte[] outblock
         4: .line 377
            aconst_null
            astore 6 /* rv */
        start local 6 // java.lang.String rv
         5: .line 378
            goto 13
         6: .line 380
      StackMap locals: org.bouncycastle.crypto.examples.DESExample byte[] java.io.BufferedReader top byte[] byte[] java.lang.String
      StackMap stack:
            aload 6 /* rv */
            invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
            astore 4 /* inblock */
         7: .line 381
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            aload 4 /* inblock */
            arraylength
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.getOutputSize:(I)I
            newarray 8
            astore 5 /* outblock */
         8: .line 383
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            aload 4 /* inblock */
            iconst_0
            aload 4 /* inblock */
            arraylength
         9: .line 384
            aload 5 /* outblock */
            iconst_0
        10: .line 383
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.processBytes:([BII[BI)I
            istore 3 /* outL */
        start local 3 // int outL
        11: .line 389
            iload 3 /* outL */
            ifle 13
        12: .line 391
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            aload 5 /* outblock */
            iconst_0
            iload 3 /* outL */
            invokevirtual java.io.BufferedOutputStream.write:([BII)V
        end local 3 // int outL
        13: .line 378
      StackMap locals:
      StackMap stack:
            aload 2 /* br */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            dup
            astore 6 /* rv */
            ifnonnull 6
        14: .line 401
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.cipher:Lorg/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
            aload 5 /* outblock */
            iconst_0
            invokevirtual org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.doFinal:([BI)I
            istore 3 /* outL */
        start local 3 // int outL
        15: .line 402
            iload 3 /* outL */
            ifle 22
        16: .line 404
            aload 0 /* this */
            getfield org.bouncycastle.crypto.examples.DESExample.out:Ljava/io/BufferedOutputStream;
            aload 5 /* outblock */
            iconst_0
            iload 3 /* outL */
            invokevirtual java.io.BufferedOutputStream.write:([BII)V
        17: .line 406
            goto 22
        end local 3 // int outL
        18: .line 407
      StackMap locals:
      StackMap stack: org.bouncycastle.crypto.CryptoException
            pop
        end local 6 // java.lang.String rv
        end local 5 // byte[] outblock
        end local 4 // byte[] inblock
        19: .line 411
            goto 22
        20: .line 412
      StackMap locals: org.bouncycastle.crypto.examples.DESExample byte[] java.io.BufferedReader
      StackMap stack: java.io.IOException
            astore 3 /* ioeread */
        start local 3 // java.io.IOException ioeread
        21: .line 414
            aload 3 /* ioeread */
            invokevirtual java.io.IOException.printStackTrace:()V
        end local 3 // java.io.IOException ioeread
        22: .line 416
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.io.BufferedReader br
        end local 1 // byte[] key
        end local 0 // org.bouncycastle.crypto.examples.DESExample this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   23     0      this  Lorg/bouncycastle/crypto/examples/DESExample;
            0   23     1       key  [B
            2   23     2        br  Ljava/io/BufferedReader;
           11   13     3      outL  I
           15   18     3      outL  I
            3   19     4   inblock  [B
            4   19     5  outblock  [B
            5   19     6        rv  Ljava/lang/String;
           21   22     3   ioeread  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    17      18  Class org.bouncycastle.crypto.CryptoException
           2    19      20  Class java.io.IOException
    MethodParameters:
      Name  Flags
      key   
}
SourceFile: "DESExample.java"