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 555
            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 556
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            pop
         3: .line 558
            new java.security.ProviderException
            dup
            ldc "Internal error in update()"
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 559
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            pop
         5: .line 561
            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 730
            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 737
            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 747
            aload 1 /* input */
            ifnull 1
            aload 2 /* output */
            ifnonnull 4
         1: .line 748
      StackMap locals:
      StackMap stack:
            new java.lang.NullPointerException
            dup
         2: .line 749
            ldc "Input and output buffers must not be null"
         3: .line 748
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 751
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* inPos */
        start local 4 // int inPos
         5: .line 752
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* inLimit */
        start local 5 // int inLimit
         6: .line 753
            iload 5 /* inLimit */
            iload 4 /* inPos */
            isub
            istore 6 /* inLen */
        start local 6 // int inLen
         7: .line 754
            iload 3 /* isUpdate */
            ifeq 9
            iload 6 /* inLen */
            ifne 9
         8: .line 755
            iconst_0
            ireturn
         9: .line 757
      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 758
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 7 /* outLenNeeded */
            if_icmpge 14
        11: .line 759
            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 760
            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 759
            invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 763
      StackMap locals: int
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            istore 8 /* a1 */
        start local 8 // boolean a1
        15: .line 764
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            istore 9 /* a2 */
        start local 9 // boolean a2
        16: .line 766
            iload 8 /* a1 */
            ifeq 29
            iload 9 /* a2 */
            ifeq 29
        17: .line 767
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        18: .line 768
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 4 /* inPos */
            iadd
            istore 11 /* inOfs */
        start local 11 // int inOfs
        19: .line 769
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 12 /* outArray */
        start local 12 // byte[] outArray
        20: .line 770
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 13 /* outPos */
        start local 13 // int outPos
        21: .line 771
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 13 /* outPos */
            iadd
            istore 14 /* outOfs */
        start local 14 // int outOfs
        22: .line 773
            iload 3 /* isUpdate */
            ifeq 25
        23: .line 774
            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 775
            goto 26
        end local 15 // int n
        25: .line 776
      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 778
      StackMap locals: int
      StackMap stack:
            aload 1 /* input */
            iload 5 /* inLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        27: .line 779
            aload 2 /* output */
            iload 13 /* outPos */
            iload 15 /* n */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        28: .line 780
            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 781
      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 782
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 10 /* outPos */
        start local 10 // int outPos
        31: .line 783
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 11 /* outArray */
        start local 11 // byte[] outArray
        32: .line 784
            aload 2 /* output */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 10 /* outPos */
            iadd
            istore 12 /* outOfs */
        start local 12 // int outOfs
        33: .line 785
            iload 6 /* inLen */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 13 /* inArray */
        start local 13 // byte[] inArray
        34: .line 786
            iconst_0
            istore 14 /* total */
        start local 14 // int total
        35: .line 788
      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 789
            iload 15 /* chunk */
            ifle 38
        37: .line 790
            aload 1 /* input */
            aload 13 /* inArray */
            iconst_0
            iload 15 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        38: .line 793
      StackMap locals: int
      StackMap stack:
            iload 3 /* isUpdate */
            ifne 39
            iload 6 /* inLen */
            iload 15 /* chunk */
            if_icmpeq 41
        39: .line 794
      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 795
            goto 42
        end local 16 // int n
        41: .line 796
      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 798
      StackMap locals: int
      StackMap stack:
            iload 14 /* total */
            iload 16 /* n */
            iadd
            istore 14 /* total */
        43: .line 799
            iload 12 /* outOfs */
            iload 16 /* n */
            iadd
            istore 12 /* outOfs */
        44: .line 800
            iload 6 /* inLen */
            iload 15 /* chunk */
            isub
            istore 6 /* inLen */
        end local 16 // int n
        end local 15 // int chunk
        45: .line 801
            iload 6 /* inLen */
        46: .line 787
            ifgt 35
        47: .line 802
            aload 2 /* output */
            iload 10 /* outPos */
            iload 14 /* total */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        48: .line 803
            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 807
      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 808
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* inArray */
        start local 10 // byte[] inArray
        51: .line 809
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iload 4 /* inPos */
            iadd
            istore 11 /* inOfs */
        start local 11 // int inOfs
        52: .line 810
            goto 55
        end local 11 // int inOfs
        end local 10 // byte[] inArray
        53: .line 811
      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 812
            iconst_0
            istore 11 /* inOfs */
        start local 11 // int inOfs
        55: .line 814
      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 815
            aload 12 /* outArray */
            arraylength
            istore 13 /* outSize */
        start local 13 // int outSize
        57: .line 816
            iconst_0
            istore 14 /* total */
        start local 14 // int total
        58: .line 817
            iconst_0
            istore 15 /* resized */
        start local 15 // boolean resized
        59: .line 820
      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 819
            istore 16 /* chunk */
        start local 16 // int chunk
        63: .line 821
            iload 8 /* a1 */
            ifne 66
            iload 15 /* resized */
            ifne 66
            iload 16 /* chunk */
            ifle 66
        64: .line 822
            aload 1 /* input */
            aload 10 /* inArray */
            iconst_0
            iload 16 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        65: .line 823
            iconst_0
            istore 11 /* inOfs */
        66: .line 827
      StackMap locals: int
      StackMap stack:
            iload 3 /* isUpdate */
            ifne 67
            iload 6 /* inLen */
            iload 16 /* chunk */
            if_icmpeq 69
        67: .line 828
      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 829
            goto 70
        end local 17 // int n
        69: .line 830
      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 832
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 15 /* resized */
        71: .line 833
            iload 11 /* inOfs */
            iload 16 /* chunk */
            iadd
            istore 11 /* inOfs */
        72: .line 834
            iload 6 /* inLen */
            iload 16 /* chunk */
            isub
            istore 6 /* inLen */
        73: .line 835
            iload 17 /* n */
            ifle 87
        74: .line 836
            aload 2 /* output */
            aload 12 /* outArray */
            iconst_0
            iload 17 /* n */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
        75: .line 837
            iload 14 /* total */
            iload 17 /* n */
            iadd
            istore 14 /* total */
        end local 17 // int n
        76: .line 839
            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 840
            iload 15 /* resized */
            ifeq 84
        79: .line 843
            new java.security.ProviderException
            dup
        80: .line 844
            ldc "Could not determine buffer size"
        81: .line 843
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
        82: .line 844
            aload 17 /* e */
            invokevirtual java.security.ProviderException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        83: .line 843
            checkcast java.security.ProviderException
            athrow
        84: .line 847
      StackMap locals: javax.crypto.ShortBufferException
      StackMap stack:
            iconst_1
            istore 15 /* resized */
        85: .line 848
            aload 0 /* this */
            iload 16 /* chunk */
            invokevirtual javax.crypto.CipherSpi.engineGetOutputSize:(I)I
            istore 13 /* outSize */
        86: .line 849
            iload 13 /* outSize */
            newarray 8
            astore 12 /* outArray */
        end local 17 // javax.crypto.ShortBufferException e
        end local 16 // int chunk
        87: .line 851
      StackMap locals:
      StackMap stack:
            iload 6 /* inLen */
        88: .line 818
            ifgt 59
        89: .line 852
            iload 8 /* a1 */
            ifeq 91
        90: .line 853
            aload 1 /* input */
            iload 5 /* inLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        91: .line 855
      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 888
            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 928
            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 946
            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 974
            new java.lang.UnsupportedOperationException
            dup
         1: .line 975
            ldc "The underlying Cipher implementation does not support this method"
         2: .line 974
            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 1007
            new java.lang.UnsupportedOperationException
            dup
         1: .line 1008
            ldc "The underlying Cipher implementation does not support this method"
         2: .line 1007
            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"