abstract class com.sun.crypto.provider.AESCipher extends javax.crypto.CipherSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.crypto.provider.AESCipher
  super_class: javax.crypto.CipherSpi
{
  private com.sun.crypto.provider.CipherCore core;
    descriptor: Lcom/sun/crypto/provider/CipherCore;
    flags: (0x0002) ACC_PRIVATE

  private final int fixedKeySize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean updateCalled;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static final void checkKeySize(java.security.Key, int);
    descriptor: (Ljava/security/Key;I)V
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.security.Key key
        start local 1 // int fixedKeySize
         0: .line 150
            iload 1 /* fixedKeySize */
            iconst_m1
            if_icmpeq 10
         1: .line 151
            aload 0 /* key */
            ifnonnull 3
         2: .line 152
            new java.security.InvalidKeyException
            dup
            ldc "The key must not be null"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            astore 2 /* value */
        start local 2 // byte[] value
         4: .line 155
            aload 2 /* value */
            ifnonnull 6
         5: .line 156
            new java.security.InvalidKeyException
            dup
            ldc "Key encoding must not be null"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 157
      StackMap locals: byte[]
      StackMap stack:
            aload 2 /* value */
            arraylength
            iload 1 /* fixedKeySize */
            if_icmpeq 10
         7: .line 158
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "The key must be "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 159
            iload 1 /* fixedKeySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 158
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // byte[] value
        10: .line 162
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int fixedKeySize
        end local 0 // java.security.Key key
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0           key  Ljava/security/Key;
            0   11     1  fixedKeySize  I
            4   10     2         value  [B
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
              Name  Flags
      key           
      fixedKeySize  

  protected void <init>(int);
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // int keySize
         0: .line 184
            aload 0 /* this */
            invokespecial javax.crypto.CipherSpi.<init>:()V
         1: .line 167
            aload 0 /* this */
            aconst_null
            putfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
         2: .line 185
            aload 0 /* this */
            new com.sun.crypto.provider.CipherCore
            dup
            new com.sun.crypto.provider.AESCrypt
            dup
            invokespecial com.sun.crypto.provider.AESCrypt.<init>:()V
            bipush 16
            invokespecial com.sun.crypto.provider.CipherCore.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;I)V
            putfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
         3: .line 186
            aload 0 /* this */
            iload 1 /* keySize */
            putfield com.sun.crypto.provider.AESCipher.fixedKeySize:I
         4: .line 187
            return
        end local 1 // int keySize
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/sun/crypto/provider/AESCipher;
            0    5     1  keySize  I
    MethodParameters:
         Name  Flags
      keySize  

  protected void engineSetMode(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // java.lang.String mode
         0: .line 199
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* mode */
            invokevirtual com.sun.crypto.provider.CipherCore.setMode:(Ljava/lang/String;)V
         1: .line 200
            return
        end local 1 // java.lang.String mode
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/crypto/provider/AESCipher;
            0    2     1  mode  Ljava/lang/String;
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
      Name  Flags
      mode  

  protected void engineSetPadding(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // java.lang.String paddingScheme
         0: .line 212
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* paddingScheme */
            invokevirtual com.sun.crypto.provider.CipherCore.setPadding:(Ljava/lang/String;)V
         1: .line 213
            return
        end local 1 // java.lang.String paddingScheme
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/sun/crypto/provider/AESCipher;
            0    2     1  paddingScheme  Ljava/lang/String;
    Exceptions:
      throws javax.crypto.NoSuchPaddingException
    MethodParameters:
               Name  Flags
      paddingScheme  

  protected int engineGetBlockSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.AESCipher this
         0: .line 222
            bipush 16
            ireturn
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/AESCipher;

  protected int engineGetOutputSize(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // int inputLen
         0: .line 243
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.getOutputSize:(I)I
            ireturn
        end local 1 // int inputLen
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/sun/crypto/provider/AESCipher;
            0    1     1  inputLen  I
    MethodParameters:
          Name  Flags
      inputLen  

  protected byte[] engineGetIV();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.AESCipher this
         0: .line 259
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            invokevirtual com.sun.crypto.provider.CipherCore.getIV:()[B
            areturn
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/AESCipher;

  protected java.security.AlgorithmParameters engineGetParameters();
    descriptor: ()Ljava/security/AlgorithmParameters;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.AESCipher this
         0: .line 276
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            ldc "AES"
            invokevirtual com.sun.crypto.provider.CipherCore.getParameters:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            areturn
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/AESCipher;

  protected void engineInit(int, java.security.Key, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.SecureRandom random
         0: .line 311
            aload 2 /* key */
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.fixedKeySize:I
            invokestatic com.sun.crypto.provider.AESCipher.checkKeySize:(Ljava/security/Key;I)V
         1: .line 312
            aload 0 /* this */
            iconst_0
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         2: .line 313
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 2 /* key */
            aload 3 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/SecureRandom;)V
         3: .line 314
            return
        end local 3 // java.security.SecureRandom random
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/crypto/provider/AESCipher;
            0    4     1  opmode  I
            0    4     2     key  Ljava/security/Key;
            0    4     3  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      random  

  protected 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: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.spec.AlgorithmParameterSpec params
        start local 4 // java.security.SecureRandom random
         0: .line 344
            aload 2 /* key */
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.fixedKeySize:I
            invokestatic com.sun.crypto.provider.AESCipher.checkKeySize:(Ljava/security/Key;I)V
         1: .line 345
            aload 0 /* this */
            iconst_0
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         2: .line 346
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 2 /* key */
            aload 3 /* params */
            aload 4 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         3: .line 347
            return
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.spec.AlgorithmParameterSpec params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/crypto/provider/AESCipher;
            0    4     1  opmode  I
            0    4     2     key  Ljava/security/Key;
            0    4     3  params  Ljava/security/spec/AlgorithmParameterSpec;
            0    4     4  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.AlgorithmParameters params
        start local 4 // java.security.SecureRandom random
         0: .line 353
            aload 2 /* key */
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.fixedKeySize:I
            invokestatic com.sun.crypto.provider.AESCipher.checkKeySize:(Ljava/security/Key;I)V
         1: .line 354
            aload 0 /* this */
            iconst_0
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         2: .line 355
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 2 /* key */
            aload 3 /* params */
            aload 4 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
         3: .line 356
            return
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.AlgorithmParameters params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/crypto/provider/AESCipher;
            0    4     1  opmode  I
            0    4     2     key  Ljava/security/Key;
            0    4     3  params  Ljava/security/AlgorithmParameters;
            0    4     4  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected byte[] engineUpdate(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 379
            aload 0 /* this */
            iconst_1
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         1: .line 380
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.update:([BII)[B
            areturn
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/sun/crypto/provider/AESCipher;
            0    2     1        input  [B
            0    2     2  inputOffset  I
            0    2     3     inputLen  I
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineUpdate(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 409
            aload 0 /* this */
            iconst_1
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         1: .line 410
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 4 /* output */
         2: .line 411
            iload 5 /* outputOffset */
         3: .line 410
            invokevirtual com.sun.crypto.provider.CipherCore.update:([BII[BI)I
            ireturn
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/sun/crypto/provider/AESCipher;
            0    4     1         input  [B
            0    4     2   inputOffset  I
            0    4     3      inputLen  I
            0    4     4        output  [B
            0    4     5  outputOffset  I
    Exceptions:
      throws javax.crypto.ShortBufferException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected byte[] engineDoFinal(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 446
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII)[B
            astore 4 /* out */
        start local 4 // byte[] out
         1: .line 447
            aload 0 /* this */
            iconst_0
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         2: .line 448
            aload 4 /* out */
            areturn
        end local 4 // byte[] out
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lcom/sun/crypto/provider/AESCipher;
            0    3     1        input  [B
            0    3     2  inputOffset  I
            0    3     3     inputLen  I
            1    3     4          out  [B
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineDoFinal(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 491
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 4 /* output */
         1: .line 492
            iload 5 /* outputOffset */
         2: .line 491
            invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII[BI)I
            istore 6 /* outLen */
        start local 6 // int outLen
         3: .line 493
            aload 0 /* this */
            iconst_0
            putfield com.sun.crypto.provider.AESCipher.updateCalled:Z
         4: .line 494
            iload 6 /* outLen */
            ireturn
        end local 6 // int outLen
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lcom/sun/crypto/provider/AESCipher;
            0    5     1         input  [B
            0    5     2   inputOffset  I
            0    5     3      inputLen  I
            0    5     4        output  [B
            0    5     5  outputOffset  I
            3    5     6        outLen  I
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException, javax.crypto.BadPaddingException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected int engineGetKeySize(java.security.Key);
    descriptor: (Ljava/security/Key;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // java.security.Key key
         0: .line 507
            aload 1 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
         1: .line 508
            aload 2 /* encoded */
            arraylength
            invokestatic com.sun.crypto.provider.AESCrypt.isKeySizeValid:(I)Z
            ifne 5
         2: .line 509
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid AES key length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 510
            aload 2 /* encoded */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 509
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 512
      StackMap locals: byte[]
      StackMap stack:
            aload 2 /* encoded */
            arraylength
            bipush 8
            invokestatic java.lang.Math.multiplyExact:(II)I
            ireturn
        end local 2 // byte[] encoded
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/sun/crypto/provider/AESCipher;
            0    6     1      key  Ljava/security/Key;
            1    6     2  encoded  [B
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  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 // com.sun.crypto.provider.AESCipher this
        start local 1 // java.security.Key key
         0: .line 533
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* key */
            invokevirtual com.sun.crypto.provider.CipherCore.wrap:(Ljava/security/Key;)[B
            areturn
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/AESCipher;
            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=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // byte[] wrappedKey
        start local 2 // java.lang.String wrappedKeyAlgorithm
        start local 3 // int wrappedKeyType
         0: .line 561
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* wrappedKey */
            aload 2 /* wrappedKeyAlgorithm */
         1: .line 562
            iload 3 /* wrappedKeyType */
         2: .line 561
            invokevirtual com.sun.crypto.provider.CipherCore.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
            areturn
        end local 3 // int wrappedKeyType
        end local 2 // java.lang.String wrappedKeyAlgorithm
        end local 1 // byte[] wrappedKey
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lcom/sun/crypto/provider/AESCipher;
            0    3     1           wrappedKey  [B
            0    3     2  wrappedKeyAlgorithm  Ljava/lang/String;
            0    3     3       wrappedKeyType  I
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      wrappedKey           
      wrappedKeyAlgorithm  
      wrappedKeyType       

  protected void engineUpdateAAD(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // byte[] src
        start local 2 // int offset
        start local 3 // int len
         0: .line 591
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            invokevirtual com.sun.crypto.provider.CipherCore.getMode:()I
            bipush 7
            if_icmpne 2
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.updateCalled:Z
            ifeq 2
         1: .line 592
            new java.lang.IllegalStateException
            dup
            ldc "AAD must be supplied before encryption/decryption starts"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 594
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* src */
            iload 2 /* offset */
            iload 3 /* len */
            invokevirtual com.sun.crypto.provider.CipherCore.updateAAD:([BII)V
         3: .line 595
            return
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] src
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/crypto/provider/AESCipher;
            0    4     1     src  [B
            0    4     2  offset  I
            0    4     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=4, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.AESCipher this
        start local 1 // java.nio.ByteBuffer src
         0: .line 626
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            invokevirtual com.sun.crypto.provider.CipherCore.getMode:()I
            bipush 7
            if_icmpne 2
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.updateCalled:Z
            ifeq 2
         1: .line 627
            new java.lang.IllegalStateException
            dup
            ldc "AAD must be supplied before encryption/decryption starts"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 629
      StackMap locals:
      StackMap stack:
            aload 1 /* src */
            ifnull 13
         3: .line 630
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.limit:()I
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.position:()I
            isub
            istore 2 /* aadLen */
        start local 2 // int aadLen
         4: .line 631
            iload 2 /* aadLen */
            ifle 13
         5: .line 632
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 10
         6: .line 633
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.position:()I
            invokestatic java.lang.Math.addExact:(II)I
            istore 3 /* aadOfs */
        start local 3 // int aadOfs
         7: .line 634
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iload 3 /* aadOfs */
            iload 2 /* aadLen */
            invokevirtual com.sun.crypto.provider.CipherCore.updateAAD:([BII)V
         8: .line 635
            aload 1 /* src */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
        end local 3 // int aadOfs
         9: .line 636
            goto 13
        10: .line 637
      StackMap locals: int
      StackMap stack:
            iload 2 /* aadLen */
            newarray 8
            astore 3 /* aad */
        start local 3 // byte[] aad
        11: .line 638
            aload 1 /* src */
            aload 3 /* aad */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
        12: .line 639
            aload 0 /* this */
            getfield com.sun.crypto.provider.AESCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 3 /* aad */
            iconst_0
            iload 2 /* aadLen */
            invokevirtual com.sun.crypto.provider.CipherCore.updateAAD:([BII)V
        end local 3 // byte[] aad
        end local 2 // int aadLen
        13: .line 643
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.ByteBuffer src
        end local 0 // com.sun.crypto.provider.AESCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lcom/sun/crypto/provider/AESCipher;
            0   14     1     src  Ljava/nio/ByteBuffer;
            4   13     2  aadLen  I
            7    9     3  aadOfs  I
           11   13     3     aad  [B
    MethodParameters:
      Name  Flags
      src   
}
SourceFile: "AESCipher.java"
NestMembers:
  com.sun.crypto.provider.AESCipher$AES128_CBC_NoPadding  com.sun.crypto.provider.AESCipher$AES128_CFB_NoPadding  com.sun.crypto.provider.AESCipher$AES128_ECB_NoPadding  com.sun.crypto.provider.AESCipher$AES128_GCM_NoPadding  com.sun.crypto.provider.AESCipher$AES128_OFB_NoPadding  com.sun.crypto.provider.AESCipher$AES192_CBC_NoPadding  com.sun.crypto.provider.AESCipher$AES192_CFB_NoPadding  com.sun.crypto.provider.AESCipher$AES192_ECB_NoPadding  com.sun.crypto.provider.AESCipher$AES192_GCM_NoPadding  com.sun.crypto.provider.AESCipher$AES192_OFB_NoPadding  com.sun.crypto.provider.AESCipher$AES256_CBC_NoPadding  com.sun.crypto.provider.AESCipher$AES256_CFB_NoPadding  com.sun.crypto.provider.AESCipher$AES256_ECB_NoPadding  com.sun.crypto.provider.AESCipher$AES256_GCM_NoPadding  com.sun.crypto.provider.AESCipher$AES256_OFB_NoPadding  com.sun.crypto.provider.AESCipher$General  com.sun.crypto.provider.AESCipher$OidImpl
InnerClasses:
  public final AES128_CBC_NoPadding = com.sun.crypto.provider.AESCipher$AES128_CBC_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES128_CFB_NoPadding = com.sun.crypto.provider.AESCipher$AES128_CFB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES128_ECB_NoPadding = com.sun.crypto.provider.AESCipher$AES128_ECB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES128_GCM_NoPadding = com.sun.crypto.provider.AESCipher$AES128_GCM_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES128_OFB_NoPadding = com.sun.crypto.provider.AESCipher$AES128_OFB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES192_CBC_NoPadding = com.sun.crypto.provider.AESCipher$AES192_CBC_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES192_CFB_NoPadding = com.sun.crypto.provider.AESCipher$AES192_CFB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES192_ECB_NoPadding = com.sun.crypto.provider.AESCipher$AES192_ECB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES192_GCM_NoPadding = com.sun.crypto.provider.AESCipher$AES192_GCM_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES192_OFB_NoPadding = com.sun.crypto.provider.AESCipher$AES192_OFB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES256_CBC_NoPadding = com.sun.crypto.provider.AESCipher$AES256_CBC_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES256_CFB_NoPadding = com.sun.crypto.provider.AESCipher$AES256_CFB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES256_ECB_NoPadding = com.sun.crypto.provider.AESCipher$AES256_ECB_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES256_GCM_NoPadding = com.sun.crypto.provider.AESCipher$AES256_GCM_NoPadding of com.sun.crypto.provider.AESCipher
  public final AES256_OFB_NoPadding = com.sun.crypto.provider.AESCipher$AES256_OFB_NoPadding of com.sun.crypto.provider.AESCipher
  public final General = com.sun.crypto.provider.AESCipher$General of com.sun.crypto.provider.AESCipher
  abstract OidImpl = com.sun.crypto.provider.AESCipher$OidImpl of com.sun.crypto.provider.AESCipher