public class sun.security.krb5.internal.crypto.dk.ArcFourCrypto 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.ArcFourCrypto
  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 confounderSize;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

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

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

  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 50
            bipush 8
            newarray 8
            putstatic sun.security.krb5.internal.crypto.dk.ArcFourCrypto.ZERO_IV:[B
         1: .line 51
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

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

  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.ArcFourCrypto this
        start local 1 // byte[] in
         0: .line 64
            aload 1 /* in */
            areturn
        end local 1 // byte[] in
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0    1     1    in  [B
    MethodParameters:
      Name  Flags
      in    

  public byte[] stringToKey(char[]);
    descriptor: ([C)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // char[] passwd
         0: .line 69
            aload 0 /* this */
            aload 1 /* passwd */
            aconst_null
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.stringToKey:([C[B)[B
            areturn
        end local 1 // char[] passwd
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0    1     1  passwd  [C
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
        Name  Flags
      passwd  

  private byte[] stringToKey(char[], byte[]);
    descriptor: ([C[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // char[] secret
        start local 2 // byte[] opaque
         0: .line 79
            aload 2 /* opaque */
            ifnull 2
            aload 2 /* opaque */
            arraylength
            ifle 2
         1: .line 80
            new java.lang.RuntimeException
            dup
            ldc "Invalid parameter to stringToKey"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 83
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* passwd */
        start local 3 // byte[] passwd
         3: .line 84
            aconst_null
            astore 4 /* digest */
        start local 4 // byte[] digest
         4: .line 87
            aload 1 /* secret */
            invokestatic sun.security.krb5.internal.crypto.dk.ArcFourCrypto.charToUtf16:([C)[B
            astore 3 /* passwd */
         5: .line 90
            invokestatic sun.security.provider.MD4.getInstance:()Ljava/security/MessageDigest;
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
         6: .line 91
            aload 5 /* md */
            aload 3 /* passwd */
            invokevirtual java.security.MessageDigest.update:([B)V
         7: .line 92
            aload 5 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 4 /* digest */
        end local 5 // java.security.MessageDigest md
         8: .line 93
            goto 17
      StackMap locals: sun.security.krb5.internal.crypto.dk.ArcFourCrypto char[] byte[] byte[] byte[]
      StackMap stack: java.lang.Exception
         9: pop
        10: .line 96
            aload 3 /* passwd */
            ifnull 12
        11: .line 97
            aload 3 /* passwd */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        12: .line 94
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        13: .line 95
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        14: .line 96
            aload 3 /* passwd */
            ifnull 16
        15: .line 97
            aload 3 /* passwd */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        16: .line 99
      StackMap locals: sun.security.krb5.internal.crypto.dk.ArcFourCrypto char[] byte[] byte[] byte[] top java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        17: .line 96
      StackMap locals: sun.security.krb5.internal.crypto.dk.ArcFourCrypto char[] byte[] byte[] byte[]
      StackMap stack:
            aload 3 /* passwd */
            ifnull 19
        18: .line 97
            aload 3 /* passwd */
            iconst_0
            invokestatic java.util.Arrays.fill:([BB)V
        19: .line 101
      StackMap locals:
      StackMap stack:
            aload 4 /* digest */
            areturn
        end local 4 // byte[] digest
        end local 3 // byte[] passwd
        end local 2 // byte[] opaque
        end local 1 // char[] secret
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0    this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   20     1  secret  [C
            0   20     2  opaque  [B
            3   20     3  passwd  [B
            4   20     4  digest  [B
            6    8     5      md  Ljava/security/MessageDigest;
      Exception table:
        from    to  target  type
           4     8       9  Class java.lang.Exception
           4    10      13  any
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
        Name  Flags
      secret  
      opaque  

  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.ArcFourCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] ivec
        start local 3 // int mode
         0: .line 108
            aload 2 /* ivec */
            ifnonnull 2
         1: .line 109
            getstatic sun.security.krb5.internal.crypto.dk.ArcFourCrypto.ZERO_IV:[B
            astore 2 /* ivec */
         2: .line 111
      StackMap locals:
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 4 /* secretKey */
        start local 4 // javax.crypto.spec.SecretKeySpec secretKey
         3: .line 112
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 5 /* cipher */
        start local 5 // javax.crypto.Cipher cipher
         4: .line 113
            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 114
            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 115
            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.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            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.ArcFourCrypto this
         0: .line 119
            bipush 16
            ireturn
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;

  protected byte[] getHmac(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // byte[] key
        start local 2 // byte[] msg
         0: .line 128
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            ldc "HmacMD5"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 3 /* keyKi */
        start local 3 // javax.crypto.SecretKey keyKi
         1: .line 129
            ldc "HmacMD5"
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 4 /* m */
        start local 4 // javax.crypto.Mac m
         2: .line 130
            aload 4 /* m */
            aload 3 /* keyKi */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
         3: .line 133
            aload 4 /* m */
            aload 2 /* msg */
            invokevirtual javax.crypto.Mac.doFinal:([B)[B
            astore 5 /* hash */
        start local 5 // byte[] hash
         4: .line 134
            aload 5 /* hash */
            areturn
        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.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0    5     1    key  [B
            0    5     2    msg  [B
            1    5     3  keyKi  Ljavax/crypto/SecretKey;
            2    5     4      m  Ljavax/crypto/Mac;
            4    5     5   hash  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      key   
      msg   

  public byte[] calculateChecksum(byte[], int, byte[], int, int);
    descriptor: ([BI[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=6
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto 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 148
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 149
            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 150
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 149
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 153
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* Ksign */
        start local 6 // byte[] Ksign
         5: .line 156
            ldc "signaturekey"
            invokevirtual java.lang.String.getBytes:()[B
            astore 7 /* ss */
        start local 7 // byte[] ss
         6: .line 158
            aload 7 /* ss */
            arraylength
            iconst_1
            iadd
            newarray 8
            astore 8 /* new_ss */
        start local 8 // byte[] new_ss
         7: .line 159
            aload 7 /* ss */
            iconst_0
            aload 8 /* new_ss */
            iconst_0
            aload 7 /* ss */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 160
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 8 /* new_ss */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 6 /* Ksign */
        end local 8 // byte[] new_ss
        end local 7 // byte[] ss
         9: .line 161
            goto 15
      StackMap locals: sun.security.krb5.internal.crypto.dk.ArcFourCrypto byte[] int byte[] int int byte[]
      StackMap stack: java.lang.Exception
        10: astore 7 /* e */
        start local 7 // java.lang.Exception e
        11: .line 163
            new java.security.GeneralSecurityException
            dup
            ldc "Calculate Checkum Failed!"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
        12: .line 162
            astore 8 /* gse */
        start local 8 // java.security.GeneralSecurityException gse
        13: .line 164
            aload 8 /* gse */
            aload 7 /* e */
            invokevirtual java.security.GeneralSecurityException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        14: .line 165
            aload 8 /* gse */
            athrow
        end local 8 // java.security.GeneralSecurityException gse
        end local 7 // java.lang.Exception e
        15: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* usage */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getSalt:(I)[B
            astore 7 /* salt */
        start local 7 // byte[] salt
        16: .line 172
            aconst_null
            astore 8 /* messageDigest */
        start local 8 // java.security.MessageDigest messageDigest
        17: .line 174
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 8 /* messageDigest */
        18: .line 175
            goto 24
      StackMap locals: sun.security.krb5.internal.crypto.dk.ArcFourCrypto byte[] int byte[] int int byte[] byte[] java.security.MessageDigest
      StackMap stack: java.security.NoSuchAlgorithmException
        19: astore 9 /* e */
        start local 9 // java.security.NoSuchAlgorithmException e
        20: .line 177
            new java.security.GeneralSecurityException
            dup
            ldc "Calculate Checkum Failed!"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
        21: .line 176
            astore 10 /* gse */
        start local 10 // java.security.GeneralSecurityException gse
        22: .line 178
            aload 10 /* gse */
            aload 9 /* e */
            invokevirtual java.security.GeneralSecurityException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        23: .line 179
            aload 10 /* gse */
            athrow
        end local 10 // java.security.GeneralSecurityException gse
        end local 9 // java.security.NoSuchAlgorithmException e
        24: .line 181
      StackMap locals:
      StackMap stack:
            aload 8 /* messageDigest */
            aload 7 /* salt */
            invokevirtual java.security.MessageDigest.update:([B)V
        25: .line 182
            aload 8 /* messageDigest */
            aload 3 /* input */
            iload 4 /* start */
            iload 5 /* len */
            invokevirtual java.security.MessageDigest.update:([BII)V
        26: .line 183
            aload 8 /* messageDigest */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 9 /* md5tmp */
        start local 9 // byte[] md5tmp
        27: .line 186
            aload 0 /* this */
            aload 6 /* Ksign */
            aload 9 /* md5tmp */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 10 /* hmac */
        start local 10 // byte[] hmac
        28: .line 190
            aload 10 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getChecksumLength:()I
            if_icmpne 30
        29: .line 191
            aload 10 /* hmac */
            areturn
        30: .line 192
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 10 /* hmac */
            arraylength
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getChecksumLength:()I
            if_icmple 34
        31: .line 193
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getChecksumLength:()I
            newarray 8
            astore 11 /* buf */
        start local 11 // byte[] buf
        32: .line 194
            aload 10 /* hmac */
            iconst_0
            aload 11 /* buf */
            iconst_0
            aload 11 /* buf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        33: .line 195
            aload 11 /* buf */
            areturn
        end local 11 // byte[] buf
        34: .line 197
      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
        35: .line 198
            aload 10 /* 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.ArcFourCrypto.getChecksumLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        36: .line 197
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 10 // byte[] hmac
        end local 9 // byte[] md5tmp
        end local 8 // java.security.MessageDigest messageDigest
        end local 7 // byte[] salt
        end local 6 // byte[] Ksign
        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.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   37     0           this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   37     1        baseKey  [B
            0   37     2          usage  I
            0   37     3          input  [B
            0   37     4          start  I
            0   37     5            len  I
            5   37     6          Ksign  [B
            6    9     7             ss  [B
            7    9     8         new_ss  [B
           11   15     7              e  Ljava/lang/Exception;
           13   15     8            gse  Ljava/security/GeneralSecurityException;
           16   37     7           salt  [B
           17   37     8  messageDigest  Ljava/security/MessageDigest;
           20   24     9              e  Ljava/security/NoSuchAlgorithmException;
           22   24    10            gse  Ljava/security/GeneralSecurityException;
           27   37     9         md5tmp  [B
           28   37    10           hmac  [B
           32   34    11            buf  [B
      Exception table:
        from    to  target  type
           5     9      10  Class java.lang.Exception
          17    18      19  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      baseKey  
      usage    
      input    
      start    
      len      

  public byte[] encryptSeq(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] checksum
        start local 4 // byte[] plaintext
        start local 5 // int start
        start local 6 // int len
         0: .line 209
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 210
            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 211
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 210
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 214
      StackMap locals:
      StackMap stack:
            iconst_4
            newarray 8
            astore 7 /* salt */
        start local 7 // byte[] salt
         5: .line 215
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 7 /* salt */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 8 /* kSeq */
        start local 8 // byte[] kSeq
         6: .line 218
            aload 0 /* this */
            aload 8 /* kSeq */
            aload 3 /* checksum */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 8 /* kSeq */
         7: .line 220
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 9 /* cipher */
        start local 9 // javax.crypto.Cipher cipher
         8: .line 221
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 8 /* kSeq */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 10 /* secretKey */
        start local 10 // javax.crypto.spec.SecretKeySpec secretKey
         9: .line 222
            aload 9 /* cipher */
            iconst_1
            aload 10 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        10: .line 223
            aload 9 /* cipher */
            aload 4 /* plaintext */
            iload 5 /* start */
            iload 6 /* len */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 11 /* output */
        start local 11 // byte[] output
        11: .line 225
            aload 11 /* output */
            areturn
        end local 11 // byte[] output
        end local 10 // javax.crypto.spec.SecretKeySpec secretKey
        end local 9 // javax.crypto.Cipher cipher
        end local 8 // byte[] kSeq
        end local 7 // byte[] salt
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] plaintext
        end local 3 // byte[] checksum
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   12     1    baseKey  [B
            0   12     2      usage  I
            0   12     3   checksum  [B
            0   12     4  plaintext  [B
            0   12     5      start  I
            0   12     6        len  I
            5   12     7       salt  [B
            6   12     8       kSeq  [B
            8   12     9     cipher  Ljavax/crypto/Cipher;
            9   12    10  secretKey  Ljavax/crypto/spec/SecretKeySpec;
           11   12    11     output  [B
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
           Name  Flags
      baseKey    
      usage      
      checksum   
      plaintext  
      start      
      len        

  public byte[] decryptSeq(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] checksum
        start local 4 // byte[] ciphertext
        start local 5 // int start
        start local 6 // int len
         0: .line 235
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 236
            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 237
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 236
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 241
      StackMap locals:
      StackMap stack:
            iconst_4
            newarray 8
            astore 7 /* salt */
        start local 7 // byte[] salt
         5: .line 242
            aload 0 /* this */
            aload 1 /* baseKey */
            aload 7 /* salt */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 8 /* kSeq */
        start local 8 // byte[] kSeq
         6: .line 245
            aload 0 /* this */
            aload 8 /* kSeq */
            aload 3 /* checksum */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 8 /* kSeq */
         7: .line 247
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 9 /* cipher */
        start local 9 // javax.crypto.Cipher cipher
         8: .line 248
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 8 /* kSeq */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 10 /* secretKey */
        start local 10 // javax.crypto.spec.SecretKeySpec secretKey
         9: .line 249
            aload 9 /* cipher */
            iconst_2
            aload 10 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        10: .line 250
            aload 9 /* cipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 6 /* len */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 11 /* output */
        start local 11 // byte[] output
        11: .line 252
            aload 11 /* output */
            areturn
        end local 11 // byte[] output
        end local 10 // javax.crypto.spec.SecretKeySpec secretKey
        end local 9 // javax.crypto.Cipher cipher
        end local 8 // byte[] kSeq
        end local 7 // byte[] salt
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] ciphertext
        end local 3 // byte[] checksum
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   12     1     baseKey  [B
            0   12     2       usage  I
            0   12     3    checksum  [B
            0   12     4  ciphertext  [B
            0   12     5       start  I
            0   12     6         len  I
            5   12     7        salt  [B
            6   12     8        kSeq  [B
            8   12     9      cipher  Ljavax/crypto/Cipher;
            9   12    10   secretKey  Ljavax/crypto/spec/SecretKeySpec;
           11   12    11      output  [B
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
            Name  Flags
      baseKey     
      usage       
      checksum    
      ciphertext  
      start       
      len         

  public byte[] encrypt(byte[], int, byte[], byte[], byte[], int, int);
    descriptor: ([BI[B[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=20, args_size=8
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto 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 262
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 263
            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 264
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 263
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 272
      StackMap locals:
      StackMap stack:
            bipush 8
            invokestatic sun.security.krb5.Confounder.bytes:(I)[B
            astore 8 /* confounder */
        start local 8 // byte[] confounder
         5: .line 275
            aload 0 /* this */
            aload 8 /* confounder */
            arraylength
            iload 7 /* len */
            iadd
            iconst_1
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.roundup:(II)I
            istore 9 /* plainSize */
        start local 9 // int plainSize
         6: .line 276
            iload 9 /* plainSize */
            newarray 8
            astore 10 /* toBeEncrypted */
        start local 10 // byte[] toBeEncrypted
         7: .line 277
            aload 8 /* confounder */
            iconst_0
            aload 10 /* toBeEncrypted */
            iconst_0
            aload 8 /* confounder */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 278
            aload 5 /* plaintext */
            iload 6 /* start */
            aload 10 /* toBeEncrypted */
         9: .line 279
            aload 8 /* confounder */
            arraylength
            iload 7 /* len */
        10: .line 278
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 282
            aload 1 /* baseKey */
            arraylength
            newarray 8
            astore 11 /* k1 */
        start local 11 // byte[] k1
        12: .line 283
            aload 1 /* baseKey */
            iconst_0
            aload 11 /* k1 */
            iconst_0
            aload 1 /* baseKey */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 286
            aload 0 /* this */
            iload 2 /* usage */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getSalt:(I)[B
            astore 12 /* salt */
        start local 12 // byte[] salt
        14: .line 289
            aload 0 /* this */
            aload 11 /* k1 */
            aload 12 /* salt */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 13 /* k2 */
        start local 13 // byte[] k2
        15: .line 292
            aload 0 /* this */
            aload 13 /* k2 */
            aload 10 /* toBeEncrypted */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 14 /* checksum */
        start local 14 // byte[] checksum
        16: .line 295
            aload 0 /* this */
            aload 13 /* k2 */
            aload 14 /* checksum */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 15 /* k3 */
        start local 15 // byte[] k3
        17: .line 297
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 16 /* cipher */
        start local 16 // javax.crypto.Cipher cipher
        18: .line 298
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 15 /* k3 */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 17 /* secretKey */
        start local 17 // javax.crypto.spec.SecretKeySpec secretKey
        19: .line 299
            aload 16 /* cipher */
            iconst_1
            aload 17 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        20: .line 300
            aload 16 /* cipher */
            aload 10 /* toBeEncrypted */
            iconst_0
            aload 10 /* toBeEncrypted */
            arraylength
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 18 /* output */
        start local 18 // byte[] output
        21: .line 303
            bipush 16
            aload 18 /* output */
            arraylength
            iadd
            newarray 8
            astore 19 /* result */
        start local 19 // byte[] result
        22: .line 304
            aload 14 /* checksum */
            iconst_0
            aload 19 /* result */
            iconst_0
            bipush 16
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        23: .line 305
            aload 18 /* output */
            iconst_0
            aload 19 /* result */
            bipush 16
            aload 18 /* output */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        24: .line 307
            aload 19 /* result */
            areturn
        end local 19 // byte[] result
        end local 18 // byte[] output
        end local 17 // javax.crypto.spec.SecretKeySpec secretKey
        end local 16 // javax.crypto.Cipher cipher
        end local 15 // byte[] k3
        end local 14 // byte[] checksum
        end local 13 // byte[] k2
        end local 12 // byte[] salt
        end local 11 // byte[] k1
        end local 10 // byte[] toBeEncrypted
        end local 9 // int plainSize
        end local 8 // byte[] confounder
        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.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   25     0           this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   25     1        baseKey  [B
            0   25     2          usage  I
            0   25     3           ivec  [B
            0   25     4       new_ivec  [B
            0   25     5      plaintext  [B
            0   25     6          start  I
            0   25     7            len  I
            5   25     8     confounder  [B
            6   25     9      plainSize  I
            7   25    10  toBeEncrypted  [B
           12   25    11             k1  [B
           14   25    12           salt  [B
           15   25    13             k2  [B
           16   25    14       checksum  [B
           17   25    15             k3  [B
           18   25    16         cipher  Ljavax/crypto/Cipher;
           19   25    17      secretKey  Ljavax/crypto/spec/SecretKeySpec;
           21   25    18         output  [B
           22   25    19         result  [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=5, locals=13, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // byte[] baseKey
        start local 2 // int usage
        start local 3 // byte[] seqNum
        start local 4 // byte[] plaintext
        start local 5 // int start
        start local 6 // int len
         0: .line 317
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 318
            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 319
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 318
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 328
      StackMap locals:
      StackMap stack:
            aload 1 /* baseKey */
            arraylength
            newarray 8
            astore 7 /* klocal */
        start local 7 // byte[] klocal
         5: .line 329
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         6: goto 9
         7: .line 330
      StackMap locals: byte[] int
      StackMap stack:
            aload 7 /* klocal */
            iload 8 /* i */
            aload 1 /* baseKey */
            iload 8 /* i */
            baload
            sipush 240
            ixor
            i2b
            bastore
         8: .line 329
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 8 /* i */
            bipush 15
            if_icmple 7
        end local 8 // int i
        10: .line 332
            iconst_4
            newarray 8
            astore 8 /* salt */
        start local 8 // byte[] salt
        11: .line 333
            aload 0 /* this */
            aload 7 /* klocal */
            aload 8 /* salt */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 9 /* kcrypt */
        start local 9 // byte[] kcrypt
        12: .line 339
            aload 0 /* this */
            aload 9 /* kcrypt */
            aload 3 /* seqNum */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 9 /* kcrypt */
        13: .line 341
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 10 /* cipher */
        start local 10 // javax.crypto.Cipher cipher
        14: .line 342
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* kcrypt */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 11 /* secretKey */
        start local 11 // javax.crypto.spec.SecretKeySpec secretKey
        15: .line 343
            aload 10 /* cipher */
            iconst_1
            aload 11 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        16: .line 344
            aload 10 /* cipher */
            aload 4 /* plaintext */
            iload 5 /* start */
            iload 6 /* len */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 12 /* output */
        start local 12 // byte[] output
        17: .line 346
            aload 12 /* output */
            areturn
        end local 12 // byte[] output
        end local 11 // javax.crypto.spec.SecretKeySpec secretKey
        end local 10 // javax.crypto.Cipher cipher
        end local 9 // byte[] kcrypt
        end local 8 // byte[] salt
        end local 7 // byte[] klocal
        end local 6 // int len
        end local 5 // int start
        end local 4 // byte[] plaintext
        end local 3 // byte[] seqNum
        end local 2 // int usage
        end local 1 // byte[] baseKey
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   18     1    baseKey  [B
            0   18     2      usage  I
            0   18     3     seqNum  [B
            0   18     4  plaintext  [B
            0   18     5      start  I
            0   18     6        len  I
            5   18     7     klocal  [B
            6   10     8          i  I
           11   18     8       salt  [B
           12   18     9     kcrypt  [B
           14   18    10     cipher  Ljavax/crypto/Cipher;
           15   18    11  secretKey  Ljavax/crypto/spec/SecretKeySpec;
           17   18    12     output  [B
    Exceptions:
      throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
    MethodParameters:
           Name  Flags
      baseKey    
      usage      
      seqNum     
      plaintext  
      start      
      len        

  public byte[] decrypt(byte[], int, byte[], byte[], int, int);
    descriptor: ([BI[B[BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=18, args_size=7
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto 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 357
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 358
            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 359
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 358
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 366
      StackMap locals:
      StackMap stack:
            aload 1 /* baseKey */
            arraylength
            newarray 8
            astore 7 /* k1 */
        start local 7 // byte[] k1
         5: .line 367
            aload 1 /* baseKey */
            iconst_0
            aload 7 /* k1 */
            iconst_0
            aload 1 /* baseKey */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 370
            aload 0 /* this */
            iload 2 /* usage */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getSalt:(I)[B
            astore 8 /* salt */
        start local 8 // byte[] salt
         7: .line 373
            aload 0 /* this */
            aload 7 /* k1 */
            aload 8 /* salt */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 9 /* k2 */
        start local 9 // byte[] k2
         8: .line 376
            bipush 16
            newarray 8
            astore 10 /* checksum */
        start local 10 // byte[] checksum
         9: .line 377
            aload 4 /* ciphertext */
            iload 5 /* start */
            aload 10 /* checksum */
            iconst_0
            bipush 16
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 378
            aload 0 /* this */
            aload 9 /* k2 */
            aload 10 /* checksum */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 11 /* k3 */
        start local 11 // byte[] k3
        11: .line 381
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 12 /* cipher */
        start local 12 // javax.crypto.Cipher cipher
        12: .line 382
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 11 /* k3 */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 13 /* secretKey */
        start local 13 // javax.crypto.spec.SecretKeySpec secretKey
        13: .line 383
            aload 12 /* cipher */
            iconst_2
            aload 13 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        14: .line 384
            aload 12 /* cipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            bipush 16
            iadd
        15: .line 385
            iload 6 /* len */
            bipush 16
            isub
        16: .line 384
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 14 /* plaintext */
        start local 14 // byte[] plaintext
        17: .line 388
            aload 0 /* this */
            aload 9 /* k2 */
            aload 14 /* plaintext */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 15 /* calculatedHmac */
        start local 15 // byte[] calculatedHmac
        18: .line 395
            iconst_0
            istore 16 /* cksumFailed */
        start local 16 // boolean cksumFailed
        19: .line 396
            aload 15 /* calculatedHmac */
            arraylength
            bipush 16
            if_icmplt 27
        20: .line 397
            iconst_0
            istore 17 /* i */
        start local 17 // int i
        21: goto 26
        22: .line 398
      StackMap locals: sun.security.krb5.internal.crypto.dk.ArcFourCrypto byte[] int byte[] byte[] int int byte[] byte[] byte[] byte[] byte[] javax.crypto.Cipher javax.crypto.spec.SecretKeySpec byte[] byte[] int int
      StackMap stack:
            aload 15 /* calculatedHmac */
            iload 17 /* i */
            baload
            aload 4 /* ciphertext */
            iload 17 /* i */
            baload
            if_icmpeq 25
        23: .line 399
            iconst_1
            istore 16 /* cksumFailed */
        24: .line 403
            goto 27
        25: .line 397
      StackMap locals:
      StackMap stack:
            iinc 17 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 17 /* i */
            bipush 16
            if_icmplt 22
        end local 17 // int i
        27: .line 407
      StackMap locals:
      StackMap stack:
            iload 16 /* cksumFailed */
            ifeq 29
        28: .line 408
            new java.security.GeneralSecurityException
            dup
            ldc "Checksum failed"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 413
      StackMap locals:
      StackMap stack:
            aload 14 /* plaintext */
            arraylength
            bipush 8
            isub
            newarray 8
            astore 17 /* output */
        start local 17 // byte[] output
        30: .line 414
            aload 14 /* plaintext */
            bipush 8
            aload 17 /* output */
            iconst_0
            aload 17 /* output */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        31: .line 416
            aload 17 /* output */
            areturn
        end local 17 // byte[] output
        end local 16 // boolean cksumFailed
        end local 15 // byte[] calculatedHmac
        end local 14 // byte[] plaintext
        end local 13 // javax.crypto.spec.SecretKeySpec secretKey
        end local 12 // javax.crypto.Cipher cipher
        end local 11 // byte[] k3
        end local 10 // byte[] checksum
        end local 9 // byte[] k2
        end local 8 // byte[] salt
        end local 7 // byte[] k1
        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.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   32     0            this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   32     1         baseKey  [B
            0   32     2           usage  I
            0   32     3            ivec  [B
            0   32     4      ciphertext  [B
            0   32     5           start  I
            0   32     6             len  I
            5   32     7              k1  [B
            7   32     8            salt  [B
            8   32     9              k2  [B
            9   32    10        checksum  [B
           11   32    11              k3  [B
           12   32    12          cipher  Ljavax/crypto/Cipher;
           13   32    13       secretKey  Ljavax/crypto/spec/SecretKeySpec;
           17   32    14       plaintext  [B
           18   32    15  calculatedHmac  [B
           19   32    16     cksumFailed  Z
           21   27    17               i  I
           30   32    17          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, byte[]);
    descriptor: ([BI[B[BII[B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=15, args_size=8
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto 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 // byte[] seqNum
         0: .line 429
            iload 2 /* usage */
            invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
            ifne 4
         1: .line 430
            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 431
            iload 2 /* usage */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 430
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 439
      StackMap locals:
      StackMap stack:
            aload 1 /* baseKey */
            arraylength
            newarray 8
            astore 8 /* klocal */
        start local 8 // byte[] klocal
         5: .line 440
            iconst_0
            istore 9 /* i */
        start local 9 // int i
         6: goto 9
         7: .line 441
      StackMap locals: byte[] int
      StackMap stack:
            aload 8 /* klocal */
            iload 9 /* i */
            aload 1 /* baseKey */
            iload 9 /* i */
            baload
            sipush 240
            ixor
            i2b
            bastore
         8: .line 440
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 9 /* i */
            bipush 15
            if_icmple 7
        end local 9 // int i
        10: .line 443
            iconst_4
            newarray 8
            astore 9 /* salt */
        start local 9 // byte[] salt
        11: .line 444
            aload 0 /* this */
            aload 8 /* klocal */
            aload 9 /* salt */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 10 /* kcrypt */
        start local 10 // byte[] kcrypt
        12: .line 447
            iconst_4
            newarray 8
            astore 11 /* sequenceNum */
        start local 11 // byte[] sequenceNum
        13: .line 448
            aload 7 /* seqNum */
            iconst_0
            aload 11 /* sequenceNum */
            iconst_0
            aload 11 /* sequenceNum */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 451
            aload 0 /* this */
            aload 10 /* kcrypt */
            aload 11 /* sequenceNum */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.getHmac:([B[B)[B
            astore 10 /* kcrypt */
        15: .line 453
            ldc "ARCFOUR"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 12 /* cipher */
        start local 12 // javax.crypto.Cipher cipher
        16: .line 454
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 10 /* kcrypt */
            ldc "ARCFOUR"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 13 /* secretKey */
        start local 13 // javax.crypto.spec.SecretKeySpec secretKey
        17: .line 455
            aload 12 /* cipher */
            iconst_2
            aload 13 /* secretKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        18: .line 456
            aload 12 /* cipher */
            aload 4 /* ciphertext */
            iload 5 /* start */
            iload 6 /* len */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 14 /* output */
        start local 14 // byte[] output
        19: .line 458
            aload 14 /* output */
            areturn
        end local 14 // byte[] output
        end local 13 // javax.crypto.spec.SecretKeySpec secretKey
        end local 12 // javax.crypto.Cipher cipher
        end local 11 // byte[] sequenceNum
        end local 10 // byte[] kcrypt
        end local 9 // byte[] salt
        end local 8 // byte[] klocal
        end local 7 // byte[] seqNum
        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.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0         this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0   20     1      baseKey  [B
            0   20     2        usage  I
            0   20     3         ivec  [B
            0   20     4   ciphertext  [B
            0   20     5        start  I
            0   20     6          len  I
            0   20     7       seqNum  [B
            5   20     8       klocal  [B
            6   10     9            i  I
           11   20     9         salt  [B
           12   20    10       kcrypt  [B
           13   20    11  sequenceNum  [B
           16   20    12       cipher  Ljavax/crypto/Cipher;
           17   20    13    secretKey  Ljavax/crypto/spec/SecretKeySpec;
           19   20    14       output  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
            Name  Flags
      baseKey     
      usage       
      ivec        
      ciphertext  
      start       
      len         
      seqNum      

  private byte[] getSalt(int);
    descriptor: (I)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // int usage
         0: .line 463
            aload 0 /* this */
            iload 1 /* usage */
            invokevirtual sun.security.krb5.internal.crypto.dk.ArcFourCrypto.arcfour_translate_usage:(I)I
            istore 2 /* ms_usage */
        start local 2 // int ms_usage
         1: .line 464
            iconst_4
            newarray 8
            astore 3 /* salt */
        start local 3 // byte[] salt
         2: .line 465
            aload 3 /* salt */
            iconst_0
            iload 2 /* ms_usage */
            sipush 255
            iand
            i2b
            bastore
         3: .line 466
            aload 3 /* salt */
            iconst_1
            iload 2 /* ms_usage */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         4: .line 467
            aload 3 /* salt */
            iconst_2
            iload 2 /* ms_usage */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         5: .line 468
            aload 3 /* salt */
            iconst_3
            iload 2 /* ms_usage */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         6: .line 469
            aload 3 /* salt */
            areturn
        end local 3 // byte[] salt
        end local 2 // int ms_usage
        end local 1 // int usage
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0    7     1     usage  I
            1    7     2  ms_usage  I
            2    7     3      salt  [B
    MethodParameters:
       Name  Flags
      usage  

  private int arcfour_translate_usage(int);
    descriptor: (I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
        start local 1 // int usage
         0: .line 474
            iload 1 /* usage */
            lookupswitch { // 3
                    3: 1
                    9: 2
                   23: 3
              default: 4
          }
         1: .line 475
      StackMap locals:
      StackMap stack:
            bipush 8
            ireturn
         2: .line 476
      StackMap locals:
      StackMap stack:
            bipush 8
            ireturn
         3: .line 477
      StackMap locals:
      StackMap stack:
            bipush 13
            ireturn
         4: .line 478
      StackMap locals:
      StackMap stack:
            iload 1 /* usage */
            ireturn
        end local 1 // int usage
        end local 0 // sun.security.krb5.internal.crypto.dk.ArcFourCrypto this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lsun/security/krb5/internal/crypto/dk/ArcFourCrypto;
            0    5     1  usage  I
    MethodParameters:
       Name  Flags
      usage  
}
SourceFile: "ArcFourCrypto.java"