public abstract class javax.crypto.CipherSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: javax.crypto.CipherSpi
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.crypto.CipherSpi this
         0: .line 230
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/crypto/CipherSpi;

  protected abstract void engineSetMode(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
      Name  Flags
      mode  

  protected abstract void engineSetPadding(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws javax.crypto.NoSuchPaddingException
    MethodParameters:
         Name  Flags
      padding  

  protected abstract int engineGetBlockSize();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract int engineGetOutputSize(int);
    descriptor: (I)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      inputLen  

  protected abstract byte[] engineGetIV();
    descriptor: ()[B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract java.security.AlgorithmParameters engineGetParameters();
    descriptor: ()Ljava/security/AlgorithmParameters;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void engineInit(int, java.security.Key, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      random  

  protected abstract void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected abstract void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected abstract byte[] engineUpdate(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected abstract int engineUpdate(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws javax.crypto.ShortBufferException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // java.nio.ByteBuffer input
        start local 2 // java.nio.ByteBuffer output
         0: .line 531
            aload 0 /* this */
            aload 1 /* input */
            aload 2 /* output */
            iconst_1
            invokevirtual javax.crypto.CipherSpi.bufferCrypt:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Z)I
         1: ireturn
         2: .line 532
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            pop
         3: .line 534
            new java.security.ProviderException
            dup
            ldc "Internal error in update()"
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 535
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            pop
         5: .line 537
            new java.security.ProviderException
            dup
            ldc "Internal error in update()"
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.nio.ByteBuffer output
        end local 1 // java.nio.ByteBuffer input
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Ljavax/crypto/CipherSpi;
            0    6     1   input  Ljava/nio/ByteBuffer;
            0    6     2  output  Ljava/nio/ByteBuffer;
      Exception table:
        from    to  target  type
           0     1       2  Class javax.crypto.IllegalBlockSizeException
           0     1       4  Class javax.crypto.BadPaddingException
    Exceptions:
      throws javax.crypto.ShortBufferException
    MethodParameters:
        Name  Flags
      input   
      output  

  protected abstract byte[] engineDoFinal(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected abstract int engineDoFinal(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected int engineDoFinal(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // java.nio.ByteBuffer input
        start local 2 // java.nio.ByteBuffer output
         0: .line 688
            aload 0 /* this */
            aload 1 /* input */
            aload 2 /* output */
            iconst_0
            invokevirtual javax.crypto.CipherSpi.bufferCrypt:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Z)I
            ireturn
        end local 2 // java.nio.ByteBuffer output
        end local 1 // java.nio.ByteBuffer input
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljavax/crypto/CipherSpi;
            0    1     1   input  Ljava/nio/ByteBuffer;
            0    1     2  output  Ljava/nio/ByteBuffer;
    Exceptions:
      throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
        Name  Flags
      input   
      output  

  static int getTempArraySize(int);
    descriptor: (I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int totalSize
         0: .line 695
            sipush 4096
            iload 0 /* totalSize */
            invokestatic java.lang.Math.min:(II)I
            ireturn
        end local 0 // int totalSize
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  totalSize  I
    MethodParameters:
           Name  Flags
      totalSize  

  private int bufferCrypt(java.nio.ByteBuffer, java.nio.ByteBuffer, boolean);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Z)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=19, args_size=4
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // java.nio.ByteBuffer input
        start local 2 // java.nio.ByteBuffer output
        start local 3 // boolean isUpdate
         0: .line 705
            aload 1 /* input */
            ifnull 1
            aload 2 /* output */
            ifnonnull 4
         1: .line 706
      StackMap locals:
      StackMap stack:
            new java.lang.NullPointerException
            dup
         2: .line 707
            ldc "Input and output buffers must not be null"
         3: .line 706
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 709
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* inPos */
        start local 4 // int inPos
         5: .line 710
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* inLimit */
        start local 5 // int inLimit
         6: .line 711
            iload 5 /* inLimit */
            iload 4 /* inPos */
            isub
            istore 6 /* inLen */
        start local 6 // int inLen
         7: .line 712
            iload 3 /* isUpdate */
            ifeq 9
            iload 6 /* inLen */
            ifne 9
         8: .line 713
            iconst_0
            ireturn
         9: .line 715
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            iload 6 /* inLen */
            invokevirtual javax.crypto.CipherSpi.engineGetOutputSize:(I)I
            istore 7 /* outLenNeeded */
        start local 7 // int outLenNeeded
        10: .line 716
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 7 /* outLenNeeded */
            if_icmpge 14
        11: .line 717
            new javax.crypto.ShortBufferException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Need at least "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* outLenNeeded */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        12: .line 718
            ldc " bytes of space in output buffer"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 717
            invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 721
      StackMap locals: int
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            istore 8 /* a1 */
        start local 8 // boolean a1
        15: .line 722
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            istore 9 /* a2 */
        start local 9 // boolean a2
        16: .line 724
            iload 8 /* a1 */
            ifeq 29
            iload 9 /* a2 */
            ifeq 29
        17: .line 725
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        18: .line 726
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 4 /* inPos */
            iadd
            istore 11 /* inOfs */
        start local 11 // int inOfs
        19: .line 727
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 12 /* outArray */
        start local 12 // byte[] outArray
        20: .line 728
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 13 /* outPos */
        start local 13 // int outPos
        21: .line 729
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 13 /* outPos */
            iadd
            istore 14 /* outOfs */
        start local 14 // int outOfs
        22: .line 731
            iload 3 /* isUpdate */
            ifeq 25
        23: .line 732
            aload 0 /* this */
            aload 10 /* inArray */
            iload 11 /* inOfs */
            iload 6 /* inLen */
            aload 12 /* outArray */
            iload 14 /* outOfs */
            invokevirtual javax.crypto.CipherSpi.engineUpdate:([BII[BI)I
            istore 15 /* n */
        start local 15 // int n
        24: .line 733
            goto 26
        end local 15 // int n
        25: .line 734
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int byte[] int byte[] int int
      StackMap stack:
            aload 0 /* this */
            aload 10 /* inArray */
            iload 11 /* inOfs */
            iload 6 /* inLen */
            aload 12 /* outArray */
            iload 14 /* outOfs */
            invokevirtual javax.crypto.CipherSpi.engineDoFinal:([BII[BI)I
            istore 15 /* n */
        start local 15 // int n
        26: .line 736
      StackMap locals: int
      StackMap stack:
            aload 1 /* input */
            iload 5 /* inLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        27: .line 737
            aload 2 /* output */
            iload 13 /* outPos */
            iload 15 /* n */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        28: .line 738
            iload 15 /* n */
            ireturn
        end local 15 // int n
        end local 14 // int outOfs
        end local 13 // int outPos
        end local 12 // byte[] outArray
        end local 11 // int inOfs
        end local 10 // byte[] inArray
        29: .line 739
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int
      StackMap stack:
            iload 8 /* a1 */
            ifne 48
            iload 9 /* a2 */
            ifeq 48
        30: .line 740
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 10 /* outPos */
        start local 10 // int outPos
        31: .line 741
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 11 /* outArray */
        start local 11 // byte[] outArray
        32: .line 742
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 10 /* outPos */
            iadd
            istore 12 /* outOfs */
        start local 12 // int outOfs
        33: .line 743
            iload 6 /* inLen */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 13 /* inArray */
        start local 13 // byte[] inArray
        34: .line 744
            iconst_0
            istore 14 /* total */
        start local 14 // int total
        35: .line 746
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int int byte[] int byte[] int
      StackMap stack:
            iload 6 /* inLen */
            aload 13 /* inArray */
            arraylength
            invokestatic java.lang.Math.min:(II)I
            istore 15 /* chunk */
        start local 15 // int chunk
        36: .line 747
            aload 1 /* input */
            aload 13 /* inArray */
            iconst_0
            iload 15 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        37: .line 749
            iload 3 /* isUpdate */
            ifne 38
            iload 6 /* inLen */
            iload 15 /* chunk */
            if_icmpeq 40
        38: .line 750
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 13 /* inArray */
            iconst_0
            iload 15 /* chunk */
            aload 11 /* outArray */
            iload 12 /* outOfs */
            invokevirtual javax.crypto.CipherSpi.engineUpdate:([BII[BI)I
            istore 16 /* n */
        start local 16 // int n
        39: .line 751
            goto 41
        end local 16 // int n
        40: .line 752
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 13 /* inArray */
            iconst_0
            iload 15 /* chunk */
            aload 11 /* outArray */
            iload 12 /* outOfs */
            invokevirtual javax.crypto.CipherSpi.engineDoFinal:([BII[BI)I
            istore 16 /* n */
        start local 16 // int n
        41: .line 754
      StackMap locals: int
      StackMap stack:
            iload 14 /* total */
            iload 16 /* n */
            iadd
            istore 14 /* total */
        42: .line 755
            iload 12 /* outOfs */
            iload 16 /* n */
            iadd
            istore 12 /* outOfs */
        43: .line 756
            iload 6 /* inLen */
            iload 15 /* chunk */
            isub
            istore 6 /* inLen */
        end local 16 // int n
        end local 15 // int chunk
        44: .line 757
            iload 6 /* inLen */
        45: .line 745
            ifgt 35
        46: .line 758
            aload 2 /* output */
            iload 10 /* outPos */
            iload 14 /* total */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        47: .line 759
            iload 14 /* total */
            ireturn
        end local 14 // int total
        end local 13 // byte[] inArray
        end local 12 // int outOfs
        end local 11 // byte[] outArray
        end local 10 // int outPos
        48: .line 763
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int
      StackMap stack:
            iload 8 /* a1 */
            ifeq 52
        49: .line 764
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        50: .line 765
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 4 /* inPos */
            iadd
            istore 11 /* inOfs */
        start local 11 // int inOfs
        51: .line 766
            goto 54
        end local 11 // int inOfs
        end local 10 // byte[] inArray
        52: .line 767
      StackMap locals:
      StackMap stack:
            iload 6 /* inLen */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        53: .line 768
            iconst_0
            istore 11 /* inOfs */
        start local 11 // int inOfs
        54: .line 770
      StackMap locals: byte[] int
      StackMap stack:
            iload 7 /* outLenNeeded */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 12 /* outArray */
        start local 12 // byte[] outArray
        55: .line 771
            aload 12 /* outArray */
            arraylength
            istore 13 /* outSize */
        start local 13 // int outSize
        56: .line 772
            iconst_0
            istore 14 /* total */
        start local 14 // int total
        57: .line 773
            iconst_0
            istore 15 /* resized */
        start local 15 // boolean resized
        58: .line 775
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int byte[] int byte[] int int int
      StackMap stack:
            iload 6 /* inLen */
            iload 13 /* outSize */
            invokestatic java.lang.Math.min:(II)I
            istore 16 /* chunk */
        start local 16 // int chunk
        59: .line 776
            iload 8 /* a1 */
            ifne 62
            iload 15 /* resized */
            ifne 62
        60: .line 777
            aload 1 /* input */
            aload 10 /* inArray */
            iconst_0
            iload 16 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        61: .line 778
            iconst_0
            istore 11 /* inOfs */
        62: .line 782
      StackMap locals: int
      StackMap stack:
            iload 3 /* isUpdate */
            ifne 63
            iload 6 /* inLen */
            iload 16 /* chunk */
            if_icmpeq 65
        63: .line 783
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* inArray */
            iload 11 /* inOfs */
            iload 16 /* chunk */
            aload 12 /* outArray */
            iconst_0
            invokevirtual javax.crypto.CipherSpi.engineUpdate:([BII[BI)I
            istore 17 /* n */
        start local 17 // int n
        64: .line 784
            goto 66
        end local 17 // int n
        65: .line 785
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* inArray */
            iload 11 /* inOfs */
            iload 16 /* chunk */
            aload 12 /* outArray */
            iconst_0
            invokevirtual javax.crypto.CipherSpi.engineDoFinal:([BII[BI)I
            istore 17 /* n */
        start local 17 // int n
        66: .line 787
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 15 /* resized */
        67: .line 788
            iload 11 /* inOfs */
            iload 16 /* chunk */
            iadd
            istore 11 /* inOfs */
        68: .line 789
            iload 6 /* inLen */
            iload 16 /* chunk */
            isub
            istore 6 /* inLen */
        69: .line 790
            aload 2 /* output */
            aload 12 /* outArray */
            iconst_0
            iload 17 /* n */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
        70: .line 791
            iload 14 /* total */
            iload 17 /* n */
            iadd
            istore 14 /* total */
        end local 17 // int n
        71: .line 792
            goto 82
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int byte[] int byte[] int int int int
      StackMap stack: javax.crypto.ShortBufferException
        72: astore 17 /* e */
        start local 17 // javax.crypto.ShortBufferException e
        73: .line 793
            iload 15 /* resized */
            ifeq 79
        74: .line 796
            new java.security.ProviderException
            dup
        75: .line 797
            ldc "Could not determine buffer size"
        76: .line 796
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
        77: .line 797
            aload 17 /* e */
            invokevirtual java.security.ProviderException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        78: .line 796
            checkcast java.security.ProviderException
            athrow
        79: .line 800
      StackMap locals: javax.crypto.ShortBufferException
      StackMap stack:
            iconst_1
            istore 15 /* resized */
        80: .line 801
            aload 0 /* this */
            iload 16 /* chunk */
            invokevirtual javax.crypto.CipherSpi.engineGetOutputSize:(I)I
            istore 18 /* newOut */
        start local 18 // int newOut
        81: .line 802
            iload 18 /* newOut */
            newarray 8
            astore 12 /* outArray */
        end local 18 // int newOut
        end local 17 // javax.crypto.ShortBufferException e
        end local 16 // int chunk
        82: .line 804
      StackMap locals:
      StackMap stack:
            iload 6 /* inLen */
        83: .line 774
            ifgt 58
        84: .line 805
            aload 1 /* input */
            iload 5 /* inLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        85: .line 806
            iload 14 /* total */
            ireturn
        end local 15 // boolean resized
        end local 14 // int total
        end local 13 // int outSize
        end local 12 // byte[] outArray
        end local 11 // int inOfs
        end local 10 // byte[] inArray
        end local 9 // boolean a2
        end local 8 // boolean a1
        end local 7 // int outLenNeeded
        end local 6 // int inLen
        end local 5 // int inLimit
        end local 4 // int inPos
        end local 3 // boolean isUpdate
        end local 2 // java.nio.ByteBuffer output
        end local 1 // java.nio.ByteBuffer input
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   86     0          this  Ljavax/crypto/CipherSpi;
            0   86     1         input  Ljava/nio/ByteBuffer;
            0   86     2        output  Ljava/nio/ByteBuffer;
            0   86     3      isUpdate  Z
            5   86     4         inPos  I
            6   86     5       inLimit  I
            7   86     6         inLen  I
           10   86     7  outLenNeeded  I
           15   86     8            a1  Z
           16   86     9            a2  Z
           18   29    10       inArray  [B
           19   29    11         inOfs  I
           20   29    12      outArray  [B
           21   29    13        outPos  I
           22   29    14        outOfs  I
           24   25    15             n  I
           26   29    15             n  I
           31   48    10        outPos  I
           32   48    11      outArray  [B
           33   48    12        outOfs  I
           34   48    13       inArray  [B
           35   48    14         total  I
           36   44    15         chunk  I
           39   40    16             n  I
           41   44    16             n  I
           50   52    10       inArray  [B
           53   86    10       inArray  [B
           51   52    11         inOfs  I
           54   86    11         inOfs  I
           55   86    12      outArray  [B
           56   86    13       outSize  I
           57   86    14         total  I
           58   86    15       resized  Z
           59   82    16         chunk  I
           64   65    17             n  I
           66   71    17             n  I
           73   82    17             e  Ljavax/crypto/ShortBufferException;
           81   82    18        newOut  I
      Exception table:
        from    to  target  type
          62    71      72  Class javax.crypto.ShortBufferException
    Exceptions:
      throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
          Name  Flags
      input     
      output    
      isUpdate  

  protected byte[] engineWrap(java.security.Key);
    descriptor: (Ljava/security/Key;)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // java.security.Key key
         0: .line 837
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // java.security.Key key
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/crypto/CipherSpi;
            0    1     1   key  Ljava/security/Key;
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected java.security.Key engineUnwrap(byte[], java.lang.String, int);
    descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // byte[] wrappedKey
        start local 2 // java.lang.String wrappedKeyAlgorithm
        start local 3 // int wrappedKeyType
         0: .line 875
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 3 // int wrappedKeyType
        end local 2 // java.lang.String wrappedKeyAlgorithm
        end local 1 // byte[] wrappedKey
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    1     0                 this  Ljavax/crypto/CipherSpi;
            0    1     1           wrappedKey  [B
            0    1     2  wrappedKeyAlgorithm  Ljava/lang/String;
            0    1     3       wrappedKeyType  I
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      wrappedKey           
      wrappedKeyAlgorithm  
      wrappedKeyType       

  protected int engineGetKeySize(java.security.Key);
    descriptor: (Ljava/security/Key;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // java.security.Key key
         0: .line 893
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // java.security.Key key
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/crypto/CipherSpi;
            0    1     1   key  Ljava/security/Key;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   
}
SourceFile: "CipherSpi.java"