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 546
            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 547
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            pop
         3: .line 549
            new java.security.ProviderException
            dup
            ldc "Internal error in update()"
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 550
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            pop
         5: .line 552
            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 721
            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 728
            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=18, 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 738
            aload 1 /* input */
            ifnull 1
            aload 2 /* output */
            ifnonnull 4
         1: .line 739
      StackMap locals:
      StackMap stack:
            new java.lang.NullPointerException
            dup
         2: .line 740
            ldc "Input and output buffers must not be null"
         3: .line 739
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 742
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* inPos */
        start local 4 // int inPos
         5: .line 743
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* inLimit */
        start local 5 // int inLimit
         6: .line 744
            iload 5 /* inLimit */
            iload 4 /* inPos */
            isub
            istore 6 /* inLen */
        start local 6 // int inLen
         7: .line 745
            iload 3 /* isUpdate */
            ifeq 9
            iload 6 /* inLen */
            ifne 9
         8: .line 746
            iconst_0
            ireturn
         9: .line 748
      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 749
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 7 /* outLenNeeded */
            if_icmpge 14
        11: .line 750
            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 751
            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 750
            invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 754
      StackMap locals: int
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            istore 8 /* a1 */
        start local 8 // boolean a1
        15: .line 755
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            istore 9 /* a2 */
        start local 9 // boolean a2
        16: .line 757
            iload 8 /* a1 */
            ifeq 29
            iload 9 /* a2 */
            ifeq 29
        17: .line 758
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        18: .line 759
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 4 /* inPos */
            iadd
            istore 11 /* inOfs */
        start local 11 // int inOfs
        19: .line 760
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 12 /* outArray */
        start local 12 // byte[] outArray
        20: .line 761
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 13 /* outPos */
        start local 13 // int outPos
        21: .line 762
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 13 /* outPos */
            iadd
            istore 14 /* outOfs */
        start local 14 // int outOfs
        22: .line 764
            iload 3 /* isUpdate */
            ifeq 25
        23: .line 765
            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 766
            goto 26
        end local 15 // int n
        25: .line 767
      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 769
      StackMap locals: int
      StackMap stack:
            aload 1 /* input */
            iload 5 /* inLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        27: .line 770
            aload 2 /* output */
            iload 13 /* outPos */
            iload 15 /* n */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        28: .line 771
            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 772
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int
      StackMap stack:
            iload 8 /* a1 */
            ifne 49
            iload 9 /* a2 */
            ifeq 49
        30: .line 773
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 10 /* outPos */
        start local 10 // int outPos
        31: .line 774
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 11 /* outArray */
        start local 11 // byte[] outArray
        32: .line 775
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 10 /* outPos */
            iadd
            istore 12 /* outOfs */
        start local 12 // int outOfs
        33: .line 776
            iload 6 /* inLen */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 13 /* inArray */
        start local 13 // byte[] inArray
        34: .line 777
            iconst_0
            istore 14 /* total */
        start local 14 // int total
        35: .line 779
      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 780
            iload 15 /* chunk */
            ifle 38
        37: .line 781
            aload 1 /* input */
            aload 13 /* inArray */
            iconst_0
            iload 15 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        38: .line 784
      StackMap locals: int
      StackMap stack:
            iload 3 /* isUpdate */
            ifne 39
            iload 6 /* inLen */
            iload 15 /* chunk */
            if_icmpeq 41
        39: .line 785
      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.engineUpdate:([BII[BI)I
            istore 16 /* n */
        start local 16 // int n
        40: .line 786
            goto 42
        end local 16 // int n
        41: .line 787
      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
        42: .line 789
      StackMap locals: int
      StackMap stack:
            iload 14 /* total */
            iload 16 /* n */
            iadd
            istore 14 /* total */
        43: .line 790
            iload 12 /* outOfs */
            iload 16 /* n */
            iadd
            istore 12 /* outOfs */
        44: .line 791
            iload 6 /* inLen */
            iload 15 /* chunk */
            isub
            istore 6 /* inLen */
        end local 16 // int n
        end local 15 // int chunk
        45: .line 792
            iload 6 /* inLen */
        46: .line 778
            ifgt 35
        47: .line 793
            aload 2 /* output */
            iload 10 /* outPos */
            iload 14 /* total */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        48: .line 794
            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
        49: .line 798
      StackMap locals: javax.crypto.CipherSpi java.nio.ByteBuffer java.nio.ByteBuffer int int int int int int int
      StackMap stack:
            iload 8 /* a1 */
            ifeq 53
        50: .line 799
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        51: .line 800
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 4 /* inPos */
            iadd
            istore 11 /* inOfs */
        start local 11 // int inOfs
        52: .line 801
            goto 55
        end local 11 // int inOfs
        end local 10 // byte[] inArray
        53: .line 802
      StackMap locals:
      StackMap stack:
            iload 6 /* inLen */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        54: .line 803
            iconst_0
            istore 11 /* inOfs */
        start local 11 // int inOfs
        55: .line 805
      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
        56: .line 806
            aload 12 /* outArray */
            arraylength
            istore 13 /* outSize */
        start local 13 // int outSize
        57: .line 807
            iconst_0
            istore 14 /* total */
        start local 14 // int total
        58: .line 808
            iconst_0
            istore 15 /* resized */
        start local 15 // boolean resized
        59: .line 811
      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 */
            ifne 60
            aload 10 /* inArray */
            arraylength
            goto 61
      StackMap locals:
      StackMap stack: int
        60: iload 13 /* outSize */
      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: int int
        61: invokestatic java.lang.Math.min:(II)I
        62: .line 810
            istore 16 /* chunk */
        start local 16 // int chunk
        63: .line 812
            iload 8 /* a1 */
            ifne 66
            iload 15 /* resized */
            ifne 66
            iload 16 /* chunk */
            ifle 66
        64: .line 813
            aload 1 /* input */
            aload 10 /* inArray */
            iconst_0
            iload 16 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        65: .line 814
            iconst_0
            istore 11 /* inOfs */
        66: .line 818
      StackMap locals: int
      StackMap stack:
            iload 3 /* isUpdate */
            ifne 67
            iload 6 /* inLen */
            iload 16 /* chunk */
            if_icmpeq 69
        67: .line 819
      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
        68: .line 820
            goto 70
        end local 17 // int n
        69: .line 821
      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
        70: .line 823
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 15 /* resized */
        71: .line 824
            iload 11 /* inOfs */
            iload 16 /* chunk */
            iadd
            istore 11 /* inOfs */
        72: .line 825
            iload 6 /* inLen */
            iload 16 /* chunk */
            isub
            istore 6 /* inLen */
        73: .line 826
            iload 17 /* n */
            ifle 87
        74: .line 827
            aload 2 /* output */
            aload 12 /* outArray */
            iconst_0
            iload 17 /* n */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
        75: .line 828
            iload 14 /* total */
            iload 17 /* n */
            iadd
            istore 14 /* total */
        end local 17 // int n
        76: .line 830
            goto 87
      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
        77: astore 17 /* e */
        start local 17 // javax.crypto.ShortBufferException e
        78: .line 831
            iload 15 /* resized */
            ifeq 84
        79: .line 834
            new java.security.ProviderException
            dup
        80: .line 835
            ldc "Could not determine buffer size"
        81: .line 834
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
        82: .line 835
            aload 17 /* e */
            invokevirtual java.security.ProviderException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        83: .line 834
            checkcast java.security.ProviderException
            athrow
        84: .line 838
      StackMap locals: javax.crypto.ShortBufferException
      StackMap stack:
            iconst_1
            istore 15 /* resized */
        85: .line 839
            aload 0 /* this */
            iload 16 /* chunk */
            invokevirtual javax.crypto.CipherSpi.engineGetOutputSize:(I)I
            istore 13 /* outSize */
        86: .line 840
            iload 13 /* outSize */
            newarray 8
            astore 12 /* outArray */
        end local 17 // javax.crypto.ShortBufferException e
        end local 16 // int chunk
        87: .line 842
      StackMap locals:
      StackMap stack:
            iload 6 /* inLen */
        88: .line 809
            ifgt 59
        89: .line 843
            iload 8 /* a1 */
            ifeq 91
        90: .line 844
            aload 1 /* input */
            iload 5 /* inLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        91: .line 846
      StackMap locals:
      StackMap stack:
            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   92     0          this  Ljavax/crypto/CipherSpi;
            0   92     1         input  Ljava/nio/ByteBuffer;
            0   92     2        output  Ljava/nio/ByteBuffer;
            0   92     3      isUpdate  Z
            5   92     4         inPos  I
            6   92     5       inLimit  I
            7   92     6         inLen  I
           10   92     7  outLenNeeded  I
           15   92     8            a1  Z
           16   92     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   49    10        outPos  I
           32   49    11      outArray  [B
           33   49    12        outOfs  I
           34   49    13       inArray  [B
           35   49    14         total  I
           36   45    15         chunk  I
           40   41    16             n  I
           42   45    16             n  I
           51   53    10       inArray  [B
           54   92    10       inArray  [B
           52   53    11         inOfs  I
           55   92    11         inOfs  I
           56   92    12      outArray  [B
           57   92    13       outSize  I
           58   92    14         total  I
           59   92    15       resized  Z
           63   87    16         chunk  I
           68   69    17             n  I
           70   76    17             n  I
           78   87    17             e  Ljavax/crypto/ShortBufferException;
      Exception table:
        from    to  target  type
          66    76      77  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 877
            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 915
            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 933
            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   

  protected void engineUpdateAAD(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // byte[] src
        start local 2 // int offset
        start local 3 // int len
         0: .line 961
            new java.lang.UnsupportedOperationException
            dup
         1: .line 962
            ldc "The underlying Cipher implementation does not support this method"
         2: .line 961
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] src
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljavax/crypto/CipherSpi;
            0    3     1     src  [B
            0    3     2  offset  I
            0    3     3     len  I
    MethodParameters:
        Name  Flags
      src     
      offset  
      len     

  protected void engineUpdateAAD(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // javax.crypto.CipherSpi this
        start local 1 // java.nio.ByteBuffer src
         0: .line 994
            new java.lang.UnsupportedOperationException
            dup
         1: .line 995
            ldc "The underlying Cipher implementation does not support this method"
         2: .line 994
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.nio.ByteBuffer src
        end local 0 // javax.crypto.CipherSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljavax/crypto/CipherSpi;
            0    3     1   src  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      src   
}
SourceFile: "CipherSpi.java"