public class sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto 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.AesSha2DkCrypto
  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: 32768

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

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

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

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

  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 87
            bipush 16
            newarray 8
            putstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.ZERO_IV:[B
         1: .line 91
            ldc "aes128-cts-hmac-sha256-128"
            invokevirtual java.lang.String.getBytes:()[B
         2: .line 90
            putstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.ETYPE_NAME_128:[B
         3: .line 93
            ldc "aes256-cts-hmac-sha384-192"
            invokevirtual java.lang.String.getBytes:()[B
         4: .line 92
            putstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.ETYPE_NAME_256:[B
         5: .line 93
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
        start local 1 // int length
         0: .line 98
            aload 0 /* this */
            invokespecial sun.security.krb5.internal.crypto.dk.DkCrypto.<init>:()V
         1: .line 99
            aload 0 /* this */
            iload 1 /* length */
            putfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.keyLength:I
         2: .line 100
            aload 0 /* this */
            iload 1 /* length */
            sipush 128
            if_icmpne 3
            sipush 128
            goto 4
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto int
      StackMap stack: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto
         3: sipush 192
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto int
      StackMap stack: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto int
         4: bipush 8
            idiv
            putfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
         5: .line 101
            return
        end local 1 // int length
        end local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0    6     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.AesSha2DkCrypto this
         0: .line 104
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.keyLength:I
            ireturn
        end local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;

  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.AesSha2DkCrypto this
        start local 1 // char[] password
        start local 2 // java.lang.String salt
        start local 3 // byte[] s2kparams
         0: .line 110
            aconst_null
            astore 4 /* saltUtf8 */
        start local 4 // byte[] saltUtf8
         1: .line 112
            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 113
            aload 0 /* this */
            aload 1 /* password */
            aload 4 /* saltUtf8 */
            aload 3 /* s2kparams */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.stringToKey:([C[B[B)[B
            astore 6
         3: .line 117
            aload 4 /* saltUtf8 */
            ifnull 5
         4: .line 118
            aload 4 /* saltUtf8 */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
         5: .line 113
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto char[] java.lang.String byte[] byte[] top byte[]
      StackMap stack:
            aload 6
            areturn
         6: .line 114
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto char[] java.lang.String byte[] byte[]
      StackMap stack: java.lang.Exception
            pop
         7: .line 117
            aload 4 /* saltUtf8 */
            ifnull 9
         8: .line 118
            aload 4 /* saltUtf8 */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
         9: .line 115
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        10: .line 116
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        11: .line 117
            aload 4 /* saltUtf8 */
            ifnull 13
        12: .line 118
            aload 4 /* saltUtf8 */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        13: .line 120
      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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            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=8, args_size=4
        start local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
        start local 1 // char[] secret
        start local 2 // byte[] salt
        start local 3 // byte[] params
         0: .line 127
            ldc 32768
            istore 4 /* iter_count */
        start local 4 // int iter_count
         1: .line 128
            aload 3 /* params */
            ifnull 5
         2: .line 129
            aload 3 /* params */
            arraylength
            iconst_4
            if_icmpeq 4
         3: .line 130
            new java.lang.RuntimeException
            dup
            ldc "Invalid parameter to stringToKey"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 132
      StackMap locals: int
      StackMap stack:
            aload 3 /* params */
            iconst_0
            iconst_4
            invokestatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.readBigEndian:([BII)I
            istore 4 /* iter_count */
         5: .line 135
      StackMap locals:
      StackMap stack:
            bipush 27
            aload 2 /* salt */
            arraylength
            iadd
            newarray 8
            astore 5 /* saltp */
        start local 5 // byte[] saltp
         6: .line 136
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.keyLength:I
            sipush 128
            if_icmpne 9
         7: .line 137
            getstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.ETYPE_NAME_128:[B
            iconst_0
            aload 5 /* saltp */
            iconst_0
            bipush 26
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 138
            goto 10
         9: .line 139
      StackMap locals: byte[]
      StackMap stack:
            getstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.ETYPE_NAME_256:[B
            iconst_0
            aload 5 /* saltp */
            iconst_0
            bipush 26
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 141
      StackMap locals:
      StackMap stack:
            aload 2 /* salt */
            iconst_0
            aload 5 /* saltp */
            bipush 27
            aload 2 /* salt */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 142
            aload 0 /* this */
            aload 1 /* secret */
            aload 5 /* saltp */
            iload 4 /* iter_count */
        12: .line 143
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getKeySeedLength:()I
        13: .line 142
            invokestatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.PBKDF2:([C[BII)[B
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.randomToKey:([B)[B
            astore 6 /* tmpKey */
        start local 6 // byte[] tmpKey
        14: .line 144
            aload 0 /* this */
            aload 6 /* tmpKey */
            getstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.KERBEROS_CONSTANT:[B
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.dk:([B[B)[B
            astore 7 /* result */
        start local 7 // byte[] result
        15: .line 145
            aload 7 /* result */
            areturn
        end local 7 // byte[] result
        end local 6 // byte[] tmpKey
        end local 5 // byte[] saltp
        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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0   16     1      secret  [C
            0   16     2        salt  [B
            0   16     3      params  [B
            1   16     4  iter_count  I
            6   16     5       saltp  [B
           14   16     6      tmpKey  [B
           15   16     7      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.AesSha2DkCrypto this
        start local 1 // byte[] in
         0: .line 150
            aload 1 /* in */
            areturn
        end local 1 // byte[] in
        end local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0    1     1    in  [B
    MethodParameters:
      Name  Flags
      in    

  protected byte[] dr(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] constant
         0: .line 166
            aload 2 /* constant */
            arraylength
            bipush 9
            iadd
            newarray 8
            astore 4 /* input */
        start local 4 // byte[] input
         1: .line 168
            aload 4 /* input */
            iconst_3
            iconst_1
            bastore
         2: .line 170
            aload 2 /* constant */
            iconst_0
            aload 4 /* input */
            iconst_4
            aload 2 /* constant */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 171
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            ldc "HMAC"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 5 /* tkey */
        start local 5 // javax.crypto.spec.SecretKeySpec tkey
         4: .line 173
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.keyLength:I
            sipush 128
            if_icmpne 5
            ldc "HmacSHA256"
            goto 6
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] byte[] top byte[] javax.crypto.spec.SecretKeySpec
      StackMap stack:
         5: ldc "HmacSHA384"
         6: .line 172
      StackMap locals:
      StackMap stack: java.lang.String
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 6 /* mac */
        start local 6 // javax.crypto.Mac mac
         7: .line 174
            aload 6 /* mac */
            aload 5 /* tkey */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
         8: .line 177
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.keyLength:I
            sipush 128
            if_icmpne 11
         9: .line 179
            sipush 128
            istore 7 /* k */
        start local 7 // int k
        10: .line 180
            goto 16
        end local 7 // int k
        11: .line 181
      StackMap locals: javax.crypto.Mac
      StackMap stack:
            aload 2 /* constant */
            aload 2 /* constant */
            arraylength
            iconst_1
            isub
            baload
            istore 8 /* last */
        start local 8 // byte last
        12: .line 182
            iload 8 /* last */
            bipush -103
            if_icmpeq 13
            iload 8 /* last */
            bipush 85
            if_icmpne 15
        13: .line 184
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] byte[] top byte[] javax.crypto.spec.SecretKeySpec javax.crypto.Mac top int
      StackMap stack:
            sipush 192
            istore 7 /* k */
        start local 7 // int k
        14: .line 185
            goto 16
        end local 7 // int k
        15: .line 187
      StackMap locals:
      StackMap stack:
            sipush 256
            istore 7 /* k */
        end local 8 // byte last
        start local 7 // int k
        16: .line 191
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] byte[] top byte[] javax.crypto.spec.SecretKeySpec javax.crypto.Mac int
      StackMap stack:
            aload 4 /* input */
            aload 4 /* input */
            arraylength
            iconst_1
            isub
            iload 7 /* k */
            i2b
            bastore
        17: .line 192
            aload 4 /* input */
            aload 4 /* input */
            arraylength
            iconst_2
            isub
            iload 7 /* k */
            sipush 256
            idiv
            i2b
            bastore
        18: .line 194
            aload 6 /* mac */
            aload 4 /* input */
            invokevirtual javax.crypto.Mac.doFinal:([B)[B
            astore 3 /* result */
        start local 3 // byte[] result
        19: .line 195
            aload 3 /* result */
            iload 7 /* k */
            bipush 8
            idiv
            invokestatic java.util.Arrays.copyOf:([BI)[B
            areturn
        end local 7 // int k
        end local 6 // javax.crypto.Mac mac
        end local 5 // javax.crypto.spec.SecretKeySpec tkey
        end local 4 // byte[] input
        end local 3 // byte[] result
        end local 2 // byte[] constant
        end local 1 // byte[] key
        end local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0   20     1       key  [B
            0   20     2  constant  [B
           19   20     3    result  [B
            1   20     4     input  [B
            4   20     5      tkey  Ljavax/crypto/spec/SecretKeySpec;
            7   20     6       mac  Ljavax/crypto/Mac;
           10   11     7         k  I
           14   15     7         k  I
           16   20     7         k  I
           12   16     8      last  B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
          Name  Flags
      key       
      constant  

  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.AesSha2DkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] ivec
        start local 3 // int mode
         0: .line 202
            aload 2 /* ivec */
            ifnonnull 2
         1: .line 203
            getstatic sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.ZERO_IV:[B
            astore 2 /* ivec */
         2: .line 205
      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 206
            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 207
            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 208
            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 209
            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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            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.AesSha2DkCrypto this
         0: .line 214
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            ireturn
        end local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;

  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.AesSha2DkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] msg
         0: .line 223
            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 224
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.keyLength:I
            sipush 128
            if_icmpne 2
            ldc "HmacSHA256"
            goto 3
      StackMap locals: javax.crypto.SecretKey
      StackMap stack:
         2: ldc "HmacSHA384"
      StackMap locals:
      StackMap stack: java.lang.String
         3: invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 4 /* m */
        start local 4 // javax.crypto.Mac m
         4: .line 225
            aload 4 /* m */
            aload 3 /* keyKi */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
         5: .line 228
            aload 4 /* m */
            aload 2 /* msg */
            invokevirtual javax.crypto.Mac.doFinal:([B)[B
            astore 5 /* hash */
        start local 5 // byte[] hash
         6: .line 231
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            newarray 8
            astore 6 /* output */
        start local 6 // byte[] output
         7: .line 232
            aload 5 /* hash */
            iconst_0
            aload 6 /* output */
            iconst_0
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 233
            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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0    9     1     key  [B
            0    9     2     msg  [B
            1    9     3   keyKi  Ljavax/crypto/SecretKey;
            4    9     4       m  Ljavax/crypto/Mac;
            6    9     5    hash  [B
            7    9     6  output  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      key   
      msg   

  private byte[] deriveKey(byte[], int, byte);
    descriptor: ([BIB)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte type
         0: .line 238
            iconst_5
            newarray 8
            astore 4 /* constant */
        start local 4 // byte[] constant
         1: .line 239
            aload 4 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         2: .line 240
            aload 4 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         3: .line 241
            aload 4 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         4: .line 242
            aload 4 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
         5: .line 243
            aload 4 /* constant */
            iconst_4
            iload 3 /* type */
            bastore
         6: .line 244
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 4 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.dk:([B[B)[B
            areturn
        end local 4 // byte[] constant
        end local 3 // byte type
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0    7     1   baseKey  [B
            0    7     2     usage  I
            0    7     3      type  B
            1    7     4  constant  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      baseKey  
      usage    
      type     

  public byte[] calculateChecksum(byte[], int, byte[], int, int);
    descriptor: ([BI[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=6
        start local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto 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 253
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 254
            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 255
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 254
            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 */
            bipush -103
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.deriveKey:([BIB)[B
            astore 6 /* Kc */
        start local 6 // byte[] Kc
         5: .line 269
            aload 0 /* this */
            aload 6 /* Kc */
            aload 3 /* input */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getHmac:([B[B)[B
            astore 7 /* hmac */
        start local 7 // byte[] hmac
         6: .line 273
            aload 7 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getChecksumLength:()I
            if_icmpne 10
         7: .line 274
            aload 7 /* hmac */
            astore 10
         8: .line 284
            aload 6 /* Kc */
            iconst_0
            aload 6 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
         9: .line 274
            aload 10
            areturn
        10: .line 275
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 7 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getChecksumLength:()I
            if_icmple 16
        11: .line 276
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getChecksumLength:()I
            newarray 8
            astore 8 /* buf */
        start local 8 // byte[] buf
        12: .line 277
            aload 7 /* hmac */
            iconst_0
            aload 8 /* buf */
            iconst_0
            aload 8 /* buf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 278
            aload 8 /* buf */
            astore 10
        14: .line 284
            aload 6 /* Kc */
            iconst_0
            aload 6 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        15: .line 278
            aload 10
            areturn
        end local 8 // byte[] buf
        16: .line 280
      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
        17: .line 281
            aload 7 /* 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.AesSha2DkCrypto.getChecksumLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 280
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // byte[] hmac
        19: .line 283
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] int int byte[]
      StackMap stack: java.lang.Throwable
            astore 9
        20: .line 284
            aload 6 /* Kc */
            iconst_0
            aload 6 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        21: .line 285
            aload 9
            athrow
        end local 6 // byte[] Kc
        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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0   22     1  baseKey  [B
            0   22     2    usage  I
            0   22     3    input  [B
            0   22     4    start  I
            0   22     5      len  I
            5   22     6       Kc  [B
            6   19     7     hmac  [B
           12   16     8      buf  [B
      Exception table:
        from    to  target  type
           5     8      19  any
          10    14      19  any
          16    19      19  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.AesSha2DkCrypto 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 295
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 296
            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 297
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 296
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 299
      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 300
            iload 6 /* start */
            iload 7 /* len */
            iconst_1
         6: .line 299
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.encryptCTS:([BI[B[B[BIIZ)[B
            astore 8 /* output */
        start local 8 // byte[] output
         7: .line 301
            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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            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.AesSha2DkCrypto 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 311
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 312
            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 313
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 312
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aconst_null
            aload 4 /* plaintext */
         5: .line 316
            iload 5 /* start */
            iload 6 /* len */
            iconst_0
         6: .line 315
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.encryptCTS:([BI[B[B[BIIZ)[B
            astore 7 /* output */
        start local 7 // byte[] output
         7: .line 317
            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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            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.AesSha2DkCrypto 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 327
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 328
            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 329
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 328
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 331
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aload 4 /* ciphertext */
         5: .line 332
            iload 5 /* start */
            iload 6 /* len */
            iconst_1
         6: .line 331
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.decryptCTS:([BI[B[BIIZ)[B
            astore 7 /* output */
        start local 7 // byte[] output
         7: .line 333
            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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            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.AesSha2DkCrypto 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 346
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 347
            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 348
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 347
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 350
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            aload 3 /* ivec */
            aload 4 /* ciphertext */
         5: .line 351
            iload 5 /* start */
            iload 6 /* len */
            iconst_0
         6: .line 350
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.decryptCTS:([BI[B[BIIZ)[B
            astore 7 /* output */
        start local 7 // byte[] output
         7: .line 352
            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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            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.AesSha2DkCrypto 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 363
            aconst_null
            astore 9 /* Ke */
        start local 9 // byte[] Ke
         1: .line 364
            aconst_null
            astore 10 /* Ki */
        start local 10 // byte[] Ki
         2: .line 376
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            bipush -86
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.deriveKey:([BIB)[B
            astore 9 /* Ke */
         3: .line 378
            aconst_null
            astore 11 /* toBeEncrypted */
        start local 11 // byte[] toBeEncrypted
         4: .line 379
            iload 8 /* confounder_exists */
            ifeq 14
         5: .line 380
            bipush 16
            invokestatic sun.security.krb5.Confounder.bytes:(I)[B
            astore 12 /* confounder */
        start local 12 // byte[] confounder
         6: .line 381
            aload 12 /* confounder */
            arraylength
            iload 7 /* len */
            iadd
            newarray 8
            astore 11 /* toBeEncrypted */
         7: .line 382
            aload 12 /* confounder */
            iconst_0
            aload 11 /* toBeEncrypted */
         8: .line 383
            iconst_0
            aload 12 /* confounder */
            arraylength
         9: .line 382
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 384
            aload 5 /* plaintext */
            iload 6 /* start */
            aload 11 /* toBeEncrypted */
        11: .line 385
            aload 12 /* confounder */
            arraylength
            iload 7 /* len */
        12: .line 384
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 12 // byte[] confounder
        13: .line 386
            goto 16
        14: .line 387
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            iload 7 /* len */
            newarray 8
            astore 11 /* toBeEncrypted */
        15: .line 388
            aload 5 /* plaintext */
            iload 6 /* start */
            aload 11 /* toBeEncrypted */
            iconst_0
            iload 7 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 392
      StackMap locals:
      StackMap stack:
            aload 11 /* toBeEncrypted */
            arraylength
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            iadd
            newarray 8
            astore 12 /* output */
        start local 12 // byte[] output
        17: .line 395
            ldc "AES/CTS/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 13 /* cipher */
        start local 13 // javax.crypto.Cipher cipher
        18: .line 396
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* Ke */
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 14 /* secretKey */
        start local 14 // javax.crypto.spec.SecretKeySpec secretKey
        19: .line 397
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 3 /* ivec */
            iconst_0
            aload 3 /* ivec */
            arraylength
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 15 /* encIv */
        start local 15 // javax.crypto.spec.IvParameterSpec encIv
        20: .line 398
            aload 13 /* cipher */
            iconst_1
            aload 14 /* secretKey */
            aload 15 /* encIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        21: .line 399
            aload 13 /* cipher */
            aload 11 /* toBeEncrypted */
            iconst_0
            aload 11 /* toBeEncrypted */
            arraylength
            aload 12 /* output */
            invokevirtual javax.crypto.Cipher.doFinal:([BII[B)I
            pop
        22: .line 401
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            bipush 85
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.deriveKey:([BIB)[B
            astore 10 /* Ki */
        23: .line 408
            aload 3 /* ivec */
            aload 3 /* ivec */
            arraylength
            aload 11 /* toBeEncrypted */
            arraylength
            iadd
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 16 /* msg */
        start local 16 // byte[] msg
        24: .line 409
            aload 12 /* output */
            iconst_0
            aload 16 /* msg */
            aload 3 /* ivec */
            arraylength
            aload 11 /* toBeEncrypted */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        25: .line 410
            aload 0 /* this */
            aload 10 /* Ki */
            aload 16 /* msg */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getHmac:([B[B)[B
            astore 17 /* hmac */
        start local 17 // byte[] hmac
        26: .line 413
            aload 17 /* hmac */
            iconst_0
            aload 12 /* output */
            aload 11 /* toBeEncrypted */
            arraylength
        27: .line 414
            aload 17 /* hmac */
            arraylength
        28: .line 413
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 415
            aload 12 /* output */
            astore 19
        30: .line 417
            aload 9 /* Ke */
            ifnull 32
        31: .line 418
            aload 9 /* Ke */
            iconst_0
            aload 9 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        32: .line 420
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] byte[] int int int byte[] byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] top byte[]
      StackMap stack:
            aload 10 /* Ki */
            ifnull 34
        33: .line 421
            aload 10 /* Ki */
            iconst_0
            aload 10 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        34: .line 415
      StackMap locals:
      StackMap stack:
            aload 19
            areturn
        end local 17 // byte[] hmac
        end local 16 // byte[] msg
        end local 15 // javax.crypto.spec.IvParameterSpec encIv
        end local 14 // javax.crypto.spec.SecretKeySpec secretKey
        end local 13 // javax.crypto.Cipher cipher
        end local 12 // byte[] output
        end local 11 // byte[] toBeEncrypted
        35: .line 416
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] byte[] int int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 18
        36: .line 417
            aload 9 /* Ke */
            ifnull 38
        37: .line 418
            aload 9 /* Ke */
            iconst_0
            aload 9 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        38: .line 420
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto 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 40
        39: .line 421
            aload 10 /* Ki */
            iconst_0
            aload 10 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        40: .line 423
      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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   41     0               this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0   41     1            baseKey  [B
            0   41     2              usage  I
            0   41     3               ivec  [B
            0   41     4           new_ivec  [B
            0   41     5          plaintext  [B
            0   41     6              start  I
            0   41     7                len  I
            0   41     8  confounder_exists  Z
            1   41     9                 Ke  [B
            2   41    10                 Ki  [B
            4   35    11      toBeEncrypted  [B
            6   13    12         confounder  [B
           17   35    12             output  [B
           18   35    13             cipher  Ljavax/crypto/Cipher;
           19   35    14          secretKey  Ljavax/crypto/spec/SecretKeySpec;
           20   35    15              encIv  Ljavax/crypto/spec/IvParameterSpec;
           24   35    16                msg  [B
           26   35    17               hmac  [B
      Exception table:
        from    to  target  type
           2    30      35  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=6, locals=21, args_size=8
        start local 0 // sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto 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 433
            aconst_null
            astore 8 /* Ke */
        start local 8 // byte[] Ke
         1: .line 434
            aconst_null
            astore 9 /* Ki */
        start local 9 // byte[] Ki
         2: .line 437
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            bipush -86
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.deriveKey:([BIB)[B
            astore 8 /* Ke */
         3: .line 452
            ldc "AES/CTS/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 10 /* cipher */
        start local 10 // javax.crypto.Cipher cipher
         4: .line 453
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 8 /* Ke */
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 11 /* secretKey */
        start local 11 // javax.crypto.spec.SecretKeySpec secretKey
         5: .line 454
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 3 /* ivec */
            iconst_0
            aload 3 /* ivec */
            arraylength
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 12 /* encIv */
        start local 12 // javax.crypto.spec.IvParameterSpec encIv
         6: .line 455
            aload 10 /* cipher */
            iconst_2
            aload 11 /* secretKey */
            aload 12 /* encIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
         7: .line 456
            aload 10 /* cipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 6 /* len */
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            isub
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 13 /* plaintext */
        start local 13 // byte[] plaintext
         8: .line 463
            aload 0 /* this */
            aload 1 /* baseKey */
            iload 2 /* usage */
            bipush 85
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.deriveKey:([BIB)[B
            astore 9 /* Ki */
         9: .line 470
            aload 3 /* ivec */
            aload 3 /* ivec */
            arraylength
            iload 6 /* len */
            iadd
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            isub
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 14 /* msg */
        start local 14 // byte[] msg
        10: .line 471
            aload 4 /* ciphertext */
            iload 5 /* start */
            aload 14 /* msg */
            aload 3 /* ivec */
            arraylength
            iload 6 /* len */
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 472
            aload 0 /* this */
            aload 9 /* Ki */
            aload 14 /* msg */
            invokevirtual sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.getHmac:([B[B)[B
            astore 15 /* calculatedHmac */
        start local 15 // byte[] calculatedHmac
        12: .line 473
            iload 5 /* start */
            iload 6 /* len */
            iadd
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            isub
            istore 16 /* hmacOffset */
        start local 16 // int hmacOffset
        13: .line 479
            iconst_0
            istore 17 /* cksumFailed */
        start local 17 // boolean cksumFailed
        14: .line 480
            aload 15 /* calculatedHmac */
            arraylength
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            if_icmplt 22
        15: .line 481
            iconst_0
            istore 18 /* i */
        start local 18 // int i
        16: goto 21
        17: .line 482
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] int int int byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] 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 20
        18: .line 483
            iconst_1
            istore 17 /* cksumFailed */
        19: .line 487
            goto 22
        20: .line 481
      StackMap locals:
      StackMap stack:
            iinc 18 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 18 /* i */
            aload 0 /* this */
            getfield sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto.hashSize:I
            if_icmplt 17
        end local 18 // int i
        22: .line 491
      StackMap locals:
      StackMap stack:
            iload 17 /* cksumFailed */
            ifeq 24
        23: .line 492
            new java.security.GeneralSecurityException
            dup
            ldc "Checksum failed"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        24: .line 495
      StackMap locals:
      StackMap stack:
            iload 7 /* confounder_exists */
            ifeq 35
        25: .line 498
            aload 13 /* plaintext */
            arraylength
            bipush 16
            isub
            newarray 8
            astore 18 /* output */
        start local 18 // byte[] output
        26: .line 499
            aload 13 /* plaintext */
            bipush 16
            aload 18 /* output */
        27: .line 500
            iconst_0
            aload 18 /* output */
            arraylength
        28: .line 499
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 501
            aload 18 /* output */
            astore 20
        30: .line 506
            aload 8 /* Ke */
            ifnull 32
        31: .line 507
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        32: .line 509
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] int int int byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] byte[] int int byte[] top byte[]
      StackMap stack:
            aload 9 /* Ki */
            ifnull 34
        33: .line 510
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        34: .line 501
      StackMap locals:
      StackMap stack:
            aload 20
            areturn
        end local 18 // byte[] output
        35: .line 503
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] int int int byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] byte[] int int
      StackMap stack:
            aload 13 /* plaintext */
            astore 20
        36: .line 506
            aload 8 /* Ke */
            ifnull 38
        37: .line 507
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        38: .line 509
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] int int int byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec byte[] byte[] byte[] int int top top byte[]
      StackMap stack:
            aload 9 /* Ki */
            ifnull 40
        39: .line 510
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        40: .line 503
      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[] msg
        end local 13 // byte[] plaintext
        end local 12 // javax.crypto.spec.IvParameterSpec encIv
        end local 11 // javax.crypto.spec.SecretKeySpec secretKey
        end local 10 // javax.crypto.Cipher cipher
        41: .line 505
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto byte[] int byte[] byte[] int int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 19
        42: .line 506
            aload 8 /* Ke */
            ifnull 44
        43: .line 507
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        44: .line 509
      StackMap locals: sun.security.krb5.internal.crypto.dk.AesSha2DkCrypto 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 46
        45: .line 510
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        46: .line 512
      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.AesSha2DkCrypto this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   47     0               this  Lsun/security/krb5/internal/crypto/dk/AesSha2DkCrypto;
            0   47     1            baseKey  [B
            0   47     2              usage  I
            0   47     3               ivec  [B
            0   47     4         ciphertext  [B
            0   47     5              start  I
            0   47     6                len  I
            0   47     7  confounder_exists  Z
            1   47     8                 Ke  [B
            2   47     9                 Ki  [B
            4   41    10             cipher  Ljavax/crypto/Cipher;
            5   41    11          secretKey  Ljavax/crypto/spec/SecretKeySpec;
            6   41    12              encIv  Ljavax/crypto/spec/IvParameterSpec;
            8   41    13          plaintext  [B
           10   41    14                msg  [B
           12   41    15     calculatedHmac  [B
           13   41    16         hmacOffset  I
           14   41    17        cksumFailed  Z
           16   22    18                  i  I
           26   35    18             output  [B
      Exception table:
        from    to  target  type
           2    30      41  any
          35    36      41  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 521
            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 523
            iload 3 /* keyLength */
            sipush 128
            if_icmpne 3
         2: .line 524
            ldc "PBKDF2WithHmacSHA256"
            goto 4
      StackMap locals: javax.crypto.spec.PBEKeySpec
      StackMap stack:
         3: ldc "PBKDF2WithHmacSHA384"
         4: .line 523
      StackMap locals:
      StackMap stack: java.lang.String
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
         5: .line 522
            astore 5 /* skf */
        start local 5 // javax.crypto.SecretKeyFactory skf
         6: .line 525
            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
         7: .line 526
            aload 6 /* key */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            astore 7 /* result */
        start local 7 // byte[] result
         8: .line 528
            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    9     0     secret  [C
            0    9     1       salt  [B
            0    9     2      count  I
            0    9     3  keyLength  I
            1    9     4    keySpec  Ljavax/crypto/spec/PBEKeySpec;
            6    9     5        skf  Ljavax/crypto/SecretKeyFactory;
            7    9     6        key  Ljavax/crypto/SecretKey;
            8    9     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 532
            iconst_0
            istore 3 /* retVal */
        start local 3 // int retVal
         1: .line 533
            iload 2 /* size */
            iconst_1
            isub
            bipush 8
            imul
            istore 4 /* shifter */
        start local 4 // int shifter
         2: .line 534
            goto 7
         3: .line 535
      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 536
            iinc 4 /* shifter */ -8
         5: .line 537
            iinc 1 /* pos */ 1
         6: .line 538
            iinc 2 /* size */ -1
         7: .line 534
      StackMap locals:
      StackMap stack:
            iload 2 /* size */
            ifgt 3
         8: .line 540
            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: "AesSha2DkCrypto.java"