public abstract class sun.security.krb5.internal.crypto.dk.DkCrypto
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: sun.security.krb5.internal.crypto.dk.DkCrypto
  super_class: java.lang.Object
{
  protected static final boolean debug;
    descriptor: Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final byte[] KERBEROS_CONSTANT;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 62
            bipush 8
            newarray 8
            dup
            iconst_0
            bipush 107
            bastore
            dup
            iconst_1
            bipush 101
            bastore
            dup
            iconst_2
            bipush 114
            bastore
            dup
            iconst_3
            bipush 98
            bastore
            dup
            iconst_4
            bipush 101
            bastore
            dup
            iconst_5
            bipush 114
            bastore
            dup
            bipush 6
            bipush 111
            bastore
            dup
            bipush 7
            bipush 115
            bastore
         1: .line 61
            putstatic sun.security.krb5.internal.crypto.dk.DkCrypto.KERBEROS_CONSTANT:[B
         2: .line 62
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;

  protected abstract int getKeySeedLength();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract byte[] randomToKey(byte[]);
    descriptor: ([B)[B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      in    

  protected abstract javax.crypto.Cipher getCipher(byte[], byte[], int);
    descriptor: ([B[BI)Ljavax/crypto/Cipher;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      key   
      ivec  
      mode  

  public abstract int getChecksumLength();
    descriptor: ()I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  protected abstract byte[] getHmac(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
           Name  Flags
      key        
      plaintext  

  public byte[] encrypt(byte[], int, byte[], byte[], byte[], int, int);
    descriptor: ([BI[B[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=22, args_size=8
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto 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 98
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 99
            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 100
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 99
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 103
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* Ke */
        start local 8 // byte[] Ke
         5: .line 104
            aconst_null
            astore 9 /* Ki */
        start local 9 // byte[] Ki
         6: .line 109
            iconst_5
            newarray 8
            astore 10 /* constant */
        start local 10 // byte[] constant
         7: .line 110
            aload 10 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         8: .line 111
            aload 10 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         9: .line 112
            aload 10 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
        10: .line 113
            aload 10 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
        11: .line 115
            aload 10 /* constant */
            iconst_4
            bipush -86
            bastore
        12: .line 117
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 10 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
            astore 8 /* Ke */
        13: .line 131
            aload 0 /* this */
            aload 8 /* Ke */
            aload 3 /* ivec */
            iconst_1
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
            astore 11 /* encCipher */
        start local 11 // javax.crypto.Cipher encCipher
        14: .line 132
            aload 11 /* encCipher */
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 12 /* blockSize */
        start local 12 // int blockSize
        15: .line 133
            iload 12 /* blockSize */
            invokestatic sun.security.krb5.Confounder.bytes:(I)[B
            astore 13 /* confounder */
        start local 13 // byte[] confounder
        16: .line 135
            aload 0 /* this */
            aload 13 /* confounder */
            arraylength
            iload 7 /* len */
            iadd
            iload 12 /* blockSize */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.roundup:(II)I
            istore 14 /* plainSize */
        start local 14 // int plainSize
        17: .line 144
            iload 14 /* plainSize */
            newarray 8
            astore 15 /* toBeEncrypted */
        start local 15 // byte[] toBeEncrypted
        18: .line 145
            aload 13 /* confounder */
            iconst_0
            aload 15 /* toBeEncrypted */
        19: .line 146
            iconst_0
            aload 13 /* confounder */
            arraylength
        20: .line 145
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        21: .line 147
            aload 5 /* plaintext */
            iload 6 /* start */
            aload 15 /* toBeEncrypted */
        22: .line 148
            aload 13 /* confounder */
            arraylength
            iload 7 /* len */
        23: .line 147
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        24: .line 151
            aload 15 /* toBeEncrypted */
            aload 13 /* confounder */
            arraylength
            iload 7 /* len */
            iadd
            iload 14 /* plainSize */
        25: .line 152
            iconst_0
        26: .line 151
            invokestatic java.util.Arrays.fill:([BIIB)V
        27: .line 154
            aload 11 /* encCipher */
            iload 14 /* plainSize */
            invokevirtual javax.crypto.Cipher.getOutputSize:(I)I
            istore 16 /* cipherSize */
        start local 16 // int cipherSize
        28: .line 155
            iload 16 /* cipherSize */
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
            iadd
            istore 17 /* ccSize */
        start local 17 // int ccSize
        29: .line 157
            iload 17 /* ccSize */
            newarray 8
            astore 18 /* ciphertext */
        start local 18 // byte[] ciphertext
        30: .line 159
            aload 11 /* encCipher */
            aload 15 /* toBeEncrypted */
            iconst_0
            iload 14 /* plainSize */
            aload 18 /* ciphertext */
            iconst_0
            invokevirtual javax.crypto.Cipher.doFinal:([BII[BI)I
            pop
        31: .line 164
            aload 4 /* new_ivec */
            ifnull 35
            aload 4 /* new_ivec */
            arraylength
            iload 12 /* blockSize */
            if_icmpne 35
        32: .line 165
            aload 18 /* ciphertext */
            iload 16 /* cipherSize */
            iload 12 /* blockSize */
            isub
        33: .line 166
            aload 4 /* new_ivec */
            iconst_0
            iload 12 /* blockSize */
        34: .line 165
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        35: .line 173
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int int byte[]
      StackMap stack:
            aload 10 /* constant */
            iconst_4
            bipush 85
            bastore
        36: .line 174
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 10 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
            astore 9 /* Ki */
        37: .line 182
            aload 0 /* this */
            aload 9 /* Ki */
            aload 15 /* toBeEncrypted */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getHmac:([B[B)[B
            astore 19 /* hmac */
        start local 19 // byte[] hmac
        38: .line 191
            aload 19 /* hmac */
            iconst_0
            aload 18 /* ciphertext */
            iload 16 /* cipherSize */
        39: .line 192
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
        40: .line 191
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        41: .line 193
            aload 18 /* ciphertext */
            astore 21
        42: .line 195
            aload 8 /* Ke */
            ifnull 44
        43: .line 196
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        44: .line 198
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int int byte[] byte[] top byte[]
      StackMap stack:
            aload 9 /* Ki */
            ifnull 46
        45: .line 199
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        46: .line 193
      StackMap locals:
      StackMap stack:
            aload 21
            areturn
        end local 19 // byte[] hmac
        end local 18 // byte[] ciphertext
        end local 17 // int ccSize
        end local 16 // int cipherSize
        end local 15 // byte[] toBeEncrypted
        end local 14 // int plainSize
        end local 13 // byte[] confounder
        end local 12 // int blockSize
        end local 11 // javax.crypto.Cipher encCipher
        end local 10 // byte[] constant
        47: .line 194
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 20
        48: .line 195
            aload 8 /* Ke */
            ifnull 50
        49: .line 196
            aload 8 /* Ke */
            iconst_0
            aload 8 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        50: .line 198
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[] top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 9 /* Ki */
            ifnull 52
        51: .line 199
            aload 9 /* Ki */
            iconst_0
            aload 9 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        52: .line 201
      StackMap locals:
      StackMap stack:
            aload 20
            athrow
        end local 9 // byte[] Ki
        end local 8 // byte[] Ke
        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.DkCrypto this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   53     0           this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            0   53     1        baseKey  [B
            0   53     2          usage  I
            0   53     3           ivec  [B
            0   53     4       new_ivec  [B
            0   53     5      plaintext  [B
            0   53     6          start  I
            0   53     7            len  I
            5   53     8             Ke  [B
            6   53     9             Ki  [B
            7   47    10       constant  [B
           14   47    11      encCipher  Ljavax/crypto/Cipher;
           15   47    12      blockSize  I
           16   47    13     confounder  [B
           17   47    14      plainSize  I
           18   47    15  toBeEncrypted  [B
           28   47    16     cipherSize  I
           29   47    17         ccSize  I
           30   47    18     ciphertext  [B
           38   47    19           hmac  [B
      Exception table:
        from    to  target  type
           6    42      47  any
    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=6, locals=11, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto 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 224
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 3 /* ivec */
            iconst_1
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
            astore 7 /* encCipher */
        start local 7 // javax.crypto.Cipher encCipher
         1: .line 225
            aload 7 /* encCipher */
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 8 /* blockSize */
        start local 8 // int blockSize
         2: .line 227
            iload 6 /* len */
            iload 8 /* blockSize */
            irem
            ifeq 8
         3: .line 228
            new java.security.GeneralSecurityException
            dup
         4: .line 229
            new java.lang.StringBuilder
            dup
            ldc "length of data to be encrypted ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 6 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         5: .line 230
            ldc ") is not a multiple of the blocksize ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 8 /* blockSize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 229
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 228
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 233
      StackMap locals: javax.crypto.Cipher int
      StackMap stack:
            aload 7 /* encCipher */
            iload 6 /* len */
            invokevirtual javax.crypto.Cipher.getOutputSize:(I)I
            istore 9 /* cipherSize */
        start local 9 // int cipherSize
         9: .line 234
            iload 9 /* cipherSize */
            newarray 8
            astore 10 /* ciphertext */
        start local 10 // byte[] ciphertext
        10: .line 236
            aload 7 /* encCipher */
            aload 4 /* plaintext */
            iconst_0
            iload 6 /* len */
            aload 10 /* ciphertext */
            iconst_0
            invokevirtual javax.crypto.Cipher.doFinal:([BII[BI)I
            pop
        11: .line 237
            aload 10 /* ciphertext */
            areturn
        end local 10 // byte[] ciphertext
        end local 9 // int cipherSize
        end local 8 // int blockSize
        end local 7 // javax.crypto.Cipher encCipher
        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.DkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            0   12     1     baseKey  [B
            0   12     2       usage  I
            0   12     3        ivec  [B
            0   12     4   plaintext  [B
            0   12     5       start  I
            0   12     6         len  I
            1   12     7   encCipher  Ljavax/crypto/Cipher;
            2   12     8   blockSize  I
            9   12     9  cipherSize  I
           10   12    10  ciphertext  [B
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
           Name  Flags
      baseKey    
      usage      
      ivec       
      plaintext  
      start      
      len        

  public byte[] decryptRaw(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto 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 259
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 3 /* ivec */
            iconst_2
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
            astore 7 /* decCipher */
        start local 7 // javax.crypto.Cipher decCipher
         1: .line 261
            aload 7 /* decCipher */
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 8 /* blockSize */
        start local 8 // int blockSize
         2: .line 263
            iload 6 /* len */
            iload 8 /* blockSize */
            irem
            ifeq 8
         3: .line 264
            new java.security.GeneralSecurityException
            dup
         4: .line 265
            new java.lang.StringBuilder
            dup
            ldc "length of data to be decrypted ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 6 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         5: .line 266
            ldc ") is not a multiple of the blocksize ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 8 /* blockSize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 265
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 264
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 269
      StackMap locals: javax.crypto.Cipher int
      StackMap stack:
            aload 7 /* decCipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 6 /* len */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 9 /* decrypted */
        start local 9 // byte[] decrypted
         9: .line 276
            aload 9 /* decrypted */
            areturn
        end local 9 // byte[] decrypted
        end local 8 // int blockSize
        end local 7 // javax.crypto.Cipher decCipher
        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.DkCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            0   10     1     baseKey  [B
            0   10     2       usage  I
            0   10     3        ivec  [B
            0   10     4  ciphertext  [B
            0   10     5       start  I
            0   10     6         len  I
            1   10     7   decCipher  Ljavax/crypto/Cipher;
            2   10     8   blockSize  I
            9   10     9   decrypted  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
            Name  Flags
      baseKey     
      usage       
      ivec        
      ciphertext  
      start       
      len         

  public byte[] decrypt(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=20, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto 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 286
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 287
            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 288
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 287
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 291
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 7 /* Ke */
        start local 7 // byte[] Ke
         5: .line 292
            aconst_null
            astore 8 /* Ki */
        start local 8 // byte[] Ki
         6: .line 296
            iconst_5
            newarray 8
            astore 9 /* constant */
        start local 9 // byte[] constant
         7: .line 297
            aload 9 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         8: .line 298
            aload 9 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         9: .line 299
            aload 9 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
        10: .line 300
            aload 9 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
        11: .line 302
            aload 9 /* constant */
            iconst_4
            bipush -86
            bastore
        12: .line 304
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 9 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
            astore 7 /* Ke */
        13: .line 317
            aload 0 /* this */
            aload 7 /* Ke */
            aload 3 /* ivec */
            iconst_2
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
            astore 10 /* decCipher */
        start local 10 // javax.crypto.Cipher decCipher
        14: .line 318
            aload 10 /* decCipher */
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 11 /* blockSize */
        start local 11 // int blockSize
        15: .line 321
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
            istore 12 /* cksumSize */
        start local 12 // int cksumSize
        16: .line 322
            iload 6 /* len */
            iload 12 /* cksumSize */
            isub
            istore 13 /* cipherSize */
        start local 13 // int cipherSize
        17: .line 323
            aload 10 /* decCipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 13 /* cipherSize */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 14 /* decrypted */
        start local 14 // byte[] decrypted
        18: .line 333
            aload 9 /* constant */
            iconst_4
            bipush 85
            bastore
        19: .line 334
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 9 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
            astore 8 /* Ki */
        20: .line 342
            aload 0 /* this */
            aload 8 /* Ki */
            aload 14 /* decrypted */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getHmac:([B[B)[B
            astore 15 /* calculatedHmac */
        start local 15 // byte[] calculatedHmac
        21: .line 351
            iconst_0
            istore 16 /* cksumFailed */
        start local 16 // boolean cksumFailed
        22: .line 352
            aload 15 /* calculatedHmac */
            arraylength
            iload 12 /* cksumSize */
            if_icmplt 30
        23: .line 353
            iconst_0
            istore 17 /* i */
        start local 17 // int i
        24: goto 29
        25: .line 354
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int int int byte[] byte[] int int
      StackMap stack:
            aload 15 /* calculatedHmac */
            iload 17 /* i */
            baload
            aload 4 /* ciphertext */
            iload 13 /* cipherSize */
            iload 17 /* i */
            iadd
            baload
            if_icmpeq 28
        26: .line 355
            iconst_1
            istore 16 /* cksumFailed */
        27: .line 356
            goto 30
        28: .line 353
      StackMap locals:
      StackMap stack:
            iinc 17 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 17 /* i */
            iload 12 /* cksumSize */
            if_icmplt 25
        end local 17 // int i
        30: .line 361
      StackMap locals:
      StackMap stack:
            iload 16 /* cksumFailed */
            ifeq 32
        31: .line 362
            new java.security.GeneralSecurityException
            dup
            ldc "Checksum failed"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 367
      StackMap locals:
      StackMap stack:
            aload 3 /* ivec */
            ifnull 36
            aload 3 /* ivec */
            arraylength
            iload 11 /* blockSize */
            if_icmpne 36
        33: .line 368
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 13 /* cipherSize */
            iadd
            iload 11 /* blockSize */
            isub
        34: .line 369
            aload 3 /* ivec */
            iconst_0
            iload 11 /* blockSize */
        35: .line 368
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        36: .line 377
      StackMap locals:
      StackMap stack:
            aload 14 /* decrypted */
            arraylength
            iload 11 /* blockSize */
            isub
            newarray 8
            astore 17 /* plaintext */
        start local 17 // byte[] plaintext
        37: .line 378
            aload 14 /* decrypted */
            iload 11 /* blockSize */
            aload 17 /* plaintext */
        38: .line 379
            iconst_0
            aload 17 /* plaintext */
            arraylength
        39: .line 378
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        40: .line 380
            aload 17 /* plaintext */
            astore 19
        41: .line 382
            aload 7 /* Ke */
            ifnull 43
        42: .line 383
            aload 7 /* Ke */
            iconst_0
            aload 7 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        43: .line 385
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int int int byte[] byte[] int byte[] top byte[]
      StackMap stack:
            aload 8 /* Ki */
            ifnull 45
        44: .line 386
            aload 8 /* Ki */
            iconst_0
            aload 8 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        45: .line 380
      StackMap locals:
      StackMap stack:
            aload 19
            areturn
        end local 17 // byte[] plaintext
        end local 16 // boolean cksumFailed
        end local 15 // byte[] calculatedHmac
        end local 14 // byte[] decrypted
        end local 13 // int cipherSize
        end local 12 // int cksumSize
        end local 11 // int blockSize
        end local 10 // javax.crypto.Cipher decCipher
        end local 9 // byte[] constant
        46: .line 381
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 18
        47: .line 382
            aload 7 /* Ke */
            ifnull 49
        48: .line 383
            aload 7 /* Ke */
            iconst_0
            aload 7 /* Ke */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        49: .line 385
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[] top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 8 /* Ki */
            ifnull 51
        50: .line 386
            aload 8 /* Ki */
            iconst_0
            aload 8 /* Ki */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        51: .line 388
      StackMap locals:
      StackMap stack:
            aload 18
            athrow
        end local 8 // byte[] Ki
        end local 7 // byte[] Ke
        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.DkCrypto this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   52     0            this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            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
            5   52     7              Ke  [B
            6   52     8              Ki  [B
            7   46     9        constant  [B
           14   46    10       decCipher  Ljavax/crypto/Cipher;
           15   46    11       blockSize  I
           16   46    12       cksumSize  I
           17   46    13      cipherSize  I
           18   46    14       decrypted  [B
           21   46    15  calculatedHmac  [B
           22   46    16     cksumFailed  Z
           24   30    17               i  I
           37   46    17       plaintext  [B
      Exception table:
        from    to  target  type
           6    41      46  any
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
            Name  Flags
      baseKey     
      usage       
      ivec        
      ciphertext  
      start       
      len         

  int roundup(int, int);
    descriptor: (II)I
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
        start local 1 // int n
        start local 2 // int blocksize
         0: .line 393
            iload 1 /* n */
            iload 2 /* blocksize */
            iadd
            iconst_1
            isub
            iload 2 /* blocksize */
            idiv
            iload 2 /* blocksize */
            imul
            ireturn
        end local 2 // int blocksize
        end local 1 // int n
        end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            0    1     1          n  I
            0    1     2  blocksize  I
    MethodParameters:
           Name  Flags
      n          
      blocksize  

  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.DkCrypto 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 399
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 400
            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 401
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 400
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 405
      StackMap locals:
      StackMap stack:
            iconst_5
            newarray 8
            astore 6 /* constant */
        start local 6 // byte[] constant
         5: .line 406
            aload 6 /* constant */
            iconst_0
            iload 2 /* usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         6: .line 407
            aload 6 /* constant */
            iconst_1
            iload 2 /* usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         7: .line 408
            aload 6 /* constant */
            iconst_2
            iload 2 /* usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         8: .line 409
            aload 6 /* constant */
            iconst_3
            iload 2 /* usage */
            sipush 255
            iand
            i2b
            bastore
         9: .line 411
            aload 6 /* constant */
            iconst_4
            bipush -103
            bastore
        10: .line 413
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 6 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
            astore 7 /* Kc */
        start local 7 // byte[] Kc
        11: .line 425
            aload 0 /* this */
            aload 7 /* Kc */
            aload 3 /* input */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getHmac:([B[B)[B
            astore 8 /* hmac */
        start local 8 // byte[] hmac
        12: .line 429
            aload 8 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
            if_icmpne 16
        13: .line 430
            aload 8 /* hmac */
            astore 11
        14: .line 440
            aload 7 /* Kc */
            iconst_0
            aload 7 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        15: .line 430
            aload 11
            areturn
        16: .line 431
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            aload 8 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
            if_icmple 22
        17: .line 432
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
            newarray 8
            astore 9 /* buf */
        start local 9 // byte[] buf
        18: .line 433
            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 434
            aload 9 /* buf */
            astore 11
        20: .line 440
            aload 7 /* Kc */
            iconst_0
            aload 7 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        21: .line 434
            aload 11
            areturn
        end local 9 // byte[] buf
        22: .line 436
      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 437
            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.DkCrypto.getChecksumLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 436
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // byte[] hmac
        25: .line 439
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] int int byte[] byte[]
      StackMap stack: java.lang.Throwable
            astore 10
        26: .line 440
            aload 7 /* Kc */
            iconst_0
            aload 7 /* Kc */
            arraylength
            iconst_0
            invokestatic java.util.Arrays.fill:([BIIB)V
        27: .line 441
            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.DkCrypto this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            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      

  byte[] dk(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] constant
         0: .line 447
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* constant */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dr:([B[B)[B
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.randomToKey:([B)[B
            areturn
        end local 2 // byte[] constant
        end local 1 // byte[] key
        end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            0    1     1       key  [B
            0    1     2  constant  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
          Name  Flags
      key       
      constant  

  private byte[] dr(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] constant
         0: .line 484
            aload 0 /* this */
            aload 1 /* key */
            aconst_null
            iconst_1
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
            astore 3 /* encCipher */
        start local 3 // javax.crypto.Cipher encCipher
         1: .line 485
            aload 3 /* encCipher */
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 4 /* blocksize */
        start local 4 // int blocksize
         2: .line 487
            aload 2 /* constant */
            arraylength
            iload 4 /* blocksize */
            if_icmpeq 4
         3: .line 488
            aload 2 /* constant */
            iload 4 /* blocksize */
            bipush 8
            imul
            invokestatic sun.security.krb5.internal.crypto.dk.DkCrypto.nfold:([BI)[B
            astore 2 /* constant */
         4: .line 490
      StackMap locals: javax.crypto.Cipher int
      StackMap stack:
            aload 2 /* constant */
            astore 5 /* toBeEncrypted */
        start local 5 // byte[] toBeEncrypted
         5: .line 492
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getKeySeedLength:()I
            iconst_3
            ishr
            istore 6 /* keybytes */
        start local 6 // int keybytes
         6: .line 493
            iload 6 /* keybytes */
            newarray 8
            astore 7 /* rawkey */
        start local 7 // byte[] rawkey
         7: .line 497
            iconst_0
            istore 8 /* n */
        start local 8 // int n
         8: .line 498
            goto 16
         9: .line 504
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int
      StackMap stack:
            aload 3 /* encCipher */
            aload 5 /* toBeEncrypted */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 10 /* cipherBlock */
        start local 10 // byte[] cipherBlock
        10: .line 510
            iload 6 /* keybytes */
            iload 8 /* n */
            isub
            aload 10 /* cipherBlock */
            arraylength
            if_icmpgt 11
            iload 6 /* keybytes */
            iload 8 /* n */
            isub
            goto 12
        11: .line 511
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int top byte[]
      StackMap stack:
            aload 10 /* cipherBlock */
            arraylength
        12: .line 510
      StackMap locals:
      StackMap stack: int
            istore 9 /* len */
        start local 9 // int len
        13: .line 515
            aload 10 /* cipherBlock */
            iconst_0
            aload 7 /* rawkey */
            iload 8 /* n */
            iload 9 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 516
            iload 8 /* n */
            iload 9 /* len */
            iadd
            istore 8 /* n */
        15: .line 517
            aload 10 /* cipherBlock */
            astore 5 /* toBeEncrypted */
        end local 10 // byte[] cipherBlock
        end local 9 // int len
        16: .line 498
      StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int
      StackMap stack:
            iload 8 /* n */
            iload 6 /* keybytes */
            if_icmplt 9
        17: .line 519
            aload 7 /* rawkey */
            areturn
        end local 8 // int n
        end local 7 // byte[] rawkey
        end local 6 // int keybytes
        end local 5 // byte[] toBeEncrypted
        end local 4 // int blocksize
        end local 3 // javax.crypto.Cipher encCipher
        end local 2 // byte[] constant
        end local 1 // byte[] key
        end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lsun/security/krb5/internal/crypto/dk/DkCrypto;
            0   18     1            key  [B
            0   18     2       constant  [B
            1   18     3      encCipher  Ljavax/crypto/Cipher;
            2   18     4      blocksize  I
            5   18     5  toBeEncrypted  [B
            6   18     6       keybytes  I
            7   18     7         rawkey  [B
            8   18     8              n  I
           13   16     9            len  I
           10   16    10    cipherBlock  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
          Name  Flags
      key       
      constant  

  static byte[] nfold(byte[], int);
    descriptor: ([BI)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=13, args_size=2
        start local 0 // byte[] in
        start local 1 // int outbits
         0: .line 544
            aload 0 /* in */
            arraylength
            istore 2 /* inbits */
        start local 2 // int inbits
         1: .line 545
            iload 1 /* outbits */
            iconst_3
            ishr
            istore 1 /* outbits */
         2: .line 549
            iload 1 /* outbits */
            istore 3 /* a */
        start local 3 // int a
         3: .line 550
            iload 2 /* inbits */
            istore 4 /* b */
        start local 4 // int b
         4: .line 552
            goto 8
         5: .line 553
      StackMap locals: int int int
      StackMap stack:
            iload 4 /* b */
            istore 5 /* c */
        start local 5 // int c
         6: .line 554
            iload 3 /* a */
            iload 4 /* b */
            irem
            istore 4 /* b */
         7: .line 555
            iload 5 /* c */
            istore 3 /* a */
        end local 5 // int c
         8: .line 552
      StackMap locals:
      StackMap stack:
            iload 4 /* b */
            ifne 5
         9: .line 557
            iload 1 /* outbits */
            iload 2 /* inbits */
            imul
            iload 3 /* a */
            idiv
            istore 6 /* lcm */
        start local 6 // int lcm
        10: .line 566
            iload 1 /* outbits */
            newarray 8
            astore 7 /* out */
        start local 7 // byte[] out
        11: .line 567
            aload 7 /* out */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        12: .line 569
            iconst_0
            istore 8 /* thisbyte */
        start local 8 // int thisbyte
        13: .line 574
            iload 6 /* lcm */
            iconst_1
            isub
            istore 10 /* i */
        start local 10 // int i
        14: goto 35
        15: .line 577
      StackMap locals: byte[] int int int int top int byte[] int top int
      StackMap stack:
            iload 2 /* inbits */
            iconst_3
            ishl
            iconst_1
            isub
        16: .line 579
            iload 2 /* inbits */
            iconst_3
            ishl
            bipush 13
            iadd
            iload 10 /* i */
            iload 2 /* inbits */
            idiv
            imul
        17: .line 577
            iadd
        18: .line 581
            iload 2 /* inbits */
            iload 10 /* i */
            iload 2 /* inbits */
            irem
            isub
            iconst_3
            ishl
        19: .line 576
            iadd
        20: .line 581
            iload 2 /* inbits */
            iconst_3
            ishl
        21: .line 576
            irem
            istore 9 /* msbit */
        start local 9 // int msbit
        22: .line 586
            aload 0 /* in */
            iload 2 /* inbits */
            iconst_1
            isub
            iload 9 /* msbit */
            iconst_3
            iushr
            isub
            iload 2 /* inbits */
            irem
            baload
            sipush 255
            iand
            bipush 8
            ishl
        23: .line 587
            aload 0 /* in */
            iload 2 /* inbits */
            iload 9 /* msbit */
            iconst_3
            iushr
            isub
            iload 2 /* inbits */
            irem
            baload
            sipush 255
            iand
        24: .line 586
            ior
        25: .line 588
            iload 9 /* msbit */
            bipush 7
            iand
            iconst_1
            iadd
        26: .line 586
            iushr
        27: .line 588
            sipush 255
        28: .line 586
            iand
            istore 11 /* bval */
        start local 11 // int bval
        29: .line 597
            iload 8 /* thisbyte */
            iload 11 /* bval */
            iadd
            istore 8 /* thisbyte */
        30: .line 601
            aload 7 /* out */
            iload 10 /* i */
            iload 1 /* outbits */
            irem
            baload
            sipush 255
            iand
            istore 12 /* oval */
        start local 12 // int oval
        31: .line 602
            iload 8 /* thisbyte */
            iload 12 /* oval */
            iadd
            istore 8 /* thisbyte */
        32: .line 603
            aload 7 /* out */
            iload 10 /* i */
            iload 1 /* outbits */
            irem
            iload 8 /* thisbyte */
            sipush 255
            iand
            i2b
            bastore
        33: .line 614
            iload 8 /* thisbyte */
            bipush 8
            iushr
            istore 8 /* thisbyte */
        34: .line 574
            iinc 10 /* i */ -1
        end local 12 // int oval
        end local 11 // int bval
        end local 9 // int msbit
      StackMap locals:
      StackMap stack:
        35: iload 10 /* i */
            ifge 15
        36: .line 622
            iload 8 /* thisbyte */
            ifeq 43
        37: .line 623
            iload 1 /* outbits */
            iconst_1
            isub
            istore 10 /* i */
            goto 42
        38: .line 625
      StackMap locals:
      StackMap stack:
            iload 8 /* thisbyte */
            aload 7 /* out */
            iload 10 /* i */
            baload
            sipush 255
            iand
            iadd
            istore 8 /* thisbyte */
        39: .line 626
            aload 7 /* out */
            iload 10 /* i */
            iload 8 /* thisbyte */
            sipush 255
            iand
            i2b
            bastore
        40: .line 629
            iload 8 /* thisbyte */
            bipush 8
            iushr
            istore 8 /* thisbyte */
        41: .line 623
            iinc 10 /* i */ -1
      StackMap locals:
      StackMap stack:
        42: iload 10 /* i */
            ifge 38
        43: .line 633
      StackMap locals:
      StackMap stack:
            aload 7 /* out */
            areturn
        end local 10 // int i
        end local 8 // int thisbyte
        end local 7 // byte[] out
        end local 6 // int lcm
        end local 4 // int b
        end local 3 // int a
        end local 2 // int inbits
        end local 1 // int outbits
        end local 0 // byte[] in
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   44     0        in  [B
            0   44     1   outbits  I
            1   44     2    inbits  I
            3   44     3         a  I
            4   44     4         b  I
            6    8     5         c  I
           10   44     6       lcm  I
           11   44     7       out  [B
           13   44     8  thisbyte  I
           22   35     9     msbit  I
           14   44    10         i  I
           29   35    11      bval  I
           31   35    12      oval  I
    MethodParameters:
         Name  Flags
      in       
      outbits  

  static java.lang.String bytesToString(byte[]);
    descriptor: ([B)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // byte[] digest
         0: .line 639
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 1 /* digestString */
        start local 1 // java.lang.StringBuffer digestString
         1: .line 641
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 12
         3: .line 642
      StackMap locals: java.lang.StringBuffer int
      StackMap stack:
            aload 0 /* digest */
            iload 2 /* i */
            baload
            sipush 255
            iand
            bipush 16
            if_icmpge 8
         4: .line 643
            aload 1 /* digestString */
            new java.lang.StringBuilder
            dup
            ldc "0"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 644
            aload 0 /* digest */
            iload 2 /* i */
            baload
            sipush 255
            iand
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 643
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         7: .line 645
            goto 11
         8: .line 646
      StackMap locals:
      StackMap stack:
            aload 1 /* digestString */
         9: .line 647
            aload 0 /* digest */
            iload 2 /* i */
            baload
            sipush 255
            iand
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
        10: .line 646
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        11: .line 641
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 2 /* i */
            aload 0 /* digest */
            arraylength
            if_icmplt 3
        end local 2 // int i
        13: .line 650
            aload 1 /* digestString */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuffer digestString
        end local 0 // byte[] digest
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0        digest  [B
            1   14     1  digestString  Ljava/lang/StringBuffer;
            2   13     2             i  I
    MethodParameters:
        Name  Flags
      digest  

  private static byte[] binaryStringToBytes(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.lang.String str
         0: .line 654
            aload 0 /* str */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 1 /* usageStr */
        start local 1 // char[] usageStr
         1: .line 655
            aload 1 /* usageStr */
            arraylength
            iconst_2
            idiv
            newarray 8
            astore 2 /* usage */
        start local 2 // byte[] usage
         2: .line 656
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 8
         4: .line 657
      StackMap locals: char[] byte[] int
      StackMap stack:
            new java.lang.String
            dup
            aload 1 /* usageStr */
            iload 3 /* i */
            iconst_2
            imul
            iconst_1
            invokespecial java.lang.String.<init>:([CII)V
            bipush 16
            invokestatic java.lang.Byte.parseByte:(Ljava/lang/String;I)B
            istore 4 /* a */
        start local 4 // byte a
         5: .line 658
            new java.lang.String
            dup
            aload 1 /* usageStr */
            iload 3 /* i */
            iconst_2
            imul
            iconst_1
            iadd
            iconst_1
            invokespecial java.lang.String.<init>:([CII)V
            bipush 16
            invokestatic java.lang.Byte.parseByte:(Ljava/lang/String;I)B
            istore 5 /* b */
        start local 5 // byte b
         6: .line 659
            aload 2 /* usage */
            iload 3 /* i */
            iload 4 /* a */
            iconst_4
            ishl
            iload 5 /* b */
            ior
            i2b
            bastore
        end local 5 // byte b
        end local 4 // byte a
         7: .line 656
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            aload 2 /* usage */
            arraylength
            if_icmplt 4
        end local 3 // int i
         9: .line 661
            aload 2 /* usage */
            areturn
        end local 2 // byte[] usage
        end local 1 // char[] usageStr
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0       str  Ljava/lang/String;
            1   10     1  usageStr  [C
            2   10     2     usage  [B
            3    9     3         i  I
            5    7     4         a  B
            6    7     5         b  B
    MethodParameters:
      Name  Flags
      str   

  static void traceOutput(java.lang.String, byte[], int, int);
    descriptor: (Ljava/lang/String;[BII)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // java.lang.String traceTag
        start local 1 // byte[] output
        start local 2 // int offset
        start local 3 // int len
         0: .line 667
            new java.io.ByteArrayOutputStream
            dup
            iload 3 /* len */
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 4 /* out */
        start local 4 // java.io.ByteArrayOutputStream out
         1: .line 668
            new sun.misc.HexDumpEncoder
            dup
            invokespecial sun.misc.HexDumpEncoder.<init>:()V
         2: .line 669
            new java.io.ByteArrayInputStream
            dup
            aload 1 /* output */
            iload 2 /* offset */
            iload 3 /* len */
            invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
            aload 4 /* out */
         3: .line 668
            invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
         4: .line 671
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 0 /* traceTag */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* out */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 4 // java.io.ByteArrayOutputStream out
         5: .line 672
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Exception
         6: pop
         7: .line 674
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] output
        end local 0 // java.lang.String traceTag
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0  traceTag  Ljava/lang/String;
            0    8     1    output  [B
            0    8     2    offset  I
            0    8     3       len  I
            1    5     4       out  Ljava/io/ByteArrayOutputStream;
      Exception table:
        from    to  target  type
           0     5       6  Class java.lang.Exception
    MethodParameters:
          Name  Flags
      traceTag  
      output    
      offset    
      len       

  static byte[] charToUtf8(char[]);
    descriptor: ([C)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // char[] chars
         0: .line 679
            ldc "UTF-8"
            invokestatic java.nio.charset.Charset.forName:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            astore 1 /* utf8 */
        start local 1 // java.nio.charset.Charset utf8
         1: .line 681
            aload 0 /* chars */
            invokestatic java.nio.CharBuffer.wrap:([C)Ljava/nio/CharBuffer;
            astore 2 /* cb */
        start local 2 // java.nio.CharBuffer cb
         2: .line 682
            aload 1 /* utf8 */
            aload 2 /* cb */
            invokevirtual java.nio.charset.Charset.encode:(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
            astore 3 /* bb */
        start local 3 // java.nio.ByteBuffer bb
         3: .line 683
            aload 3 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 4 /* len */
        start local 4 // int len
         4: .line 684
            iload 4 /* len */
            newarray 8
            astore 5 /* answer */
        start local 5 // byte[] answer
         5: .line 685
            aload 3 /* bb */
            aload 5 /* answer */
            iconst_0
            iload 4 /* len */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         6: .line 686
            aload 5 /* answer */
            areturn
        end local 5 // byte[] answer
        end local 4 // int len
        end local 3 // java.nio.ByteBuffer bb
        end local 2 // java.nio.CharBuffer cb
        end local 1 // java.nio.charset.Charset utf8
        end local 0 // char[] chars
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0   chars  [C
            1    7     1    utf8  Ljava/nio/charset/Charset;
            2    7     2      cb  Ljava/nio/CharBuffer;
            3    7     3      bb  Ljava/nio/ByteBuffer;
            4    7     4     len  I
            5    7     5  answer  [B
    MethodParameters:
       Name  Flags
      chars  

  static byte[] charToUtf16(char[]);
    descriptor: ([C)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // char[] chars
         0: .line 690
            ldc "UTF-16LE"
            invokestatic java.nio.charset.Charset.forName:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            astore 1 /* utf8 */
        start local 1 // java.nio.charset.Charset utf8
         1: .line 692
            aload 0 /* chars */
            invokestatic java.nio.CharBuffer.wrap:([C)Ljava/nio/CharBuffer;
            astore 2 /* cb */
        start local 2 // java.nio.CharBuffer cb
         2: .line 693
            aload 1 /* utf8 */
            aload 2 /* cb */
            invokevirtual java.nio.charset.Charset.encode:(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
            astore 3 /* bb */
        start local 3 // java.nio.ByteBuffer bb
         3: .line 694
            aload 3 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 4 /* len */
        start local 4 // int len
         4: .line 695
            iload 4 /* len */
            newarray 8
            astore 5 /* answer */
        start local 5 // byte[] answer
         5: .line 696
            aload 3 /* bb */
            aload 5 /* answer */
            iconst_0
            iload 4 /* len */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         6: .line 697
            aload 5 /* answer */
            areturn
        end local 5 // byte[] answer
        end local 4 // int len
        end local 3 // java.nio.ByteBuffer bb
        end local 2 // java.nio.CharBuffer cb
        end local 1 // java.nio.charset.Charset utf8
        end local 0 // char[] chars
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0   chars  [C
            1    7     1    utf8  Ljava/nio/charset/Charset;
            2    7     2      cb  Ljava/nio/CharBuffer;
            3    7     3      bb  Ljava/nio/ByteBuffer;
            4    7     4     len  I
            5    7     5  answer  [B
    MethodParameters:
       Name  Flags
      chars  
}
SourceFile: "DkCrypto.java"