public class sun.security.krb5.internal.crypto.dk.AesDkCrypto extends sun.security.krb5.internal.crypto.dk.DkCrypto
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.krb5.internal.crypto.dk.AesDkCrypto
  super_class: sun.security.krb5.internal.crypto.dk.DkCrypto
{
  private static final boolean debug;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int BLOCK_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  private static final int DEFAULT_ITERATION_COUNT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4096

  private static final byte[] ZERO_IV;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int hashSize;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 12

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 91
            bipush 16
            newarray 8
            putstatic sun.security.krb5.internal.crypto.dk.AesDkCrypto.ZERO_IV:[B
         1: .line 93
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // int length
         0: .line 96
            aload 0 /* this */
            invokespecial sun.security.krb5.internal.crypto.dk.DkCrypto.<init>:()V
         1: .line 97
            aload 0 /* this */
            iload 1 /* length */
            putfield sun.security.krb5.internal.crypto.dk.AesDkCrypto.keyLength:I
         2: .line 98
            return
        end local 1 // int length
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    3     1  length  I
    MethodParameters:
        Name  Flags
      length  

  protected int getKeySeedLength();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
         0: .line 101
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesDkCrypto.keyLength:I
            ireturn
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;

  public byte[] stringToKey(char[], java.lang.String, byte[]);
    descriptor: ([CLjava/lang/String;[B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // char[] password
        start local 2 // java.lang.String salt
        start local 3 // byte[] s2kparams
         0: .line 107
            aconst_null
            astore 4 /* saltUtf8 */
        start local 4 // byte[] saltUtf8
         1: .line 109
            aload 2 /* salt */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 4 /* saltUtf8 */
         2: .line 110
            aload 0 /* this */
            aload 1 /* password */
            aload 4 /* saltUtf8 */
            aload 3 /* s2kparams */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.stringToKey:([C[B[B)[B
            astore 6
         3: .line 114
            aload 4 /* saltUtf8 */
            ifnull 5
         4: .line 115
            aload 4 /* saltUtf8 */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
         5: .line 110
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto char[] java.lang.String byte[] byte[] top byte[]
      StackMap stack:
            aload 6
            areturn
         6: .line 111
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto char[] java.lang.String byte[] byte[]
      StackMap stack: java.lang.Exception
            pop
         7: .line 114
            aload 4 /* saltUtf8 */
            ifnull 9
         8: .line 115
            aload 4 /* saltUtf8 */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
         9: .line 112
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        10: .line 113
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        11: .line 114
            aload 4 /* saltUtf8 */
            ifnull 13
        12: .line 115
            aload 4 /* saltUtf8 */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        13: .line 117
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        end local 4 // byte[] saltUtf8
        end local 3 // byte[] s2kparams
        end local 2 // java.lang.String salt
        end local 1 // char[] password
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0   14     1   password  [C
            0   14     2       salt  Ljava/lang/String;
            0   14     3  s2kparams  [B
            1   14     4   saltUtf8  [B
      Exception table:
        from    to  target  type
           1     3       6  Class java.lang.Exception
           1     3      10  any
           6     7      10  any
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
           Name  Flags
      password   
      salt       
      s2kparams  

  private byte[] stringToKey(char[], byte[], byte[]);
    descriptor: ([C[B[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // char[] secret
        start local 2 // byte[] salt
        start local 3 // byte[] params
         0: .line 123
            sipush 4096
            istore 4 /* iter_count */
        start local 4 // int iter_count
         1: .line 124
            aload 3 /* params */
            ifnull 5
         2: .line 125
            aload 3 /* params */
            arraylength
            iconst_4
            if_icmpeq 4
         3: .line 126
            new java.lang.RuntimeException
            dup
            ldc "Invalid parameter to stringToKey"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 128
      StackMap locals: int
      StackMap stack:
            aload 3 /* params */
            iconst_0
            iconst_4
            invokestatic sun.security.krb5.internal.crypto.dk.AesDkCrypto.readBigEndian:([BII)I
            istore 4 /* iter_count */
         5: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* secret */
            aload 2 /* salt */
            iload 4 /* iter_count */
         6: .line 132
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getKeySeedLength:()I
         7: .line 131
            invokestatic sun.security.krb5.internal.crypto.dk.AesDkCrypto.PBKDF2:([C[BII)[B
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.randomToKey:([B)[B
            astore 5 /* tmpKey */
        start local 5 // byte[] tmpKey
         8: .line 133
            aload 0 /* this */
            aload 5 /* tmpKey */
            getstatic sun.security.krb5.internal.crypto.dk.AesDkCrypto.KERBEROS_CONSTANT:[B
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.dk:([B[B)[B
            astore 6 /* result */
        start local 6 // byte[] result
         9: .line 134
            aload 6 /* result */
            areturn
        end local 6 // byte[] result
        end local 5 // byte[] tmpKey
        end local 4 // int iter_count
        end local 3 // byte[] params
        end local 2 // byte[] salt
        end local 1 // char[] secret
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0   10     1      secret  [C
            0   10     2        salt  [B
            0   10     3      params  [B
            1   10     4  iter_count  I
            8   10     5      tmpKey  [B
            9   10     6      result  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
        Name  Flags
      secret  
      salt    
      params  

  protected byte[] randomToKey(byte[]);
    descriptor: ([B)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] in
         0: .line 139
            aload 1 /* in */
            areturn
        end local 1 // byte[] in
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    1     1    in  [B
    MethodParameters:
      Name  Flags
      in    

  protected javax.crypto.Cipher getCipher(byte[], byte[], int);
    descriptor: ([B[BI)Ljavax/crypto/Cipher;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] ivec
        start local 3 // int mode
         0: .line 146
            aload 2 /* ivec */
            ifnonnull 2
         1: .line 147
            getstatic sun.security.krb5.internal.crypto.dk.AesDkCrypto.ZERO_IV:[B
            astore 2 /* ivec */
         2: .line 149
      StackMap locals:
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 4 /* secretKey */
        start local 4 // javax.crypto.spec.SecretKeySpec secretKey
         3: .line 150
            ldc "AES/CBC/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 5 /* cipher */
        start local 5 // javax.crypto.Cipher cipher
         4: .line 151
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 2 /* ivec */
            iconst_0
            aload 2 /* ivec */
            arraylength
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 6 /* encIv */
        start local 6 // javax.crypto.spec.IvParameterSpec encIv
         5: .line 152
            aload 5 /* cipher */
            iload 3 /* mode */
            aload 4 /* secretKey */
            aload 6 /* encIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
         6: .line 153
            aload 5 /* cipher */
            areturn
        end local 6 // javax.crypto.spec.IvParameterSpec encIv
        end local 5 // javax.crypto.Cipher cipher
        end local 4 // javax.crypto.spec.SecretKeySpec secretKey
        end local 3 // int mode
        end local 2 // byte[] ivec
        end local 1 // byte[] key
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    7     1        key  [B
            0    7     2       ivec  [B
            0    7     3       mode  I
            3    7     4  secretKey  Ljavax/crypto/spec/SecretKeySpec;
            4    7     5     cipher  Ljavax/crypto/Cipher;
            5    7     6      encIv  Ljavax/crypto/spec/IvParameterSpec;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      key   
      ivec  
      mode  

  public int getChecksumLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
         0: .line 158
            bipush 12
            ireturn
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;

  protected byte[] getHmac(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] msg
         0: .line 167
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            ldc "HMAC"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 3 /* keyKi */
        start local 3 // javax.crypto.SecretKey keyKi
         1: .line 168
            ldc "HmacSHA1"
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 4 /* m */
        start local 4 // javax.crypto.Mac m
         2: .line 169
            aload 4 /* m */
            aload 3 /* keyKi */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
         3: .line 172
            aload 4 /* m */
            aload 2 /* msg */
            invokevirtual javax.crypto.Mac.doFinal:([B)[B
            astore 5 /* hash */
        start local 5 // byte[] hash
         4: .line 175
            bipush 12
            newarray 8
            astore 6 /* output */
        start local 6 // byte[] output
         5: .line 176
            aload 5 /* hash */
            iconst_0
            aload 6 /* output */
            iconst_0
            bipush 12
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 177
            aload 6 /* output */
            areturn
        end local 6 // byte[] output
        end local 5 // byte[] hash
        end local 4 // javax.crypto.Mac m
        end local 3 // javax.crypto.SecretKey keyKi
        end local 2 // byte[] msg
        end local 1 // byte[] key
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    7     1     key  [B
            0    7     2     msg  [B
            1    7     3   keyKi  Ljavax/crypto/SecretKey;
            2    7     4       m  Ljavax/crypto/Mac;
            4    7     5    hash  [B
            5    7     6  output  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      key   
      msg   

  public byte[] calculateChecksum(byte[], int, byte[], int, int);
    descriptor: ([BI[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=6
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] input
        start local 4 // int start
        start local 5 // int len
         0: .line 186
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 187
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid key usage number: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 188
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 187
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 192
      StackMap locals:
      StackMap stack:
            iconst_5
            newarray 8
            astore 6 /* constant */
        start local 6 // byte[] constant
         5: .line 193
            aload 6 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         6: .line 194
            aload 6 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         7: .line 195
            aload 6 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         8: .line 196
            aload 6 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
         9: .line 198
            aload 6 /* constant */
            iconst_4
            bipush -103
            bastore
        10: .line 200
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 6 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.dk:([B[B)[B
            astore 7 /* Kc */
        start local 7 // byte[] Kc
        11: .line 212
            aload 0 /* this */
            aload 7 /* Kc */
            aload 3 /* input */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getHmac:([B[B)[B
            astore 8 /* hmac */
        start local 8 // byte[] hmac
        12: .line 216
            aload 8 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getChecksumLength:()I
            if_icmpne 16
        13: .line 217
            aload 8 /* hmac */
            astore 11
        14: .line 227
            aload 7 /* Kc */
            iconst_0
            aload 7 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        15: .line 217
            aload 11
            areturn
        16: .line 218
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            aload 8 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getChecksumLength:()I
            if_icmple 22
        17: .line 219
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getChecksumLength:()I
            newarray 8
            astore 9 /* buf */
        start local 9 // byte[] buf
        18: .line 220
            aload 8 /* hmac */
            iconst_0
            aload 9 /* buf */
            iconst_0
            aload 9 /* buf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        19: .line 221
            aload 9 /* buf */
            astore 11
        20: .line 227
            aload 7 /* Kc */
            iconst_0
            aload 7 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        21: .line 221
            aload 11
            areturn
        end local 9 // byte[] buf
        22: .line 223
      StackMap locals:
      StackMap stack:
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "checksum size too short: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        23: .line 224
            aload 8 /* hmac */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "; expecting : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getChecksumLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 223
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // byte[] hmac
        25: .line 226
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 10
        26: .line 227
            aload 7 /* Kc */
            iconst_0
            aload 7 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        27: .line 228
            aload 10
            athrow
        end local 7 // byte[] Kc
        end local 6 // byte[] constant
        end local 5 // int len
        end local 4 // int start
        end local 3 // byte[] input
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0   28     1   baseKey  [B
            0   28     2     usage  I
            0   28     3     input  [B
            0   28     4     start  I
            0   28     5       len  I
            5   28     6  constant  [B
           11   28     7        Kc  [B
           12   25     8      hmac  [B
           18   22     9       buf  [B
      Exception table:
        from    to  target  type
          11    14      25  any
          16    20      25  any
          22    25      25  any
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      baseKey  
      usage    
      input    
      start    
      len      

  public byte[] encrypt(byte[], int, byte[], byte[], byte[], int, int);
    descriptor: ([BI[B[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=9, args_size=8
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] ivec
        start local 4 // byte[] new_ivec
        start local 5 // byte[] plaintext
        start local 6 // int start
        start local 7 // int len
         0: .line 238
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 239
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid key usage number: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 240
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 239
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 242
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aload 4 /* new_ivec */
            aload 5 /* plaintext */
         5: .line 243
            iload 6 /* start */
            iload 7 /* len */
            iconst_1
         6: .line 242
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.encryptCTS:([BI[B[B[BIIZ)[B
            astore 8 /* output */
        start local 8 // byte[] output
         7: .line 244
            aload 8 /* output */
            areturn
        end local 8 // byte[] output
        end local 7 // int len
        end local 6 // int start
        end local 5 // byte[] plaintext
        end local 4 // byte[] new_ivec
        end local 3 // byte[] ivec
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    8     1    baseKey  [B
            0    8     2      usage  I
            0    8     3       ivec  [B
            0    8     4   new_ivec  [B
            0    8     5  plaintext  [B
            0    8     6      start  I
            0    8     7        len  I
            7    8     8     output  [B
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
           Name  Flags
      baseKey    
      usage      
      ivec       
      new_ivec   
      plaintext  
      start      
      len        

  public byte[] encryptRaw(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=8, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] ivec
        start local 4 // byte[] plaintext
        start local 5 // int start
        start local 6 // int len
         0: .line 254
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 255
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid key usage number: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 256
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 255
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aconst_null
            aload 4 /* plaintext */
         5: .line 259
            iload 5 /* start */
            iload 6 /* len */
            iconst_0
         6: .line 258
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.encryptCTS:([BI[B[B[BIIZ)[B
            astore 7 /* output */
        start local 7 // byte[] output
         7: .line 260
            aload 7 /* output */
            areturn
        end local 7 // byte[] output
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] plaintext
        end local 3 // byte[] ivec
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    8     1    baseKey  [B
            0    8     2      usage  I
            0    8     3       ivec  [B
            0    8     4  plaintext  [B
            0    8     5      start  I
            0    8     6        len  I
            7    8     7     output  [B
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
           Name  Flags
      baseKey    
      usage      
      ivec       
      plaintext  
      start      
      len        

  public byte[] decrypt(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] ivec
        start local 4 // byte[] ciphertext
        start local 5 // int start
        start local 6 // int len
         0: .line 270
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 271
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid key usage number: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 272
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 271
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aload 4 /* ciphertext */
         5: .line 275
            iload 5 /* start */
            iload 6 /* len */
            iconst_1
         6: .line 274
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS:([BI[B[BIIZ)[B
            astore 7 /* output */
        start local 7 // byte[] output
         7: .line 276
            aload 7 /* output */
            areturn
        end local 7 // byte[] output
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] ciphertext
        end local 3 // byte[] ivec
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    8     1     baseKey  [B
            0    8     2       usage  I
            0    8     3        ivec  [B
            0    8     4  ciphertext  [B
            0    8     5       start  I
            0    8     6         len  I
            7    8     7      output  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
            Name  Flags
      baseKey     
      usage       
      ivec        
      ciphertext  
      start       
      len         

  public byte[] decryptRaw(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] ivec
        start local 4 // byte[] ciphertext
        start local 5 // int start
        start local 6 // int len
         0: .line 289
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 290
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid key usage number: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 291
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 290
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 293
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aload 4 /* ciphertext */
         5: .line 294
            iload 5 /* start */
            iload 6 /* len */
            iconst_0
         6: .line 293
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS:([BI[B[BIIZ)[B
            astore 7 /* output */
        start local 7 // byte[] output
         7: .line 295
            aload 7 /* output */
            areturn
        end local 7 // byte[] output
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] ciphertext
        end local 3 // byte[] ivec
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0    8     1     baseKey  [B
            0    8     2       usage  I
            0    8     3        ivec  [B
            0    8     4  ciphertext  [B
            0    8     5       start  I
            0    8     6         len  I
            7    8     7      output  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
            Name  Flags
      baseKey     
      usage       
      ivec        
      ciphertext  
      start       
      len         

  private byte[] encryptCTS(byte[], int, byte[], byte[], byte[], int, int, boolean);
    descriptor: ([BI[B[B[BIIZ)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=20, args_size=9
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] ivec
        start local 4 // byte[] new_ivec
        start local 5 // byte[] plaintext
        start local 6 // int start
        start local 7 // int len
        start local 8 // boolean confounder_exists
         0: .line 306
            aconst_null
            astore 9 /* Ke */
        start local 9 // byte[] Ke
         1: .line 307
            aconst_null
            astore 10 /* Ki */
        start local 10 // byte[] Ki
         2: .line 320
            iconst_5
            newarray 8
            astore 11 /* constant */
        start local 11 // byte[] constant
         3: .line 321
            aload 11 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         4: .line 322
            aload 11 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         5: .line 323
            aload 11 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         6: .line 324
            aload 11 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
         7: .line 325
            aload 11 /* constant */
            iconst_4
            bipush -86
            bastore
         8: .line 326
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 11 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.dk:([B[B)[B
            astore 9 /* Ke */
         9: .line 328
            aconst_null
            astore 12 /* toBeEncrypted */
        start local 12 // byte[] toBeEncrypted
        10: .line 329
            iload 8 /* confounder_exists */
            ifeq 20
        11: .line 330
            bipush 16
            invokestatic sun.security.krb5.Confounder.bytes:(I)[B
            astore 13 /* confounder */
        start local 13 // byte[] confounder
        12: .line 331
            aload 13 /* confounder */
            arraylength
            iload 7 /* len */
            iadd
            newarray 8
            astore 12 /* toBeEncrypted */
        13: .line 332
            aload 13 /* confounder */
            iconst_0
            aload 12 /* toBeEncrypted */
        14: .line 333
            iconst_0
            aload 13 /* confounder */
            arraylength
        15: .line 332
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 334
            aload 5 /* plaintext */
            iload 6 /* start */
            aload 12 /* toBeEncrypted */
        17: .line 335
            aload 13 /* confounder */
            arraylength
            iload 7 /* len */
        18: .line 334
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 13 // byte[] confounder
        19: .line 336
            goto 22
        20: .line 337
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] byte[] int int int byte[] byte[] byte[] byte[]
      StackMap stack:
            iload 7 /* len */
            newarray 8
            astore 12 /* toBeEncrypted */
        21: .line 338
            aload 5 /* plaintext */
            iload 6 /* start */
            aload 12 /* toBeEncrypted */
            iconst_0
            iload 7 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 342
      StackMap locals:
      StackMap stack:
            aload 12 /* toBeEncrypted */
            arraylength
            bipush 12
            iadd
            newarray 8
            astore 13 /* output */
        start local 13 // byte[] output
        23: .line 345
            ldc "AES/CTS/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 14 /* cipher */
        start local 14 // javax.crypto.Cipher cipher
        24: .line 346
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* Ke */
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 15 /* secretKey */
        start local 15 // javax.crypto.spec.SecretKeySpec secretKey
        25: .line 347
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 3 /* ivec */
            iconst_0
            aload 3 /* ivec */
            arraylength
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 16 /* encIv */
        start local 16 // javax.crypto.spec.IvParameterSpec encIv
        26: .line 348
            aload 14 /* cipher */
            iconst_1
            aload 15 /* secretKey */
            aload 16 /* encIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        27: .line 349
            aload 14 /* cipher */
            aload 12 /* toBeEncrypted */
            iconst_0
            aload 12 /* toBeEncrypted */
            arraylength
            aload 13 /* output */
            invokevirtual javax.crypto.Cipher.doFinal:([BII[B)I
            pop
        28: .line 352
            aload 11 /* constant */
            iconst_4
            bipush 85
            bastore
        29: .line 353
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 11 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.dk:([B[B)[B
            astore 10 /* Ki */
        30: .line 361
            aload 0 /* this */
            aload 10 /* Ki */
            aload 12 /* toBeEncrypted */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getHmac:([B[B)[B
            astore 17 /* hmac */
        start local 17 // byte[] hmac
        31: .line 364
            aload 17 /* hmac */
            iconst_0
            aload 13 /* output */
            aload 12 /* toBeEncrypted */
            arraylength
        32: .line 365
            aload 17 /* hmac */
            arraylength
        33: .line 364
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        34: .line 366
            aload 13 /* output */
            astore 19
        35: .line 368
            aload 9 /* Ke */
            ifnull 37
        36: .line 369
            aload 9 /* Ke */
            iconst_0
            aload 9 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        37: .line 371
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] byte[] int int int byte[] byte[] byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] top byte[]
      StackMap stack:
            aload 10 /* Ki */
            ifnull 39
        38: .line 372
            aload 10 /* Ki */
            iconst_0
            aload 10 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        39: .line 366
      StackMap locals:
      StackMap stack:
            aload 19
            areturn
        end local 17 // byte[] hmac
        end local 16 // javax.crypto.spec.IvParameterSpec encIv
        end local 15 // javax.crypto.spec.SecretKeySpec secretKey
        end local 14 // javax.crypto.Cipher cipher
        end local 13 // byte[] output
        end local 12 // byte[] toBeEncrypted
        end local 11 // byte[] constant
        40: .line 367
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] byte[] int int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 18
        41: .line 368
            aload 9 /* Ke */
            ifnull 43
        42: .line 369
            aload 9 /* Ke */
            iconst_0
            aload 9 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        43: .line 371
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] byte[] int int int byte[] byte[] top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 10 /* Ki */
            ifnull 45
        44: .line 372
            aload 10 /* Ki */
            iconst_0
            aload 10 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        45: .line 374
      StackMap locals:
      StackMap stack:
            aload 18
            athrow
        end local 10 // byte[] Ki
        end local 9 // byte[] Ke
        end local 8 // boolean confounder_exists
        end local 7 // int len
        end local 6 // int start
        end local 5 // byte[] plaintext
        end local 4 // byte[] new_ivec
        end local 3 // byte[] ivec
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   46     0               this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0   46     1            baseKey  [B
            0   46     2              usage  I
            0   46     3               ivec  [B
            0   46     4           new_ivec  [B
            0   46     5          plaintext  [B
            0   46     6              start  I
            0   46     7                len  I
            0   46     8  confounder_exists  Z
            1   46     9                 Ke  [B
            2   46    10                 Ki  [B
            3   40    11           constant  [B
           10   40    12      toBeEncrypted  [B
           12   19    13         confounder  [B
           23   40    13             output  [B
           24   40    14             cipher  Ljavax/crypto/Cipher;
           25   40    15          secretKey  Ljavax/crypto/spec/SecretKeySpec;
           26   40    16              encIv  Ljavax/crypto/spec/IvParameterSpec;
           31   40    17               hmac  [B
      Exception table:
        from    to  target  type
           2    35      40  any
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
                   Name  Flags
      baseKey            
      usage              
      ivec               
      new_ivec           
      plaintext          
      start              
      len                
      confounder_exists  

  private byte[] decryptCTS(byte[], int, byte[], byte[], int, int, boolean);
    descriptor: ([BI[B[BIIZ)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=21, args_size=8
        start local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] ivec
        start local 4 // byte[] ciphertext
        start local 5 // int start
        start local 6 // int len
        start local 7 // boolean confounder_exists
         0: .line 384
            aconst_null
            astore 8 /* Ke */
        start local 8 // byte[] Ke
         1: .line 385
            aconst_null
            astore 9 /* Ki */
        start local 9 // byte[] Ki
         2: .line 389
            iconst_5
            newarray 8
            astore 10 /* constant */
        start local 10 // byte[] constant
         3: .line 390
            aload 10 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         4: .line 391
            aload 10 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         5: .line 392
            aload 10 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         6: .line 393
            aload 10 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
         7: .line 395
            aload 10 /* constant */
            iconst_4
            bipush -86
            bastore
         8: .line 396
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 10 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.dk:([B[B)[B
            astore 8 /* Ke */
         9: .line 412
            ldc "AES/CTS/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 11 /* cipher */
        start local 11 // javax.crypto.Cipher cipher
        10: .line 413
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 8 /* Ke */
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 12 /* secretKey */
        start local 12 // javax.crypto.spec.SecretKeySpec secretKey
        11: .line 414
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 3 /* ivec */
            iconst_0
            aload 3 /* ivec */
            arraylength
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 13 /* encIv */
        start local 13 // javax.crypto.spec.IvParameterSpec encIv
        12: .line 415
            aload 11 /* cipher */
            iconst_2
            aload 12 /* secretKey */
            aload 13 /* encIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        13: .line 416
            aload 11 /* cipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 6 /* len */
            bipush 12
            isub
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 14 /* plaintext */
        start local 14 // byte[] plaintext
        14: .line 424
            aload 10 /* constant */
            iconst_4
            bipush 85
            bastore
        15: .line 425
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 10 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.dk:([B[B)[B
            astore 9 /* Ki */
        16: .line 433
            aload 0 /* this */
            aload 9 /* Ki */
            aload 14 /* plaintext */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesDkCrypto.getHmac:([B[B)[B
            astore 15 /* calculatedHmac */
        start local 15 // byte[] calculatedHmac
        17: .line 434
            iload 5 /* start */
            iload 6 /* len */
            iadd
            bipush 12
            isub
            istore 16 /* hmacOffset */
        start local 16 // int hmacOffset
        18: .line 440
            iconst_0
            istore 17 /* cksumFailed */
        start local 17 // boolean cksumFailed
        19: .line 441
            aload 15 /* calculatedHmac */
            arraylength
            bipush 12
            if_icmplt 27
        20: .line 442
            iconst_0
            istore 18 /* i */
        start local 18 // int i
        21: goto 26
        22: .line 443
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] int int int byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] int int int
      StackMap stack:
            aload 15 /* calculatedHmac */
            iload 18 /* i */
            baload
            aload 4 /* ciphertext */
            iload 16 /* hmacOffset */
            iload 18 /* i */
            iadd
            baload
            if_icmpeq 25
        23: .line 444
            iconst_1
            istore 17 /* cksumFailed */
        24: .line 448
            goto 27
        25: .line 442
      StackMap locals:
      StackMap stack:
            iinc 18 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 18 /* i */
            bipush 12
            if_icmplt 22
        end local 18 // int i
        27: .line 452
      StackMap locals:
      StackMap stack:
            iload 17 /* cksumFailed */
            ifeq 29
        28: .line 453
            new java.security.GeneralSecurityException
            dup
            ldc "Checksum failed"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 456
      StackMap locals:
      StackMap stack:
            iload 7 /* confounder_exists */
            ifeq 40
        30: .line 459
            aload 14 /* plaintext */
            arraylength
            bipush 16
            isub
            newarray 8
            astore 18 /* output */
        start local 18 // byte[] output
        31: .line 460
            aload 14 /* plaintext */
            bipush 16
            aload 18 /* output */
        32: .line 461
            iconst_0
            aload 18 /* output */
            arraylength
        33: .line 460
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        34: .line 462
            aload 18 /* output */
            astore 20
        35: .line 467
            aload 8 /* Ke */
            ifnull 37
        36: .line 468
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        37: .line 470
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] int int int byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] int int byte[] top byte[]
      StackMap stack:
            aload 9 /* Ki */
            ifnull 39
        38: .line 471
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        39: .line 462
      StackMap locals:
      StackMap stack:
            aload 20
            areturn
        end local 18 // byte[] output
        40: .line 464
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] int int int byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] int int
      StackMap stack:
            aload 14 /* plaintext */
            astore 20
        41: .line 467
            aload 8 /* Ke */
            ifnull 43
        42: .line 468
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        43: .line 470
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] int int int byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] int int top top byte[]
      StackMap stack:
            aload 9 /* Ki */
            ifnull 45
        44: .line 471
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        45: .line 464
      StackMap locals:
      StackMap stack:
            aload 20
            areturn
        end local 17 // boolean cksumFailed
        end local 16 // int hmacOffset
        end local 15 // byte[] calculatedHmac
        end local 14 // byte[] plaintext
        end local 13 // javax.crypto.spec.IvParameterSpec encIv
        end local 12 // javax.crypto.spec.SecretKeySpec secretKey
        end local 11 // javax.crypto.Cipher cipher
        end local 10 // byte[] constant
        46: .line 466
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] int int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 19
        47: .line 467
            aload 8 /* Ke */
            ifnull 49
        48: .line 468
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        49: .line 470
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesDkCrypto byte[] int byte[] byte[] int int int byte[] byte[] top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 9 /* Ki */
            ifnull 51
        50: .line 471
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        51: .line 473
      StackMap locals:
      StackMap stack:
            aload 19
            athrow
        end local 9 // byte[] Ki
        end local 8 // byte[] Ke
        end local 7 // boolean confounder_exists
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] ciphertext
        end local 3 // byte[] ivec
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesDkCrypto this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   52     0               this  Lsun/security/krb5/internal/crypto/dk/AesDkCrypto;
            0   52     1            baseKey  [B
            0   52     2              usage  I
            0   52     3               ivec  [B
            0   52     4         ciphertext  [B
            0   52     5              start  I
            0   52     6                len  I
            0   52     7  confounder_exists  Z
            1   52     8                 Ke  [B
            2   52     9                 Ki  [B
            3   46    10           constant  [B
           10   46    11             cipher  Ljavax/crypto/Cipher;
           11   46    12          secretKey  Ljavax/crypto/spec/SecretKeySpec;
           12   46    13              encIv  Ljavax/crypto/spec/IvParameterSpec;
           14   46    14          plaintext  [B
           17   46    15     calculatedHmac  [B
           18   46    16         hmacOffset  I
           19   46    17        cksumFailed  Z
           21   27    18                  i  I
           31   40    18             output  [B
      Exception table:
        from    to  target  type
           2    35      46  any
          40    41      46  any
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
                   Name  Flags
      baseKey            
      usage              
      ivec               
      ciphertext         
      start              
      len                
      confounder_exists  

  private static byte[] PBKDF2(char[], byte[], int, int);
    descriptor: ([C[BII)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // char[] secret
        start local 1 // byte[] salt
        start local 2 // int count
        start local 3 // int keyLength
         0: .line 482
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 0 /* secret */
            aload 1 /* salt */
            iload 2 /* count */
            iload 3 /* keyLength */
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
            astore 4 /* keySpec */
        start local 4 // javax.crypto.spec.PBEKeySpec keySpec
         1: .line 484
            ldc "PBKDF2WithHmacSHA1"
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
         2: .line 483
            astore 5 /* skf */
        start local 5 // javax.crypto.SecretKeyFactory skf
         3: .line 485
            aload 5 /* skf */
            aload 4 /* keySpec */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 6 /* key */
        start local 6 // javax.crypto.SecretKey key
         4: .line 486
            aload 6 /* key */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            astore 7 /* result */
        start local 7 // byte[] result
         5: .line 488
            aload 7 /* result */
            areturn
        end local 7 // byte[] result
        end local 6 // javax.crypto.SecretKey key
        end local 5 // javax.crypto.SecretKeyFactory skf
        end local 4 // javax.crypto.spec.PBEKeySpec keySpec
        end local 3 // int keyLength
        end local 2 // int count
        end local 1 // byte[] salt
        end local 0 // char[] secret
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0     secret  [C
            0    6     1       salt  [B
            0    6     2      count  I
            0    6     3  keyLength  I
            1    6     4    keySpec  Ljavax/crypto/spec/PBEKeySpec;
            3    6     5        skf  Ljavax/crypto/SecretKeyFactory;
            4    6     6        key  Ljavax/crypto/SecretKey;
            5    6     7     result  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
           Name  Flags
      secret     
      salt       
      count      
      keyLength  

  public static final int readBigEndian(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // byte[] data
        start local 1 // int pos
        start local 2 // int size
         0: .line 492
            iconst_0
            istore 3 /* retVal */
        start local 3 // int retVal
         1: .line 493
            iload 2 /* size */
            iconst_1
            isub
            bipush 8
            imul
            istore 4 /* shifter */
        start local 4 // int shifter
         2: .line 494
            goto 7
         3: .line 495
      StackMap locals: int int
      StackMap stack:
            iload 3 /* retVal */
            aload 0 /* data */
            iload 1 /* pos */
            baload
            sipush 255
            iand
            iload 4 /* shifter */
            ishl
            iadd
            istore 3 /* retVal */
         4: .line 496
            iinc 4 /* shifter */ -8
         5: .line 497
            iinc 1 /* pos */ 1
         6: .line 498
            iinc 2 /* size */ -1
         7: .line 494
      StackMap locals:
      StackMap stack:
            iload 2 /* size */
            ifgt 3
         8: .line 500
            iload 3 /* retVal */
            ireturn
        end local 4 // int shifter
        end local 3 // int retVal
        end local 2 // int size
        end local 1 // int pos
        end local 0 // byte[] data
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     data  [B
            0    9     1      pos  I
            0    9     2     size  I
            1    9     3   retVal  I
            2    9     4  shifter  I
    MethodParameters:
      Name  Flags
      data  
      pos   
      size  
}
SourceFile: "AesDkCrypto.java"