final class sun.security.ssl.CipherBox
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.CipherBox
  super_class: java.lang.Object
{
  static final sun.security.ssl.CipherBox NULL;
    descriptor: Lsun/security/ssl/CipherBox;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final sun.security.ssl.Debug debug;
    descriptor: Lsun/security/ssl/Debug;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final sun.security.ssl.ProtocolVersion protocolVersion;
    descriptor: Lsun/security/ssl/ProtocolVersion;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.crypto.Cipher cipher;
    descriptor: Ljavax/crypto/Cipher;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final boolean isCBCMode;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0002) ACC_PRIVATE

  private static java.util.Hashtable<java.lang.Integer, javax.crypto.spec.IvParameterSpec> masks;
    descriptor: Ljava/util/Hashtable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/Hashtable<Ljava/lang/Integer;Ljavax/crypto/spec/IvParameterSpec;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 94
            new sun.security.ssl.CipherBox
            dup
            invokespecial sun.security.ssl.CipherBox.<init>:()V
            putstatic sun.security.ssl.CipherBox.NULL:Lsun/security/ssl/CipherBox;
         1: .line 97
            ldc "ssl"
            invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
            putstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
         2: .line 128
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.ssl.CipherBox this
         0: .line 133
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 134
            aload 0 /* this */
            getstatic sun.security.ssl.ProtocolVersion.DEFAULT:Lsun/security/ssl/ProtocolVersion;
            putfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 135
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
         3: .line 136
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.CipherBox.isCBCMode:Z
         4: .line 137
            return
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/security/ssl/CipherBox;

  private void <init>(sun.security.ssl.ProtocolVersion, sun.security.ssl.CipherSuite$BulkCipher, javax.crypto.SecretKey, javax.crypto.spec.IvParameterSpec, java.security.SecureRandom, boolean);
    descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite$BulkCipher;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=7
        start local 0 // sun.security.ssl.CipherBox this
        start local 1 // sun.security.ssl.ProtocolVersion protocolVersion
        start local 2 // sun.security.ssl.CipherSuite$BulkCipher bulkCipher
        start local 3 // javax.crypto.SecretKey key
        start local 4 // javax.crypto.spec.IvParameterSpec iv
        start local 5 // java.security.SecureRandom random
        start local 6 // boolean encrypt
         0: .line 145
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 149
            aload 0 /* this */
            aload 1 /* protocolVersion */
            putfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 150
            aload 0 /* this */
            aload 2 /* bulkCipher */
            getfield sun.security.ssl.CipherSuite$BulkCipher.transformation:Ljava/lang/String;
            invokestatic sun.security.ssl.JsseJce.getCipher:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            putfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
         3: .line 151
            iload 6 /* encrypt */
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.ProtocolVersion sun.security.ssl.CipherSuite$BulkCipher javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec java.security.SecureRandom int
      StackMap stack:
         4: iconst_2
      StackMap locals:
      StackMap stack: int
         5: istore 7 /* mode */
        start local 7 // int mode
         6: .line 152
            aload 0 /* this */
            aload 2 /* bulkCipher */
            getfield sun.security.ssl.CipherSuite$BulkCipher.isCBCMode:Z
            putfield sun.security.ssl.CipherBox.isCBCMode:Z
         7: .line 154
            aload 5 /* random */
            ifnonnull 9
         8: .line 155
            invokestatic sun.security.ssl.JsseJce.getSecureRandom:()Ljava/security/SecureRandom;
            astore 5 /* random */
         9: .line 157
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 5 /* random */
            putfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
        10: .line 169
            aload 4 /* iv */
            ifnonnull 14
            aload 2 /* bulkCipher */
            getfield sun.security.ssl.CipherSuite$BulkCipher.ivSize:I
            ifeq 14
        11: .line 170
            iload 7 /* mode */
            iconst_2
            if_icmpne 14
        12: .line 171
            aload 1 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 14
        13: .line 172
            aload 2 /* bulkCipher */
            getfield sun.security.ssl.CipherSuite$BulkCipher.ivSize:I
            invokestatic sun.security.ssl.CipherBox.getFixedMask:(I)Ljavax/crypto/spec/IvParameterSpec;
            astore 4 /* iv */
        14: .line 175
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            iload 7 /* mode */
            aload 3 /* key */
            aload 4 /* iv */
            aload 5 /* random */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
        15: .line 179
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            putfield sun.security.ssl.CipherBox.blockSize:I
        16: .line 181
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            iconst_1
            if_icmpne 29
        17: .line 182
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.CipherBox.blockSize:I
        end local 7 // int mode
        18: .line 184
            goto 29
      StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.ProtocolVersion sun.security.ssl.CipherSuite$BulkCipher javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec java.security.SecureRandom int
      StackMap stack: java.security.NoSuchAlgorithmException
        19: astore 7 /* e */
        start local 7 // java.security.NoSuchAlgorithmException e
        20: .line 185
            aload 7 /* e */
            athrow
        end local 7 // java.security.NoSuchAlgorithmException e
        21: .line 186
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 7 /* e */
        start local 7 // java.lang.Exception e
        22: .line 187
            new java.security.NoSuchAlgorithmException
            dup
        23: .line 188
            new java.lang.StringBuilder
            dup
            ldc "Could not create cipher "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* bulkCipher */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 7 /* e */
        24: .line 187
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.Exception e
        25: .line 189
      StackMap locals:
      StackMap stack: java.lang.ExceptionInInitializerError
            astore 7 /* e */
        start local 7 // java.lang.ExceptionInInitializerError e
        26: .line 190
            new java.security.NoSuchAlgorithmException
            dup
        27: .line 191
            new java.lang.StringBuilder
            dup
            ldc "Could not create cipher "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* bulkCipher */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 7 /* e */
        28: .line 190
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.ExceptionInInitializerError e
        29: .line 193
      StackMap locals:
      StackMap stack:
            return
        end local 6 // boolean encrypt
        end local 5 // java.security.SecureRandom random
        end local 4 // javax.crypto.spec.IvParameterSpec iv
        end local 3 // javax.crypto.SecretKey key
        end local 2 // sun.security.ssl.CipherSuite$BulkCipher bulkCipher
        end local 1 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   30     0             this  Lsun/security/ssl/CipherBox;
            0   30     1  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            0   30     2       bulkCipher  Lsun/security/ssl/CipherSuite$BulkCipher;
            0   30     3              key  Ljavax/crypto/SecretKey;
            0   30     4               iv  Ljavax/crypto/spec/IvParameterSpec;
            0   30     5           random  Ljava/security/SecureRandom;
            0   30     6          encrypt  Z
            6   18     7             mode  I
           20   21     7                e  Ljava/security/NoSuchAlgorithmException;
           22   25     7                e  Ljava/lang/Exception;
           26   29     7                e  Ljava/lang/ExceptionInInitializerError;
      Exception table:
        from    to  target  type
           1    18      19  Class java.security.NoSuchAlgorithmException
           1    18      21  Class java.lang.Exception
           1    18      25  Class java.lang.ExceptionInInitializerError
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
                 Name  Flags
      protocolVersion  
      bulkCipher       
      key              
      iv               
      random           
      encrypt          

  static sun.security.ssl.CipherBox newCipherBox(sun.security.ssl.ProtocolVersion, sun.security.ssl.CipherSuite$BulkCipher, javax.crypto.SecretKey, javax.crypto.spec.IvParameterSpec, java.security.SecureRandom, boolean);
    descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite$BulkCipher;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;Z)Lsun/security/ssl/CipherBox;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=6, args_size=6
        start local 0 // sun.security.ssl.ProtocolVersion version
        start local 1 // sun.security.ssl.CipherSuite$BulkCipher cipher
        start local 2 // javax.crypto.SecretKey key
        start local 3 // javax.crypto.spec.IvParameterSpec iv
        start local 4 // java.security.SecureRandom random
        start local 5 // boolean encrypt
         0: .line 201
            aload 1 /* cipher */
            getfield sun.security.ssl.CipherSuite$BulkCipher.allowed:Z
            ifne 2
         1: .line 202
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported cipher "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* cipher */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 205
      StackMap locals:
      StackMap stack:
            aload 1 /* cipher */
            getstatic sun.security.ssl.CipherSuite.B_NULL:Lsun/security/ssl/CipherSuite$BulkCipher;
            if_acmpne 4
         3: .line 206
            getstatic sun.security.ssl.CipherBox.NULL:Lsun/security/ssl/CipherBox;
            areturn
         4: .line 208
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.CipherBox
            dup
            aload 0 /* version */
            aload 1 /* cipher */
            aload 2 /* key */
            aload 3 /* iv */
            aload 4 /* random */
            iload 5 /* encrypt */
            invokespecial sun.security.ssl.CipherBox.<init>:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite$BulkCipher;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;Z)V
            areturn
        end local 5 // boolean encrypt
        end local 4 // java.security.SecureRandom random
        end local 3 // javax.crypto.spec.IvParameterSpec iv
        end local 2 // javax.crypto.SecretKey key
        end local 1 // sun.security.ssl.CipherSuite$BulkCipher cipher
        end local 0 // sun.security.ssl.ProtocolVersion version
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  version  Lsun/security/ssl/ProtocolVersion;
            0    5     1   cipher  Lsun/security/ssl/CipherSuite$BulkCipher;
            0    5     2      key  Ljavax/crypto/SecretKey;
            0    5     3       iv  Ljavax/crypto/spec/IvParameterSpec;
            0    5     4   random  Ljava/security/SecureRandom;
            0    5     5  encrypt  Z
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
         Name  Flags
      version  
      cipher   
      key      
      iv       
      random   
      encrypt  

  private static javax.crypto.spec.IvParameterSpec getFixedMask(int);
    descriptor: (I)Ljavax/crypto/spec/IvParameterSpec;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // int ivSize
         0: .line 216
            getstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
            ifnonnull 2
         1: .line 217
            new java.util.Hashtable
            dup
            iconst_5
            invokespecial java.util.Hashtable.<init>:(I)V
            putstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
         2: .line 220
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
            iload 0 /* ivSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.crypto.spec.IvParameterSpec
            astore 1 /* iv */
        start local 1 // javax.crypto.spec.IvParameterSpec iv
         3: .line 221
            aload 1 /* iv */
            ifnonnull 6
         4: .line 222
            new javax.crypto.spec.IvParameterSpec
            dup
            iload 0 /* ivSize */
            newarray 8
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 1 /* iv */
         5: .line 223
            getstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
            iload 0 /* ivSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* iv */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 226
      StackMap locals: javax.crypto.spec.IvParameterSpec
      StackMap stack:
            aload 1 /* iv */
            areturn
        end local 1 // javax.crypto.spec.IvParameterSpec iv
        end local 0 // int ivSize
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  ivSize  I
            3    7     1      iv  Ljavax/crypto/spec/IvParameterSpec;
    MethodParameters:
        Name  Flags
      ivSize  

  int encrypt(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // sun.security.ssl.CipherBox this
        start local 1 // byte[] buf
        start local 2 // int offset
        start local 3 // int len
         0: .line 234
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            ifnonnull 2
         1: .line 235
            iload 3 /* len */
            ireturn
         2: .line 239
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            ifeq 14
         3: .line 241
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 13
         4: .line 243
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            newarray 8
            astore 4 /* prefix */
        start local 4 // byte[] prefix
         5: .line 244
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
            aload 4 /* prefix */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 247
            aload 1 /* buf */
            iload 2 /* offset */
         7: .line 248
            aload 1 /* buf */
            iload 2 /* offset */
            aload 4 /* prefix */
            arraylength
            iadd
            iload 3 /* len */
         8: .line 247
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 251
            aload 4 /* prefix */
            iconst_0
        10: .line 252
            aload 1 /* buf */
            iload 2 /* offset */
            aload 4 /* prefix */
            arraylength
        11: .line 251
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 254
            iload 3 /* len */
            aload 4 /* prefix */
            arraylength
            iadd
            istore 3 /* len */
        end local 4 // byte[] prefix
        13: .line 257
      StackMap locals:
      StackMap stack:
            aload 1 /* buf */
            iload 2 /* offset */
            iload 3 /* len */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            invokestatic sun.security.ssl.CipherBox.addPadding:([BIII)I
            istore 3 /* len */
        14: .line 259
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
            ifnull 27
            ldc "plaintext"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 27
        15: .line 261
            new sun.misc.HexDumpEncoder
            dup
            invokespecial sun.misc.HexDumpEncoder.<init>:()V
            astore 4 /* hd */
        start local 4 // sun.misc.HexDumpEncoder hd
        16: .line 263
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        17: .line 264
            new java.lang.StringBuilder
            dup
            ldc "Padded plaintext before ENCRYPTION:  len = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 265
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        19: .line 264
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 263
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 266
            aload 4 /* hd */
        22: .line 267
            new java.io.ByteArrayInputStream
            dup
            aload 1 /* buf */
            iload 2 /* offset */
            iload 3 /* len */
            invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
        23: .line 268
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        24: .line 266
            invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        end local 4 // sun.misc.HexDumpEncoder hd
        25: .line 269
            goto 27
      StackMap locals:
      StackMap stack: java.io.IOException
        26: pop
        27: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            aload 1 /* buf */
            iload 2 /* offset */
            iload 3 /* len */
            aload 1 /* buf */
            iload 2 /* offset */
            invokevirtual javax.crypto.Cipher.update:([BII[BI)I
            istore 4 /* newLen */
        start local 4 // int newLen
        28: .line 272
            iload 4 /* newLen */
            iload 3 /* len */
            if_icmpeq 32
        29: .line 274
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cipher buffering error in JCE provider "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        30: .line 275
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        31: .line 274
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 277
      StackMap locals: int
      StackMap stack:
            iload 4 /* newLen */
        33: ireturn
        end local 4 // int newLen
        34: .line 278
      StackMap locals: sun.security.ssl.CipherBox byte[] int int
      StackMap stack: javax.crypto.ShortBufferException
            astore 4 /* e */
        start local 4 // javax.crypto.ShortBufferException e
        35: .line 279
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 4 /* e */
            invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // javax.crypto.ShortBufferException e
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] buf
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   36     0    this  Lsun/security/ssl/CipherBox;
            0   36     1     buf  [B
            0   36     2  offset  I
            0   36     3     len  I
            5   13     4  prefix  [B
           16   25     4      hd  Lsun/misc/HexDumpEncoder;
           28   34     4  newLen  I
           35   36     4       e  Ljavax/crypto/ShortBufferException;
      Exception table:
        from    to  target  type
          15    25      26  Class java.io.IOException
           2    33      34  Class javax.crypto.ShortBufferException
    MethodParameters:
        Name  Flags
      buf     
      offset  
      len     

  int encrypt(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0000) 
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // sun.security.ssl.CipherBox this
        start local 1 // java.nio.ByteBuffer bb
         0: .line 294
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 2 /* len */
        start local 2 // int len
         1: .line 296
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            ifnonnull 4
         2: .line 297
            aload 1 /* bb */
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         3: .line 298
            iload 2 /* len */
            ireturn
         4: .line 302
      StackMap locals: int
      StackMap stack:
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 3 /* pos */
        start local 3 // int pos
         5: .line 304
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            ifeq 30
         6: .line 306
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 28
         7: .line 308
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            newarray 8
            astore 4 /* prefix */
        start local 4 // byte[] prefix
         8: .line 309
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
            aload 4 /* prefix */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         9: .line 312
            aconst_null
            astore 5 /* buf */
        start local 5 // byte[] buf
        10: .line 313
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 6 /* limit */
        start local 6 // int limit
        11: .line 314
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 20
        12: .line 315
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            istore 7 /* arrayOffset */
        start local 7 // int arrayOffset
        13: .line 316
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 5 /* buf */
        14: .line 317
            aload 5 /* buf */
            iload 7 /* arrayOffset */
            iload 3 /* pos */
            iadd
        15: .line 318
            aload 5 /* buf */
            iload 7 /* arrayOffset */
            iload 3 /* pos */
            iadd
            aload 4 /* prefix */
            arraylength
            iadd
        16: .line 319
            iload 6 /* limit */
            iload 3 /* pos */
            isub
        17: .line 317
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        18: .line 320
            aload 1 /* bb */
            iload 6 /* limit */
            aload 4 /* prefix */
            arraylength
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 7 // int arrayOffset
        19: .line 321
            goto 25
        20: .line 322
      StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int byte[] byte[] int
      StackMap stack:
            iload 6 /* limit */
            iload 3 /* pos */
            isub
            newarray 8
            astore 5 /* buf */
        21: .line 323
            aload 1 /* bb */
            aload 5 /* buf */
            iconst_0
            iload 6 /* limit */
            iload 3 /* pos */
            isub
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        22: .line 324
            aload 1 /* bb */
            iload 3 /* pos */
            aload 4 /* prefix */
            arraylength
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        23: .line 325
            aload 1 /* bb */
            iload 6 /* limit */
            aload 4 /* prefix */
            arraylength
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        24: .line 326
            aload 1 /* bb */
            aload 5 /* buf */
            invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
            pop
        25: .line 328
      StackMap locals:
      StackMap stack:
            aload 1 /* bb */
            iload 3 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        26: .line 331
            aload 1 /* bb */
            aload 4 /* prefix */
            invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
            pop
        27: .line 332
            aload 1 /* bb */
            iload 3 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 6 // int limit
        end local 5 // byte[] buf
        end local 4 // byte[] prefix
        28: .line 336
      StackMap locals:
      StackMap stack:
            aload 1 /* bb */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            invokestatic sun.security.ssl.CipherBox.addPadding:(Ljava/nio/ByteBuffer;I)I
            istore 2 /* len */
        29: .line 337
            aload 1 /* bb */
            iload 3 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        30: .line 339
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
            ifnull 41
            ldc "plaintext"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 41
        31: .line 341
            new sun.misc.HexDumpEncoder
            dup
            invokespecial sun.misc.HexDumpEncoder.<init>:()V
            astore 4 /* hd */
        start local 4 // sun.misc.HexDumpEncoder hd
        32: .line 343
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        33: .line 344
            new java.lang.StringBuilder
            dup
            ldc "Padded plaintext before ENCRYPTION:  len = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        34: .line 345
            iload 2 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        35: .line 344
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        36: .line 343
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        37: .line 346
            aload 4 /* hd */
            aload 1 /* bb */
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
        end local 4 // sun.misc.HexDumpEncoder hd
        38: .line 348
            goto 40
      StackMap locals:
      StackMap stack: java.io.IOException
        39: pop
        40: .line 352
      StackMap locals:
      StackMap stack:
            aload 1 /* bb */
            iload 3 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        41: .line 358
      StackMap locals:
      StackMap stack:
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 4 /* dup */
        start local 4 // java.nio.ByteBuffer dup
        42: .line 359
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            aload 4 /* dup */
            aload 1 /* bb */
            invokevirtual javax.crypto.Cipher.update:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 5 /* newLen */
        start local 5 // int newLen
        43: .line 361
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 4 /* dup */
            invokevirtual java.nio.ByteBuffer.position:()I
            if_icmpeq 45
        44: .line 362
            new java.lang.RuntimeException
            dup
            ldc "bytebuffer padding error"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        45: .line 365
      StackMap locals: java.nio.ByteBuffer int
      StackMap stack:
            iload 5 /* newLen */
            iload 2 /* len */
            if_icmpeq 49
        46: .line 367
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cipher buffering error in JCE provider "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        47: .line 368
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        48: .line 367
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        49: .line 370
      StackMap locals:
      StackMap stack:
            iload 5 /* newLen */
        50: ireturn
        end local 5 // int newLen
        end local 4 // java.nio.ByteBuffer dup
        end local 3 // int pos
        51: .line 371
      StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int
      StackMap stack: javax.crypto.ShortBufferException
            astore 3 /* e */
        start local 3 // javax.crypto.ShortBufferException e
        52: .line 372
            new java.lang.RuntimeException
            dup
            aload 3 /* e */
            invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            astore 4 /* exc */
        start local 4 // java.lang.RuntimeException exc
        53: .line 373
            aload 4 /* exc */
            aload 3 /* e */
            invokevirtual java.lang.RuntimeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        54: .line 374
            aload 4 /* exc */
            athrow
        end local 4 // java.lang.RuntimeException exc
        end local 3 // javax.crypto.ShortBufferException e
        end local 2 // int len
        end local 1 // java.nio.ByteBuffer bb
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   55     0         this  Lsun/security/ssl/CipherBox;
            0   55     1           bb  Ljava/nio/ByteBuffer;
            1   55     2          len  I
            5   51     3          pos  I
            8   28     4       prefix  [B
           10   28     5          buf  [B
           11   28     6        limit  I
           13   19     7  arrayOffset  I
           32   38     4           hd  Lsun/misc/HexDumpEncoder;
           42   51     4          dup  Ljava/nio/ByteBuffer;
           43   51     5       newLen  I
           52   55     3            e  Ljavax/crypto/ShortBufferException;
           53   55     4          exc  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
          31    38      39  Class java.io.IOException
           4    50      51  Class javax.crypto.ShortBufferException
    MethodParameters:
      Name  Flags
      bb    

  int decrypt(byte[], int, int, int);
    descriptor: ([BIII)I
    flags: (0x0000) 
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // sun.security.ssl.CipherBox this
        start local 1 // byte[] buf
        start local 2 // int offset
        start local 3 // int len
        start local 4 // int tagLen
         0: .line 398
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            ifnonnull 2
         1: .line 399
            iload 3 /* len */
            ireturn
         2: .line 403
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            aload 1 /* buf */
            iload 2 /* offset */
            iload 3 /* len */
            aload 1 /* buf */
            iload 2 /* offset */
            invokevirtual javax.crypto.Cipher.update:([BII[BI)I
            istore 5 /* newLen */
        start local 5 // int newLen
         3: .line 404
            iload 5 /* newLen */
            iload 3 /* len */
            if_icmpeq 7
         4: .line 406
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cipher buffering error in JCE provider "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 407
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 406
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 409
      StackMap locals: int
      StackMap stack:
            getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
            ifnull 20
            ldc "plaintext"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 20
         8: .line 411
            new sun.misc.HexDumpEncoder
            dup
            invokespecial sun.misc.HexDumpEncoder.<init>:()V
            astore 6 /* hd */
        start local 6 // sun.misc.HexDumpEncoder hd
         9: .line 413
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        10: .line 414
            new java.lang.StringBuilder
            dup
            ldc "Padded plaintext after DECRYPTION:  len = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 415
            iload 5 /* newLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        12: .line 414
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 413
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        14: .line 416
            aload 6 /* hd */
        15: .line 417
            new java.io.ByteArrayInputStream
            dup
            aload 1 /* buf */
            iload 2 /* offset */
            iload 5 /* newLen */
            invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
        16: .line 418
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        17: .line 416
            invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        end local 6 // sun.misc.HexDumpEncoder hd
        18: .line 419
            goto 20
      StackMap locals:
      StackMap stack: java.io.IOException
        19: pop
        20: .line 421
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            ifeq 30
        21: .line 423
            aload 1 /* buf */
            iload 2 /* offset */
            iload 5 /* newLen */
            iload 4 /* tagLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
        22: .line 422
            invokestatic sun.security.ssl.CipherBox.removePadding:([BIIIILsun/security/ssl/ProtocolVersion;)I
            istore 5 /* newLen */
        23: .line 425
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 30
        24: .line 426
            iload 5 /* newLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            if_icmpge 26
        25: .line 427
            new javax.crypto.BadPaddingException
            dup
            ldc "invalid explicit IV"
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 431
      StackMap locals:
      StackMap stack:
            aload 1 /* buf */
            iload 2 /* offset */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            iadd
        27: .line 432
            aload 1 /* buf */
            iload 2 /* offset */
            iload 5 /* newLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            isub
        28: .line 431
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 434
            iload 5 /* newLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            isub
            istore 5 /* newLen */
        30: .line 437
      StackMap locals:
      StackMap stack:
            iload 5 /* newLen */
        31: ireturn
        end local 5 // int newLen
        32: .line 438
      StackMap locals: sun.security.ssl.CipherBox byte[] int int int
      StackMap stack: javax.crypto.ShortBufferException
            astore 5 /* e */
        start local 5 // javax.crypto.ShortBufferException e
        33: .line 439
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 5 /* e */
            invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // javax.crypto.ShortBufferException e
        end local 4 // int tagLen
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] buf
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   34     0    this  Lsun/security/ssl/CipherBox;
            0   34     1     buf  [B
            0   34     2  offset  I
            0   34     3     len  I
            0   34     4  tagLen  I
            3   32     5  newLen  I
            9   18     6      hd  Lsun/misc/HexDumpEncoder;
           33   34     5       e  Ljavax/crypto/ShortBufferException;
      Exception table:
        from    to  target  type
           8    18      19  Class java.io.IOException
           2    31      32  Class javax.crypto.ShortBufferException
    Exceptions:
      throws javax.crypto.BadPaddingException
    MethodParameters:
        Name  Flags
      buf     
      offset  
      len     
      tagLen  

  int decrypt(java.nio.ByteBuffer, int);
    descriptor: (Ljava/nio/ByteBuffer;I)I
    flags: (0x0000) 
    Code:
      stack=6, locals=10, args_size=3
        start local 0 // sun.security.ssl.CipherBox this
        start local 1 // java.nio.ByteBuffer bb
        start local 2 // int tagLen
         0: .line 455
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 3 /* len */
        start local 3 // int len
         1: .line 457
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            ifnonnull 4
         2: .line 458
            aload 1 /* bb */
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         3: .line 459
            iload 3 /* len */
            ireturn
         4: .line 466
      StackMap locals: int
      StackMap stack:
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* pos */
        start local 4 // int pos
         5: .line 467
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 5 /* dup */
        start local 5 // java.nio.ByteBuffer dup
         6: .line 468
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            aload 5 /* dup */
            aload 1 /* bb */
            invokevirtual javax.crypto.Cipher.update:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 6 /* newLen */
        start local 6 // int newLen
         7: .line 469
            iload 6 /* newLen */
            iload 3 /* len */
            if_icmpeq 11
         8: .line 471
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cipher buffering error in JCE provider "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 472
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 471
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 475
      StackMap locals: int java.nio.ByteBuffer int
      StackMap stack:
            getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
            ifnull 23
            ldc "plaintext"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 23
        12: .line 477
            new sun.misc.HexDumpEncoder
            dup
            invokespecial sun.misc.HexDumpEncoder.<init>:()V
            astore 7 /* hd */
        start local 7 // sun.misc.HexDumpEncoder hd
        13: .line 479
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        14: .line 480
            new java.lang.StringBuilder
            dup
            ldc "Padded plaintext after DECRYPTION:  len = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        15: .line 481
            iload 6 /* newLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        16: .line 480
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 479
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 483
            aload 7 /* hd */
        19: .line 484
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            checkcast java.nio.ByteBuffer
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        20: .line 483
            invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
        end local 7 // sun.misc.HexDumpEncoder hd
        21: .line 485
            goto 23
      StackMap locals:
      StackMap stack: java.io.IOException
        22: pop
        23: .line 491
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            ifeq 48
        24: .line 492
            aload 1 /* bb */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        25: .line 494
            aload 1 /* bb */
            iload 2 /* tagLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
        26: .line 493
            invokestatic sun.security.ssl.CipherBox.removePadding:(Ljava/nio/ByteBuffer;IILsun/security/ssl/ProtocolVersion;)I
            istore 6 /* newLen */
        27: .line 496
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 48
        28: .line 497
            iload 6 /* newLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            if_icmpge 30
        29: .line 498
            new javax.crypto.BadPaddingException
            dup
            ldc "invalid explicit IV"
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 502
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 7 /* buf */
        start local 7 // byte[] buf
        31: .line 503
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 8 /* limit */
        start local 8 // int limit
        32: .line 504
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 40
        33: .line 505
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            istore 9 /* arrayOffset */
        start local 9 // int arrayOffset
        34: .line 506
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 7 /* buf */
        35: .line 507
            aload 7 /* buf */
            iload 9 /* arrayOffset */
            iload 4 /* pos */
            iadd
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            iadd
        36: .line 508
            aload 7 /* buf */
            iload 9 /* arrayOffset */
            iload 4 /* pos */
            iadd
            iload 8 /* limit */
            iload 4 /* pos */
            isub
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            isub
        37: .line 507
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        38: .line 509
            aload 1 /* bb */
            iload 8 /* limit */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            isub
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 9 // int arrayOffset
        39: .line 510
            goto 46
        40: .line 511
      StackMap locals: byte[] int
      StackMap stack:
            iload 8 /* limit */
            iload 4 /* pos */
            isub
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            isub
            newarray 8
            astore 7 /* buf */
        41: .line 512
            aload 1 /* bb */
            iload 4 /* pos */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        42: .line 513
            aload 1 /* bb */
            aload 7 /* buf */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
        43: .line 514
            aload 1 /* bb */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        44: .line 515
            aload 1 /* bb */
            aload 7 /* buf */
            invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
            pop
        45: .line 516
            aload 1 /* bb */
            iload 8 /* limit */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            isub
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        46: .line 520
      StackMap locals:
      StackMap stack:
            aload 1 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 8 /* limit */
        47: .line 521
            aload 1 /* bb */
            iload 8 /* limit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 8 // int limit
        end local 7 // byte[] buf
        48: .line 524
      StackMap locals:
      StackMap stack:
            iload 6 /* newLen */
        49: ireturn
        end local 6 // int newLen
        end local 5 // java.nio.ByteBuffer dup
        end local 4 // int pos
        50: .line 525
      StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int
      StackMap stack: javax.crypto.ShortBufferException
            astore 4 /* e */
        start local 4 // javax.crypto.ShortBufferException e
        51: .line 526
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            astore 5 /* exc */
        start local 5 // java.lang.RuntimeException exc
        52: .line 527
            aload 5 /* exc */
            aload 4 /* e */
            invokevirtual java.lang.RuntimeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        53: .line 528
            aload 5 /* exc */
            athrow
        end local 5 // java.lang.RuntimeException exc
        end local 4 // javax.crypto.ShortBufferException e
        end local 3 // int len
        end local 2 // int tagLen
        end local 1 // java.nio.ByteBuffer bb
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   54     0         this  Lsun/security/ssl/CipherBox;
            0   54     1           bb  Ljava/nio/ByteBuffer;
            0   54     2       tagLen  I
            1   54     3          len  I
            5   50     4          pos  I
            6   50     5          dup  Ljava/nio/ByteBuffer;
            7   50     6       newLen  I
           13   21     7           hd  Lsun/misc/HexDumpEncoder;
           31   48     7          buf  [B
           32   48     8        limit  I
           34   39     9  arrayOffset  I
           51   54     4            e  Ljavax/crypto/ShortBufferException;
           52   54     5          exc  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
          12    21      22  Class java.io.IOException
           4    49      50  Class javax.crypto.ShortBufferException
    Exceptions:
      throws javax.crypto.BadPaddingException
    MethodParameters:
        Name  Flags
      bb      
      tagLen  

  private static int addPadding(byte[], int, int, int);
    descriptor: ([BIII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // byte[] buf
        start local 1 // int offset
        start local 2 // int len
        start local 3 // int blockSize
         0: .line 534
            iload 2 /* len */
            iconst_1
            iadd
            istore 4 /* newlen */
        start local 4 // int newlen
         1: .line 538
            iload 4 /* newlen */
            iload 3 /* blockSize */
            irem
            ifeq 4
         2: .line 539
            iload 4 /* newlen */
            iload 3 /* blockSize */
            iconst_1
            isub
            iadd
            istore 4 /* newlen */
         3: .line 540
            iload 4 /* newlen */
            iload 4 /* newlen */
            iload 3 /* blockSize */
            irem
            isub
            istore 4 /* newlen */
         4: .line 542
      StackMap locals: int
      StackMap stack:
            iload 4 /* newlen */
            iload 2 /* len */
            isub
            i2b
            istore 5 /* pad */
        start local 5 // byte pad
         5: .line 544
            aload 0 /* buf */
            arraylength
            iload 4 /* newlen */
            iload 1 /* offset */
            iadd
            if_icmpge 7
         6: .line 545
            new java.lang.IllegalArgumentException
            dup
            ldc "no space to pad buffer"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 551
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         8: iload 1 /* offset */
            iload 2 /* len */
            iadd
            istore 1 /* offset */
            goto 11
         9: .line 552
      StackMap locals: int
      StackMap stack:
            aload 0 /* buf */
            iload 1 /* offset */
            iinc 1 /* offset */ 1
            iload 5 /* pad */
            iconst_1
            isub
            i2b
            bastore
        10: .line 551
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* i */
            iload 5 /* pad */
            if_icmplt 9
        12: .line 554
            iload 4 /* newlen */
            ireturn
        end local 6 // int i
        end local 5 // byte pad
        end local 4 // int newlen
        end local 3 // int blockSize
        end local 2 // int len
        end local 1 // int offset
        end local 0 // byte[] buf
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0        buf  [B
            0   13     1     offset  I
            0   13     2        len  I
            0   13     3  blockSize  I
            1   13     4     newlen  I
            5   13     5        pad  B
            8   13     6          i  I
    MethodParameters:
           Name  Flags
      buf        
      offset     
      len        
      blockSize  

  private static int addPadding(java.nio.ByteBuffer, int);
    descriptor: (Ljava/nio/ByteBuffer;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // java.nio.ByteBuffer bb
        start local 1 // int blockSize
         0: .line 565
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 2 /* len */
        start local 2 // int len
         1: .line 566
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 3 /* offset */
        start local 3 // int offset
         2: .line 568
            iload 2 /* len */
            iconst_1
            iadd
            istore 4 /* newlen */
        start local 4 // int newlen
         3: .line 572
            iload 4 /* newlen */
            iload 1 /* blockSize */
            irem
            ifeq 6
         4: .line 573
            iload 4 /* newlen */
            iload 1 /* blockSize */
            iconst_1
            isub
            iadd
            istore 4 /* newlen */
         5: .line 574
            iload 4 /* newlen */
            iload 4 /* newlen */
            iload 1 /* blockSize */
            irem
            isub
            istore 4 /* newlen */
         6: .line 576
      StackMap locals: int int int
      StackMap stack:
            iload 4 /* newlen */
            iload 2 /* len */
            isub
            i2b
            istore 5 /* pad */
        start local 5 // byte pad
         7: .line 581
            aload 0 /* bb */
            iload 4 /* newlen */
            iload 3 /* offset */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         8: .line 586
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         9: iload 3 /* offset */
            iload 2 /* len */
            iadd
            istore 3 /* offset */
            goto 12
        10: .line 587
      StackMap locals: int int
      StackMap stack:
            aload 0 /* bb */
            iload 3 /* offset */
            iinc 3 /* offset */ 1
            iload 5 /* pad */
            iconst_1
            isub
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        11: .line 586
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 6 /* i */
            iload 5 /* pad */
            if_icmplt 10
        13: .line 590
            aload 0 /* bb */
            iload 3 /* offset */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        14: .line 591
            aload 0 /* bb */
            iload 3 /* offset */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        15: .line 593
            iload 4 /* newlen */
            ireturn
        end local 6 // int i
        end local 5 // byte pad
        end local 4 // int newlen
        end local 3 // int offset
        end local 2 // int len
        end local 1 // int blockSize
        end local 0 // java.nio.ByteBuffer bb
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0         bb  Ljava/nio/ByteBuffer;
            0   16     1  blockSize  I
            1   16     2        len  I
            2   16     3     offset  I
            3   16     4     newlen  I
            7   16     5        pad  B
            9   16     6          i  I
    MethodParameters:
           Name  Flags
      bb         
      blockSize  

  private static int[] checkPadding(byte[], int, int, byte);
    descriptor: ([BIIB)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // byte[] buf
        start local 1 // int offset
        start local 2 // int len
        start local 3 // byte pad
         0: .line 606
            iload 2 /* len */
            ifgt 2
         1: .line 607
            new java.lang.RuntimeException
            dup
            ldc "padding len must be positive"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 612
      StackMap locals:
      StackMap stack:
            iconst_2
            newarray 10
            astore 4 /* results */
        start local 4 // int[] results
         3: .line 613
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 13
         5: .line 614
      StackMap locals: int[] int
      StackMap stack:
            iconst_0
            istore 6 /* j */
        start local 6 // int j
         6: goto 12
         7: .line 615
      StackMap locals: int
      StackMap stack:
            aload 0 /* buf */
            iload 1 /* offset */
            iload 6 /* j */
            iadd
            baload
            iload 3 /* pad */
            if_icmpeq 10
         8: .line 616
            aload 4 /* results */
            iconst_0
            dup2
            iaload
            iconst_1
            iadd
            iastore
         9: .line 617
            goto 11
        10: .line 618
      StackMap locals:
      StackMap stack:
            aload 4 /* results */
            iconst_1
            dup2
            iaload
            iconst_1
            iadd
            iastore
        11: .line 614
      StackMap locals:
      StackMap stack:
            iinc 6 /* j */ 1
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 6 /* j */
            iload 2 /* len */
            if_icmpge 13
            iload 5 /* i */
            sipush 256
            if_icmple 7
        end local 6 // int j
        13: .line 613
      StackMap locals:
      StackMap stack:
            iload 5 /* i */
            sipush 256
            if_icmple 5
        end local 5 // int i
        14: .line 623
            aload 4 /* results */
            areturn
        end local 4 // int[] results
        end local 3 // byte pad
        end local 2 // int len
        end local 1 // int offset
        end local 0 // byte[] buf
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0      buf  [B
            0   15     1   offset  I
            0   15     2      len  I
            0   15     3      pad  B
            3   15     4  results  [I
            4   14     5        i  I
            6   13     6        j  I
    MethodParameters:
        Name  Flags
      buf     
      offset  
      len     
      pad     

  private static int[] checkPadding(java.nio.ByteBuffer, byte);
    descriptor: (Ljava/nio/ByteBuffer;B)[I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.nio.ByteBuffer bb
        start local 1 // byte pad
         0: .line 635
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 2
         1: .line 636
            new java.lang.RuntimeException
            dup
            ldc "hasRemaining() must be positive"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 641
      StackMap locals:
      StackMap stack:
            iconst_2
            newarray 10
            astore 2 /* results */
        start local 2 // int[] results
         3: .line 642
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.mark:()Ljava/nio/Buffer;
            pop
         4: .line 643
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         5: goto 13
         6: .line 645
      StackMap locals: int[] int
      StackMap stack:
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.get:()B
            iload 1 /* pad */
            if_icmpeq 9
         7: .line 646
            aload 2 /* results */
            iconst_0
            dup2
            iaload
            iconst_1
            iadd
            iastore
         8: .line 647
            goto 10
         9: .line 648
      StackMap locals:
      StackMap stack:
            aload 2 /* results */
            iconst_1
            dup2
            iaload
            iconst_1
            iadd
            iastore
        10: .line 644
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 12
            iload 3 /* i */
            sipush 256
            if_icmple 6
        12: .line 643
      StackMap locals:
      StackMap stack:
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.reset:()Ljava/nio/Buffer;
            pop
      StackMap locals:
      StackMap stack:
        13: iload 3 /* i */
            sipush 256
            if_icmple 11
        end local 3 // int i
        14: .line 653
            aload 2 /* results */
            areturn
        end local 2 // int[] results
        end local 1 // byte pad
        end local 0 // java.nio.ByteBuffer bb
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0       bb  Ljava/nio/ByteBuffer;
            0   15     1      pad  B
            3   15     2  results  [I
            5   14     3        i  I
    MethodParameters:
      Name  Flags
      bb    
      pad   

  private static int removePadding(byte[], int, int, int, int, sun.security.ssl.ProtocolVersion);
    descriptor: ([BIIIILsun/security/ssl/ProtocolVersion;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=6
        start local 0 // byte[] buf
        start local 1 // int offset
        start local 2 // int len
        start local 3 // int tagLen
        start local 4 // int blockSize
        start local 5 // sun.security.ssl.ProtocolVersion protocolVersion
         0: .line 671
            iload 1 /* offset */
            iload 2 /* len */
            iadd
            iconst_1
            isub
            istore 6 /* padOffset */
        start local 6 // int padOffset
         1: .line 672
            aload 0 /* buf */
            iload 6 /* padOffset */
            baload
            sipush 255
            iand
            istore 7 /* padLen */
        start local 7 // int padLen
         2: .line 674
            iload 2 /* len */
            iload 7 /* padLen */
            iconst_1
            iadd
            isub
            istore 8 /* newLen */
        start local 8 // int newLen
         3: .line 675
            iload 8 /* newLen */
            iload 3 /* tagLen */
            isub
            ifge 6
         4: .line 681
            aload 0 /* buf */
            iload 1 /* offset */
            iload 2 /* len */
            iload 7 /* padLen */
            sipush 255
            iand
            i2b
            invokestatic sun.security.ssl.CipherBox.checkPadding:([BIIB)[I
            pop
         5: .line 683
            new javax.crypto.BadPaddingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid Padding length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* padLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 687
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* buf */
            iload 1 /* offset */
            iload 8 /* newLen */
            iadd
         7: .line 688
            iload 7 /* padLen */
            iconst_1
            iadd
            iload 7 /* padLen */
            sipush 255
            iand
            i2b
         8: .line 687
            invokestatic sun.security.ssl.CipherBox.checkPadding:([BIIB)[I
            astore 9 /* results */
        start local 9 // int[] results
         9: .line 689
            aload 5 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS10:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 12
        10: .line 690
            aload 9 /* results */
            iconst_0
            iaload
            ifeq 14
        11: .line 691
            new javax.crypto.BadPaddingException
            dup
            ldc "Invalid TLS padding data"
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 698
      StackMap locals: int[]
      StackMap stack:
            iload 7 /* padLen */
            iload 4 /* blockSize */
            if_icmple 14
        13: .line 699
            new javax.crypto.BadPaddingException
            dup
            ldc "Invalid SSLv3 padding"
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 702
      StackMap locals:
      StackMap stack:
            iload 8 /* newLen */
            ireturn
        end local 9 // int[] results
        end local 8 // int newLen
        end local 7 // int padLen
        end local 6 // int padOffset
        end local 5 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 4 // int blockSize
        end local 3 // int tagLen
        end local 2 // int len
        end local 1 // int offset
        end local 0 // byte[] buf
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0              buf  [B
            0   15     1           offset  I
            0   15     2              len  I
            0   15     3           tagLen  I
            0   15     4        blockSize  I
            0   15     5  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            1   15     6        padOffset  I
            2   15     7           padLen  I
            3   15     8           newLen  I
            9   15     9          results  [I
    Exceptions:
      throws javax.crypto.BadPaddingException
    MethodParameters:
                 Name  Flags
      buf              
      offset           
      len              
      tagLen           
      blockSize        
      protocolVersion  

  private static int removePadding(java.nio.ByteBuffer, int, int, sun.security.ssl.ProtocolVersion);
    descriptor: (Ljava/nio/ByteBuffer;IILsun/security/ssl/ProtocolVersion;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=4
        start local 0 // java.nio.ByteBuffer bb
        start local 1 // int tagLen
        start local 2 // int blockSize
        start local 3 // sun.security.ssl.ProtocolVersion protocolVersion
         0: .line 712
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 4 /* len */
        start local 4 // int len
         1: .line 713
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 5 /* offset */
        start local 5 // int offset
         2: .line 716
            iload 5 /* offset */
            iload 4 /* len */
            iadd
            iconst_1
            isub
            istore 6 /* padOffset */
        start local 6 // int padOffset
         3: .line 717
            aload 0 /* bb */
            iload 6 /* padOffset */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            sipush 255
            iand
            istore 7 /* padLen */
        start local 7 // int padLen
         4: .line 719
            iload 4 /* len */
            iload 7 /* padLen */
            iconst_1
            iadd
            isub
            istore 8 /* newLen */
        start local 8 // int newLen
         5: .line 720
            iload 8 /* newLen */
            iload 1 /* tagLen */
            isub
            ifge 8
         6: .line 726
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            iload 7 /* padLen */
            sipush 255
            iand
            i2b
            invokestatic sun.security.ssl.CipherBox.checkPadding:(Ljava/nio/ByteBuffer;B)[I
            pop
         7: .line 728
            new javax.crypto.BadPaddingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid Padding length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* padLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 733
      StackMap locals: java.nio.ByteBuffer int int sun.security.ssl.ProtocolVersion int int int int int
      StackMap stack:
            aload 0 /* bb */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            iload 5 /* offset */
            iload 8 /* newLen */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            checkcast java.nio.ByteBuffer
         9: .line 734
            iload 7 /* padLen */
            sipush 255
            iand
            i2b
        10: .line 732
            invokestatic sun.security.ssl.CipherBox.checkPadding:(Ljava/nio/ByteBuffer;B)[I
            astore 9 /* results */
        start local 9 // int[] results
        11: .line 735
            aload 3 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS10:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 14
        12: .line 736
            aload 9 /* results */
            iconst_0
            iaload
            ifeq 16
        13: .line 737
            new javax.crypto.BadPaddingException
            dup
            ldc "Invalid TLS padding data"
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 744
      StackMap locals: int[]
      StackMap stack:
            iload 7 /* padLen */
            iload 2 /* blockSize */
            if_icmple 16
        15: .line 745
            new javax.crypto.BadPaddingException
            dup
            ldc "Invalid SSLv3 padding"
            invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 752
      StackMap locals:
      StackMap stack:
            aload 0 /* bb */
            iload 5 /* offset */
            iload 8 /* newLen */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        17: .line 753
            aload 0 /* bb */
            iload 5 /* offset */
            iload 8 /* newLen */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        18: .line 755
            iload 8 /* newLen */
            ireturn
        end local 9 // int[] results
        end local 8 // int newLen
        end local 7 // int padLen
        end local 6 // int padOffset
        end local 5 // int offset
        end local 4 // int len
        end local 3 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 2 // int blockSize
        end local 1 // int tagLen
        end local 0 // java.nio.ByteBuffer bb
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0               bb  Ljava/nio/ByteBuffer;
            0   19     1           tagLen  I
            0   19     2        blockSize  I
            0   19     3  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            1   19     4              len  I
            2   19     5           offset  I
            3   19     6        padOffset  I
            4   19     7           padLen  I
            5   19     8           newLen  I
           11   19     9          results  [I
    Exceptions:
      throws javax.crypto.BadPaddingException
    MethodParameters:
                 Name  Flags
      bb               
      tagLen           
      blockSize        
      protocolVersion  

  boolean isCBCMode();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.CipherBox this
         0: .line 764
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.isCBCMode:Z
            ireturn
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/CipherBox;

  boolean isNullCipher();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.CipherBox this
         0: .line 773
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
            ifnonnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/CipherBox;

  boolean sanityCheck(int, int);
    descriptor: (II)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // sun.security.ssl.CipherBox this
        start local 1 // int tagLen
        start local 2 // int fragmentLen
         0: .line 790
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.isCBCMode:Z
            ifne 3
         1: .line 791
            iload 2 /* fragmentLen */
            iload 1 /* tagLen */
            if_icmplt 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
         3: .line 794
      StackMap locals:
      StackMap stack:
            iload 2 /* fragmentLen */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            irem
            ifne 10
         4: .line 795
            iload 1 /* tagLen */
            iconst_1
            iadd
            istore 3 /* minimal */
        start local 3 // int minimal
         5: .line 796
            iload 3 /* minimal */
            aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
            if_icmplt 6
            iload 3 /* minimal */
            goto 7
      StackMap locals: int
      StackMap stack:
         6: aload 0 /* this */
            getfield sun.security.ssl.CipherBox.blockSize:I
      StackMap locals:
      StackMap stack: int
         7: istore 3 /* minimal */
         8: .line 797
            iload 2 /* fragmentLen */
            iload 3 /* minimal */
            if_icmplt 9
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         9: iconst_0
            ireturn
        end local 3 // int minimal
        10: .line 800
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // int fragmentLen
        end local 1 // int tagLen
        end local 0 // sun.security.ssl.CipherBox this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lsun/security/ssl/CipherBox;
            0   11     1       tagLen  I
            0   11     2  fragmentLen  I
            5   10     3      minimal  I
    MethodParameters:
             Name  Flags
      tagLen       
      fragmentLen  
}
SourceFile: "CipherBox.java"
InnerClasses:
  final BulkCipher = sun.security.ssl.CipherSuite$BulkCipher of sun.security.ssl.CipherSuite