abstract class com.sun.security.sasl.digest.DigestMD5Base extends com.sun.security.sasl.util.AbstractSaslImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.security.sasl.digest.DigestMD5Base
  super_class: com.sun.security.sasl.util.AbstractSaslImpl
{
  private static final java.lang.String DI_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String DP_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final int MAX_CHALLENGE_LENGTH;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 2048

  protected static final int MAX_RESPONSE_LENGTH;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 4096

  protected static final int DEFAULT_MAXBUF;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 65536

  protected static final int DES3;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  protected static final int RC4;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  protected static final int DES;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  protected static final int RC4_56;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  protected static final int RC4_40;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  protected static final java.lang.String[] CIPHER_TOKENS;
    descriptor: [Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] JCE_CIPHER_NAME;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final byte DES_3_STRENGTH;
    descriptor: B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  protected static final byte RC4_STRENGTH;
    descriptor: B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  protected static final byte DES_STRENGTH;
    descriptor: B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  protected static final byte RC4_56_STRENGTH;
    descriptor: B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  protected static final byte RC4_40_STRENGTH;
    descriptor: B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  protected static final byte UNSET;
    descriptor: B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  protected static final byte[] CIPHER_MASKS;
    descriptor: [B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private static final java.lang.String SECURITY_LAYER_MARKER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: ":00000000000000000000000000000000"

  protected static final byte[] EMPTY_BYTE_ARRAY;
    descriptor: [B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected int step;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected javax.security.auth.callback.CallbackHandler cbh;
    descriptor: Ljavax/security/auth/callback/CallbackHandler;
    flags: (0x0004) ACC_PROTECTED

  protected com.sun.security.sasl.digest.SecurityCtx secCtx;
    descriptor: Lcom/sun/security/sasl/digest/SecurityCtx;
    flags: (0x0004) ACC_PROTECTED

  protected byte[] H_A1;
    descriptor: [B
    flags: (0x0004) ACC_PROTECTED

  protected byte[] nonce;
    descriptor: [B
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String negotiatedStrength;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String negotiatedCipher;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String negotiatedQop;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String negotiatedRealm;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected boolean useUTF8;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String encoding;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String digestUri;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String authzid;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  private static final char[] pem_array;
    descriptor: [C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

  private static final java.math.BigInteger MASK;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 76
            ldc Lcom/sun/security/sasl/digest/DigestMD5Base$DigestIntegrity;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            putstatic com.sun.security.sasl.digest.DigestMD5Base.DI_CLASS_NAME:Ljava/lang/String;
         1: .line 77
            ldc Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            putstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
         2: .line 90
            iconst_5
            anewarray java.lang.String
            dup
            iconst_0
            ldc "3des"
            aastore
            dup
            iconst_1
         3: .line 91
            ldc "rc4"
            aastore
            dup
            iconst_2
         4: .line 92
            ldc "des"
            aastore
            dup
            iconst_3
         5: .line 93
            ldc "rc4-56"
            aastore
            dup
            iconst_4
         6: .line 94
            ldc "rc4-40"
            aastore
         7: .line 90
            putstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
         8: .line 95
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
         9: .line 96
            ldc "DESede/CBC/NoPadding"
            aastore
            dup
            iconst_1
        10: .line 97
            ldc "RC4"
            aastore
            dup
            iconst_2
        11: .line 98
            ldc "DES/CBC/NoPadding"
            aastore
        12: .line 95
            putstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
        13: .line 123
            iconst_5
            newarray 8
            dup
            iconst_0
            iconst_4
            bastore
            dup
            iconst_1
        14: .line 124
            iconst_4
            bastore
            dup
            iconst_2
        15: .line 125
            iconst_2
            bastore
            dup
            iconst_3
        16: .line 126
            iconst_2
            bastore
            dup
            iconst_4
        17: .line 127
            iconst_1
            bastore
        18: .line 123
            putstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
        19: .line 132
            iconst_0
            newarray 8
            putstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
        20: .line 273
            bipush 64
            newarray 5
            dup
            iconst_0
        21: .line 275
            bipush 65
            castore
            dup
            iconst_1
            bipush 66
            castore
            dup
            iconst_2
            bipush 67
            castore
            dup
            iconst_3
            bipush 68
            castore
            dup
            iconst_4
            bipush 69
            castore
            dup
            iconst_5
            bipush 70
            castore
            dup
            bipush 6
            bipush 71
            castore
            dup
            bipush 7
            bipush 72
            castore
            dup
            bipush 8
        22: .line 276
            bipush 73
            castore
            dup
            bipush 9
            bipush 74
            castore
            dup
            bipush 10
            bipush 75
            castore
            dup
            bipush 11
            bipush 76
            castore
            dup
            bipush 12
            bipush 77
            castore
            dup
            bipush 13
            bipush 78
            castore
            dup
            bipush 14
            bipush 79
            castore
            dup
            bipush 15
            bipush 80
            castore
            dup
            bipush 16
        23: .line 277
            bipush 81
            castore
            dup
            bipush 17
            bipush 82
            castore
            dup
            bipush 18
            bipush 83
            castore
            dup
            bipush 19
            bipush 84
            castore
            dup
            bipush 20
            bipush 85
            castore
            dup
            bipush 21
            bipush 86
            castore
            dup
            bipush 22
            bipush 87
            castore
            dup
            bipush 23
            bipush 88
            castore
            dup
            bipush 24
        24: .line 278
            bipush 89
            castore
            dup
            bipush 25
            bipush 90
            castore
            dup
            bipush 26
            bipush 97
            castore
            dup
            bipush 27
            bipush 98
            castore
            dup
            bipush 28
            bipush 99
            castore
            dup
            bipush 29
            bipush 100
            castore
            dup
            bipush 30
            bipush 101
            castore
            dup
            bipush 31
            bipush 102
            castore
            dup
            bipush 32
        25: .line 279
            bipush 103
            castore
            dup
            bipush 33
            bipush 104
            castore
            dup
            bipush 34
            bipush 105
            castore
            dup
            bipush 35
            bipush 106
            castore
            dup
            bipush 36
            bipush 107
            castore
            dup
            bipush 37
            bipush 108
            castore
            dup
            bipush 38
            bipush 109
            castore
            dup
            bipush 39
            bipush 110
            castore
            dup
            bipush 40
        26: .line 280
            bipush 111
            castore
            dup
            bipush 41
            bipush 112
            castore
            dup
            bipush 42
            bipush 113
            castore
            dup
            bipush 43
            bipush 114
            castore
            dup
            bipush 44
            bipush 115
            castore
            dup
            bipush 45
            bipush 116
            castore
            dup
            bipush 46
            bipush 117
            castore
            dup
            bipush 47
            bipush 118
            castore
            dup
            bipush 48
        27: .line 281
            bipush 119
            castore
            dup
            bipush 49
            bipush 120
            castore
            dup
            bipush 50
            bipush 121
            castore
            dup
            bipush 51
            bipush 122
            castore
            dup
            bipush 52
            bipush 48
            castore
            dup
            bipush 53
            bipush 49
            castore
            dup
            bipush 54
            bipush 50
            castore
            dup
            bipush 55
            bipush 51
            castore
            dup
            bipush 56
        28: .line 282
            bipush 52
            castore
            dup
            bipush 57
            bipush 53
            castore
            dup
            bipush 58
            bipush 54
            castore
            dup
            bipush 59
            bipush 55
            castore
            dup
            bipush 60
            bipush 56
            castore
            dup
            bipush 61
            bipush 57
            castore
            dup
            bipush 62
            bipush 43
            castore
            dup
            bipush 63
            bipush 47
            castore
        29: .line 273
            putstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
        30: .line 1513
            new java.math.BigInteger
            dup
            ldc "7f"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
            putstatic com.sun.security.sasl.digest.DigestMD5Base.MASK:Ljava/math/BigInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(java.util.Map<java.lang.String, ?>, java.lang.String, int, java.lang.String, javax.security.auth.callback.CallbackHandler);
    descriptor: (Ljava/util/Map;Ljava/lang/String;ILjava/lang/String;Ljavax/security/auth/callback/CallbackHandler;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=6, args_size=6
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // java.util.Map props
        start local 2 // java.lang.String className
        start local 3 // int firstStep
        start local 4 // java.lang.String digestUri
        start local 5 // javax.security.auth.callback.CallbackHandler cbh
         0: .line 174
            aload 0 /* this */
            aload 1 /* props */
            aload 2 /* className */
            invokespecial com.sun.security.sasl.util.AbstractSaslImpl.<init>:(Ljava/util/Map;Ljava/lang/String;)V
         1: .line 153
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.sasl.digest.DigestMD5Base.useUTF8:Z
         2: .line 154
            aload 0 /* this */
            ldc "8859_1"
            putfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/lang/String;
         3: .line 176
            aload 0 /* this */
            iload 3 /* firstStep */
            putfield com.sun.security.sasl.digest.DigestMD5Base.step:I
         4: .line 177
            aload 0 /* this */
            aload 4 /* digestUri */
            putfield com.sun.security.sasl.digest.DigestMD5Base.digestUri:Ljava/lang/String;
         5: .line 178
            aload 0 /* this */
            aload 5 /* cbh */
            putfield com.sun.security.sasl.digest.DigestMD5Base.cbh:Ljavax/security/auth/callback/CallbackHandler;
         6: .line 179
            return
        end local 5 // javax.security.auth.callback.CallbackHandler cbh
        end local 4 // java.lang.String digestUri
        end local 3 // int firstStep
        end local 2 // java.lang.String className
        end local 1 // java.util.Map props
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0    7     1      props  Ljava/util/Map<Ljava/lang/String;*>;
            0    7     2  className  Ljava/lang/String;
            0    7     3  firstStep  I
            0    7     4  digestUri  Ljava/lang/String;
            0    7     5        cbh  Ljavax/security/auth/callback/CallbackHandler;
    Exceptions:
      throws javax.security.sasl.SaslException
    Signature: (Ljava/util/Map<Ljava/lang/String;*>;Ljava/lang/String;ILjava/lang/String;Ljavax/security/auth/callback/CallbackHandler;)V
    MethodParameters:
           Name  Flags
      props      
      className  
      firstStep  
      digestUri  
      cbh        

  public java.lang.String getMechanismName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
         0: .line 187
            ldc "DIGEST-MD5"
            areturn
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/security/sasl/digest/DigestMD5Base;

  public byte[] unwrap(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // byte[] incoming
        start local 2 // int start
        start local 3 // int len
         0: .line 203
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.completed:Z
            ifne 4
         1: .line 204
            new java.lang.IllegalStateException
            dup
         2: .line 205
            ldc "DIGEST-MD5 authentication not completed"
         3: .line 204
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 208
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
            ifnonnull 8
         5: .line 209
            new java.lang.IllegalStateException
            dup
         6: .line 210
            ldc "Neither integrity nor privacy was negotiated"
         7: .line 209
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
            aload 1 /* incoming */
            iload 2 /* start */
            iload 3 /* len */
            invokeinterface com.sun.security.sasl.digest.SecurityCtx.unwrap:([BII)[B
            areturn
        end local 3 // int len
        end local 2 // int start
        end local 1 // byte[] incoming
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0    9     1  incoming  [B
            0    9     2     start  I
            0    9     3       len  I
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
          Name  Flags
      incoming  
      start     
      len       

  public byte[] wrap(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // byte[] outgoing
        start local 2 // int start
        start local 3 // int len
         0: .line 229
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.completed:Z
            ifne 4
         1: .line 230
            new java.lang.IllegalStateException
            dup
         2: .line 231
            ldc "DIGEST-MD5 authentication not completed"
         3: .line 230
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
            ifnonnull 8
         5: .line 235
            new java.lang.IllegalStateException
            dup
         6: .line 236
            ldc "Neither integrity nor privacy was negotiated"
         7: .line 235
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 239
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
            aload 1 /* outgoing */
            iload 2 /* start */
            iload 3 /* len */
            invokeinterface com.sun.security.sasl.digest.SecurityCtx.wrap:([BII)[B
            areturn
        end local 3 // int len
        end local 2 // int start
        end local 1 // byte[] outgoing
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0    9     1  outgoing  [B
            0    9     2     start  I
            0    9     3       len  I
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
          Name  Flags
      outgoing  
      start     
      len       

  public void dispose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
         0: .line 243
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
            ifnull 2
         1: .line 244
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
         2: .line 246
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/security/sasl/digest/DigestMD5Base;
    Exceptions:
      throws javax.security.sasl.SaslException

  public java.lang.Object getNegotiatedProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // java.lang.String propName
         0: .line 249
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.completed:Z
            ifeq 4
         1: .line 250
            aload 1 /* propName */
            ldc "javax.security.sasl.strength"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 251
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedStrength:Ljava/lang/String;
            areturn
         3: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* propName */
            invokespecial com.sun.security.sasl.util.AbstractSaslImpl.getNegotiatedProperty:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
         4: .line 256
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
         5: .line 257
            ldc "DIGEST-MD5 authentication not completed"
         6: .line 256
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String propName
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0    7     1  propName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      propName  

  protected static final byte[] generateNonce();
    descriptor: ()[B
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=6, locals=8, args_size=0
         0: .line 294
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            astore 0 /* random */
        start local 0 // java.util.Random random
         1: .line 295
            bipush 30
            newarray 8
            astore 1 /* randomData */
        start local 1 // byte[] randomData
         2: .line 296
            aload 0 /* random */
            aload 1 /* randomData */
            invokevirtual java.util.Random.nextBytes:([B)V
         3: .line 298
            bipush 40
            newarray 8
            astore 2 /* nonce */
        start local 2 // byte[] nonce
         4: .line 302
            iconst_0
            istore 6 /* j */
        start local 6 // int j
         5: .line 303
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         6: goto 15
         7: .line 304
      StackMap locals: java.util.Random byte[] byte[] top top top int int
      StackMap stack:
            aload 1 /* randomData */
            iload 7 /* i */
            baload
            istore 3 /* a */
        start local 3 // byte a
         8: .line 305
            aload 1 /* randomData */
            iload 7 /* i */
            iconst_1
            iadd
            baload
            istore 4 /* b */
        start local 4 // byte b
         9: .line 306
            aload 1 /* randomData */
            iload 7 /* i */
            iconst_2
            iadd
            baload
            istore 5 /* c */
        start local 5 // byte c
        10: .line 307
            aload 2 /* nonce */
            iload 6 /* j */
            iinc 6 /* j */ 1
            getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
            iload 3 /* a */
            iconst_2
            iushr
            bipush 63
            iand
            caload
            i2b
            bastore
        11: .line 308
            aload 2 /* nonce */
            iload 6 /* j */
            iinc 6 /* j */ 1
            getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
            iload 3 /* a */
            iconst_4
            ishl
            bipush 48
            iand
            iload 4 /* b */
            iconst_4
            iushr
            bipush 15
            iand
            iadd
            caload
            i2b
            bastore
        12: .line 309
            aload 2 /* nonce */
            iload 6 /* j */
            iinc 6 /* j */ 1
            getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
            iload 4 /* b */
            iconst_2
            ishl
            bipush 60
            iand
            iload 5 /* c */
            bipush 6
            iushr
            iconst_3
            iand
            iadd
            caload
            i2b
            bastore
        13: .line 310
            aload 2 /* nonce */
            iload 6 /* j */
            iinc 6 /* j */ 1
            getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
            iload 5 /* c */
            bipush 63
            iand
            caload
            i2b
            bastore
        14: .line 303
            iinc 7 /* i */ 3
        end local 5 // byte c
        end local 4 // byte b
        end local 3 // byte a
      StackMap locals:
      StackMap stack:
        15: iload 7 /* i */
            aload 1 /* randomData */
            arraylength
            if_icmplt 7
        end local 7 // int i
        16: .line 313
            aload 2 /* nonce */
            areturn
        end local 6 // int j
        end local 2 // byte[] nonce
        end local 1 // byte[] randomData
        end local 0 // java.util.Random random
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            1   17     0      random  Ljava/util/Random;
            2   17     1  randomData  [B
            4   17     2       nonce  [B
            8   15     3           a  B
            9   15     4           b  B
           10   15     5           c  B
            5   17     6           j  I
            6   16     7           i  I

  protected static void writeQuotedStringValue(java.io.ByteArrayOutputStream, byte[]);
    descriptor: (Ljava/io/ByteArrayOutputStream;[B)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // java.io.ByteArrayOutputStream out
        start local 1 // byte[] buf
         0: .line 327
            aload 1 /* buf */
            arraylength
            istore 2 /* len */
        start local 2 // int len
         1: .line 329
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 8
         3: .line 330
      StackMap locals: java.io.ByteArrayOutputStream byte[] int top int
      StackMap stack:
            aload 1 /* buf */
            iload 4 /* i */
            baload
            istore 3 /* ch */
        start local 3 // byte ch
         4: .line 331
            iload 3 /* ch */
            i2c
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
            ifeq 6
         5: .line 332
            aload 0 /* out */
            bipush 92
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
         6: .line 334
      StackMap locals: java.io.ByteArrayOutputStream byte[] int int int
      StackMap stack:
            aload 0 /* out */
            iload 3 /* ch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
         7: .line 329
            iinc 4 /* i */ 1
        end local 3 // byte ch
      StackMap locals: java.io.ByteArrayOutputStream byte[] int top int
      StackMap stack:
         8: iload 4 /* i */
            iload 2 /* len */
            if_icmplt 3
        end local 4 // int i
         9: .line 336
            return
        end local 2 // int len
        end local 1 // byte[] buf
        end local 0 // java.io.ByteArrayOutputStream out
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0   out  Ljava/io/ByteArrayOutputStream;
            0   10     1   buf  [B
            1   10     2   len  I
            4    8     3    ch  B
            2    9     4     i  I
    MethodParameters:
      Name  Flags
      out   
      buf   

  private static boolean needEscape(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String str
         0: .line 341
            aload 0 /* str */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         1: .line 342
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 343
      StackMap locals: int int
      StackMap stack:
            aload 0 /* str */
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
            ifeq 5
         4: .line 344
            iconst_1
            ireturn
         5: .line 342
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            iload 1 /* len */
            if_icmplt 3
        end local 2 // int i
         7: .line 347
            iconst_0
            ireturn
        end local 1 // int len
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0   str  Ljava/lang/String;
            1    8     1   len  I
            2    7     2     i  I
    MethodParameters:
      Name  Flags
      str   

  private static boolean needEscape(char);
    descriptor: (C)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // char ch
         0: .line 352
            iload 0 /* ch */
            bipush 34
            if_icmpeq 5
         1: .line 353
            iload 0 /* ch */
            bipush 92
            if_icmpeq 5
         2: .line 354
            iload 0 /* ch */
            bipush 127
            if_icmpeq 5
         3: .line 357
            iload 0 /* ch */
            iflt 4
            iload 0 /* ch */
            bipush 31
            if_icmpgt 4
            iload 0 /* ch */
            bipush 13
            if_icmpeq 4
            iload 0 /* ch */
            bipush 9
            if_icmpeq 4
            iload 0 /* ch */
            bipush 10
            if_icmpne 5
         4: .line 352
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 0 // char ch
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0    ch  C
    MethodParameters:
      Name  Flags
      ch    

  protected static java.lang.String quotedStringValue(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.lang.String str
         0: .line 361
            aload 0 /* str */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(Ljava/lang/String;)Z
            ifeq 13
         1: .line 362
            aload 0 /* str */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         2: .line 363
            iload 1 /* len */
            iload 1 /* len */
            iadd
            newarray 5
            astore 2 /* buf */
        start local 2 // char[] buf
         3: .line 364
            iconst_0
            istore 3 /* j */
        start local 3 // int j
         4: .line 366
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 11
         6: .line 367
      StackMap locals: java.lang.String int char[] int top int
      StackMap stack:
            aload 0 /* str */
            iload 5 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 4 /* ch */
        start local 4 // char ch
         7: .line 368
            iload 4 /* ch */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
            ifeq 9
         8: .line 369
            aload 2 /* buf */
            iload 3 /* j */
            iinc 3 /* j */ 1
            bipush 92
            castore
         9: .line 371
      StackMap locals: java.lang.String int char[] int int int
      StackMap stack:
            aload 2 /* buf */
            iload 3 /* j */
            iinc 3 /* j */ 1
            iload 4 /* ch */
            castore
        10: .line 366
            iinc 5 /* i */ 1
        end local 4 // char ch
      StackMap locals: java.lang.String int char[] int top int
      StackMap stack:
        11: iload 5 /* i */
            iload 1 /* len */
            if_icmplt 6
        end local 5 // int i
        12: .line 373
            new java.lang.String
            dup
            aload 2 /* buf */
            iconst_0
            iload 3 /* j */
            invokespecial java.lang.String.<init>:([CII)V
            areturn
        end local 3 // int j
        end local 2 // char[] buf
        end local 1 // int len
        13: .line 375
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* str */
            areturn
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0   str  Ljava/lang/String;
            2   13     1   len  I
            3   13     2   buf  [C
            4   13     3     j  I
            7   11     4    ch  C
            5   12     5     i  I
    MethodParameters:
      Name  Flags
      str   

  protected byte[] binaryToHex(byte[]);
    descriptor: ([B)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // byte[] digest
         0: .line 388
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 2 /* digestString */
        start local 2 // java.lang.StringBuffer digestString
         1: .line 390
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 12
         3: .line 391
      StackMap locals: java.lang.StringBuffer int
      StackMap stack:
            aload 1 /* digest */
            iload 3 /* i */
            baload
            sipush 255
            iand
            bipush 16
            if_icmpge 8
         4: .line 392
            aload 2 /* digestString */
            new java.lang.StringBuilder
            dup
            ldc "0"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 393
            aload 1 /* digest */
            iload 3 /* 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 392
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         7: .line 394
            goto 11
         8: .line 395
      StackMap locals:
      StackMap stack:
            aload 2 /* digestString */
         9: .line 396
            aload 1 /* digest */
            iload 3 /* i */
            baload
            sipush 255
            iand
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
        10: .line 395
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        11: .line 390
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 3 /* i */
            aload 1 /* digest */
            arraylength
            if_icmplt 3
        end local 3 // int i
        13: .line 399
            aload 2 /* digestString */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            areturn
        end local 2 // java.lang.StringBuffer digestString
        end local 1 // byte[] digest
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0          this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0   14     1        digest  [B
            1   14     2  digestString  Ljava/lang/StringBuffer;
            2   13     3             i  I
    Exceptions:
      throws java.io.UnsupportedEncodingException
    MethodParameters:
        Name  Flags
      digest  

  protected byte[] stringToByte_8859_1(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // java.lang.String str
         0: .line 412
            aload 1 /* str */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 2 /* buffer */
        start local 2 // char[] buffer
         1: .line 415
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.useUTF8:Z
            ifeq 9
         2: .line 416
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 8
         4: .line 417
      StackMap locals: char[] int
      StackMap stack:
            aload 2 /* buffer */
            iload 3 /* i */
            caload
            sipush 255
            if_icmple 7
         5: .line 418
            aload 1 /* str */
            ldc "UTF8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
         6: areturn
         7: .line 416
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            aload 2 /* buffer */
            arraylength
            if_icmplt 4
        end local 3 // int i
         9: .line 422
      StackMap locals:
      StackMap stack:
            aload 1 /* str */
            ldc "8859_1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
        10: areturn
        11: .line 423
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 3 /* e */
        start local 3 // java.io.UnsupportedEncodingException e
        12: .line 424
            new javax.security.sasl.SaslException
            dup
        13: .line 425
            ldc "cannot encode string in UTF8 or 8859-1 (Latin-1)"
            aload 3 /* e */
        14: .line 424
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.UnsupportedEncodingException e
        end local 2 // char[] buffer
        end local 1 // java.lang.String str
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0    this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0   15     1     str  Ljava/lang/String;
            1   15     2  buffer  [C
            3    9     3       i  I
           12   15     3       e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           1     6      11  Class java.io.UnsupportedEncodingException
           7    10      11  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
      Name  Flags
      str   

  protected static byte[] getPlatformCiphers();
    descriptor: ()[B
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=0
         0: .line 430
            getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
            arraylength
            newarray 8
            astore 0 /* ciphers */
        start local 0 // byte[] ciphers
         1: .line 432
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         2: goto 10
         3: .line 436
      StackMap locals: byte[] int
      StackMap stack:
            getstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            pop
         4: .line 438
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST01:Platform supports {0}"
            getstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 439
            aload 0 /* ciphers */
            iload 1 /* i */
            dup2
            baload
            getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
            iload 1 /* i */
            baload
            ior
            i2b
            bastore
         6: .line 440
            goto 9
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
         7: pop
            goto 9
         8: .line 442
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            pop
         9: .line 432
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 1 /* i */
            getstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
            arraylength
            if_icmplt 3
        end local 1 // int i
        11: .line 447
            aload 0 /* ciphers */
            iconst_1
            baload
            ifeq 14
        12: .line 448
            aload 0 /* ciphers */
            iconst_3
            dup2
            baload
            getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
            iconst_3
            baload
            ior
            i2b
            bastore
        13: .line 449
            aload 0 /* ciphers */
            iconst_4
            dup2
            baload
            getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
            iconst_4
            baload
            ior
            i2b
            bastore
        14: .line 452
      StackMap locals:
      StackMap stack:
            aload 0 /* ciphers */
            areturn
        end local 0 // byte[] ciphers
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            1   15     0  ciphers  [B
            2   11     1        i  I
      Exception table:
        from    to  target  type
           3     6       7  Class java.security.NoSuchAlgorithmException
           3     6       8  Class javax.crypto.NoSuchPaddingException

  protected byte[] generateResponseValue(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, char[], byte[], byte[], int, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[B[BI[B)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=10, locals=20, args_size=11
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // java.lang.String authMethod
        start local 2 // java.lang.String digestUriValue
        start local 3 // java.lang.String qopValue
        start local 4 // java.lang.String usernameValue
        start local 5 // java.lang.String realmValue
        start local 6 // char[] passwdValue
        start local 7 // byte[] nonceValue
        start local 8 // byte[] cNonceValue
        start local 9 // int nonceCount
        start local 10 // byte[] authzidValue
         0: .line 483
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 11 /* md5 */
        start local 11 // java.security.MessageDigest md5
         1: .line 492
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 14 /* A2 */
        start local 14 // java.io.ByteArrayOutputStream A2
         2: .line 493
            aload 14 /* A2 */
            new java.lang.StringBuilder
            dup
            aload 1 /* authMethod */
            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 2 /* digestUriValue */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
         3: .line 494
            aload 3 /* qopValue */
            ldc "auth-conf"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 495
            aload 3 /* qopValue */
            ldc "auth-int"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 497
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top top java.io.ByteArrayOutputStream
      StackMap stack:
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST04:QOP: {0}"
            aload 3 /* qopValue */
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 499
            aload 14 /* A2 */
            ldc ":00000000000000000000000000000000"
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
         7: .line 502
      StackMap locals:
      StackMap stack:
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 9
         8: .line 503
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST05:A2: {0}"
            aload 14 /* A2 */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
         9: .line 506
      StackMap locals:
      StackMap stack:
            aload 11 /* md5 */
            aload 14 /* A2 */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        10: .line 507
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        start local 18 // byte[] digest
        11: .line 508
            aload 0 /* this */
            aload 18 /* digest */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
            astore 13 /* hexA2 */
        start local 13 // byte[] hexA2
        12: .line 510
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 14
        13: .line 511
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST06:HEX(H(A2)): {0}"
            new java.lang.String
            dup
            aload 13 /* hexA2 */
            invokespecial java.lang.String.<init>:([B)V
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        14: .line 518
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top byte[] java.io.ByteArrayOutputStream top top top byte[]
      StackMap stack:
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 15 /* beginA1 */
        start local 15 // java.io.ByteArrayOutputStream beginA1
        15: .line 519
            aload 15 /* beginA1 */
            aload 0 /* this */
            aload 4 /* usernameValue */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.stringToByte_8859_1:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        16: .line 520
            aload 15 /* beginA1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        17: .line 522
            aload 15 /* beginA1 */
            aload 0 /* this */
            aload 5 /* realmValue */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.stringToByte_8859_1:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        18: .line 523
            aload 15 /* beginA1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        19: .line 524
            aload 15 /* beginA1 */
            aload 0 /* this */
            new java.lang.String
            dup
            aload 6 /* passwdValue */
            invokespecial java.lang.String.<init>:([C)V
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.stringToByte_8859_1:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        20: .line 526
            aload 11 /* md5 */
            aload 15 /* beginA1 */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        21: .line 527
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        22: .line 529
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 26
        23: .line 530
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST07:H({0}) = {1}"
        24: .line 531
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 15 /* beginA1 */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            new java.lang.String
            dup
            aload 0 /* this */
            aload 18 /* digest */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
            invokespecial java.lang.String.<init>:([B)V
            aastore
        25: .line 530
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 539
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream top top byte[]
      StackMap stack:
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 16 /* A1 */
        start local 16 // java.io.ByteArrayOutputStream A1
        27: .line 540
            aload 16 /* A1 */
            aload 18 /* digest */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        28: .line 541
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        29: .line 542
            aload 16 /* A1 */
            aload 7 /* nonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        30: .line 543
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        31: .line 544
            aload 16 /* A1 */
            aload 8 /* cNonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        32: .line 546
            aload 10 /* authzidValue */
            ifnull 35
        33: .line 547
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        34: .line 548
            aload 16 /* A1 */
            aload 10 /* authzidValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        35: .line 550
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream top byte[]
      StackMap stack:
            aload 11 /* md5 */
            aload 16 /* A1 */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        36: .line 551
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        37: .line 552
            aload 0 /* this */
            aload 18 /* digest */
            putfield com.sun.security.sasl.digest.DigestMD5Base.H_A1:[B
        38: .line 553
            aload 0 /* this */
            aload 18 /* digest */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
            astore 12 /* hexA1 */
        start local 12 // byte[] hexA1
        39: .line 555
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 41
        40: .line 556
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST08:H(A1) = {0}"
            new java.lang.String
            dup
            aload 12 /* hexA1 */
            invokespecial java.lang.String.<init>:([B)V
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        41: .line 562
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest byte[] byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream top byte[]
      StackMap stack:
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 17 /* KD */
        start local 17 // java.io.ByteArrayOutputStream KD
        42: .line 563
            aload 17 /* KD */
            aload 12 /* hexA1 */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        43: .line 564
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        44: .line 565
            aload 17 /* KD */
            aload 7 /* nonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        45: .line 566
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        46: .line 567
            aload 17 /* KD */
            iload 9 /* nonceCount */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.nonceCountToHex:(I)Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        47: .line 568
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        48: .line 569
            aload 17 /* KD */
            aload 8 /* cNonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        49: .line 570
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        50: .line 571
            aload 17 /* KD */
            aload 3 /* qopValue */
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        51: .line 572
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        52: .line 573
            aload 17 /* KD */
            aload 13 /* hexA2 */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        53: .line 575
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 55
        54: .line 576
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST09:KD: {0}"
            aload 17 /* KD */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        55: .line 579
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest byte[] byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream byte[]
      StackMap stack:
            aload 11 /* md5 */
            aload 17 /* KD */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        56: .line 580
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        57: .line 582
            aload 0 /* this */
            aload 18 /* digest */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
            astore 19 /* answer */
        start local 19 // byte[] answer
        58: .line 584
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 62
        59: .line 585
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST10:response-value: {0}"
        60: .line 586
            new java.lang.String
            dup
            aload 19 /* answer */
            invokespecial java.lang.String.<init>:([B)V
        61: .line 585
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        62: .line 588
      StackMap locals: byte[]
      StackMap stack:
            aload 19 /* answer */
            areturn
        end local 19 // byte[] answer
        end local 18 // byte[] digest
        end local 17 // java.io.ByteArrayOutputStream KD
        end local 16 // java.io.ByteArrayOutputStream A1
        end local 15 // java.io.ByteArrayOutputStream beginA1
        end local 14 // java.io.ByteArrayOutputStream A2
        end local 13 // byte[] hexA2
        end local 12 // byte[] hexA1
        end local 11 // java.security.MessageDigest md5
        end local 10 // byte[] authzidValue
        end local 9 // int nonceCount
        end local 8 // byte[] cNonceValue
        end local 7 // byte[] nonceValue
        end local 6 // char[] passwdValue
        end local 5 // java.lang.String realmValue
        end local 4 // java.lang.String usernameValue
        end local 3 // java.lang.String qopValue
        end local 2 // java.lang.String digestUriValue
        end local 1 // java.lang.String authMethod
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   63     0            this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0   63     1      authMethod  Ljava/lang/String;
            0   63     2  digestUriValue  Ljava/lang/String;
            0   63     3        qopValue  Ljava/lang/String;
            0   63     4   usernameValue  Ljava/lang/String;
            0   63     5      realmValue  Ljava/lang/String;
            0   63     6     passwdValue  [C
            0   63     7      nonceValue  [B
            0   63     8     cNonceValue  [B
            0   63     9      nonceCount  I
            0   63    10    authzidValue  [B
            1   63    11             md5  Ljava/security/MessageDigest;
           39   63    12           hexA1  [B
           12   63    13           hexA2  [B
            2   63    14              A2  Ljava/io/ByteArrayOutputStream;
           15   63    15         beginA1  Ljava/io/ByteArrayOutputStream;
           27   63    16              A1  Ljava/io/ByteArrayOutputStream;
           42   63    17              KD  Ljava/io/ByteArrayOutputStream;
           11   63    18          digest  [B
           58   63    19          answer  [B
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.io.UnsupportedEncodingException, java.io.IOException
    MethodParameters:
                Name  Flags
      authMethod      
      digestUriValue  
      qopValue        
      usernameValue   
      realmValue      
      passwdValue     
      nonceValue      
      cNonceValue     
      nonceCount      
      authzidValue    

  protected static java.lang.String nonceCountToHex(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // int count
         0: .line 598
            iload 0 /* count */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            astore 1 /* str */
        start local 1 // java.lang.String str
         1: .line 599
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 2 /* pad */
        start local 2 // java.lang.StringBuffer pad
         2: .line 601
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            bipush 8
            if_icmpge 8
         3: .line 602
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 7
         5: .line 603
      StackMap locals: java.lang.String java.lang.StringBuffer int
      StackMap stack:
            aload 2 /* pad */
            ldc "0"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         6: .line 602
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            bipush 8
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            isub
            if_icmplt 5
        end local 3 // int i
         8: .line 607
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 2 /* pad */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* str */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuffer pad
        end local 1 // java.lang.String str
        end local 0 // int count
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0  count  I
            1    9     1    str  Ljava/lang/String;
            2    9     2    pad  Ljava/lang/StringBuffer;
            4    8     3      i  I
    MethodParameters:
       Name  Flags
      count  

  protected static byte[][] parseDirectives(byte[], java.lang.String[], java.util.List<byte[]>, );
    descriptor: ([B[Ljava/lang/String;Ljava/util/List;I)[[B
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // byte[] buf
        start local 1 // java.lang.String[] keyTable
        start local 2 // java.util.List realmChoices
        start local 3 // int realmIndex
         0: .line 622
            aload 1 /* keyTable */
            arraylength
            anewarray byte[]
            astore 4 /* valueTable */
        start local 4 // byte[][] valueTable
         1: .line 624
            new java.io.ByteArrayOutputStream
            dup
            bipush 10
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 5 /* key */
        start local 5 // java.io.ByteArrayOutputStream key
         2: .line 625
            new java.io.ByteArrayOutputStream
            dup
            bipush 10
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 6 /* value */
        start local 6 // java.io.ByteArrayOutputStream value
         3: .line 626
            iconst_1
            istore 7 /* gettingKey */
        start local 7 // boolean gettingKey
         4: .line 627
            iconst_0
            istore 8 /* gettingQuotedValue */
        start local 8 // boolean gettingQuotedValue
         5: .line 628
            iconst_0
            istore 9 /* expectSeparator */
        start local 9 // boolean expectSeparator
         6: .line 631
            aload 0 /* buf */
            iconst_0
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        start local 11 // int i
         7: .line 632
            goto 81
         8: .line 633
      StackMap locals: byte[] java.lang.String[] java.util.List int byte[][] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream int int int top int
      StackMap stack:
            aload 0 /* buf */
            iload 11 /* i */
            baload
            istore 10 /* bch */
        start local 10 // byte bch
         9: .line 635
            iload 7 /* gettingKey */
            ifeq 43
        10: .line 636
            iload 10 /* bch */
            bipush 44
            if_icmpne 17
        11: .line 637
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifeq 15
        12: .line 638
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Directive key contains a ',':"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 639
            aload 5 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 638
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 642
      StackMap locals: byte[] java.lang.String[] java.util.List int byte[][] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream int int int int int
      StackMap stack:
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        16: .line 644
            goto 81
      StackMap locals:
      StackMap stack:
        17: iload 10 /* bch */
            bipush 61
            if_icmpne 30
        18: .line 645
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifne 20
        19: .line 646
            new javax.security.sasl.SaslException
            dup
            ldc "Empty directive key"
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 648
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* gettingKey */
        21: .line 649
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        22: .line 652
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 27
        23: .line 653
            aload 0 /* buf */
            iload 11 /* i */
            baload
            bipush 34
            if_icmpne 81
        24: .line 654
            iconst_1
            istore 8 /* gettingQuotedValue */
        25: .line 655
            iinc 11 /* i */ 1
        26: .line 657
            goto 81
        27: .line 658
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        28: .line 659
            new java.lang.StringBuilder
            dup
            ldc "Valueless directive found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* key */
            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;
        29: .line 658
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 661
      StackMap locals:
      StackMap stack:
            iload 10 /* bch */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
            ifeq 40
        31: .line 663
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        32: .line 666
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 37
        33: .line 667
            aload 0 /* buf */
            iload 11 /* i */
            baload
            bipush 61
            if_icmpeq 81
        34: .line 668
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "'=' expected after key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        35: .line 669
            aload 5 /* key */
            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;
        36: .line 668
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        37: .line 672
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        38: .line 673
            new java.lang.StringBuilder
            dup
            ldc "'=' expected after key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* key */
            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;
        39: .line 672
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        40: .line 676
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        41: .line 677
            iinc 11 /* i */ 1
        42: .line 679
            goto 81
      StackMap locals:
      StackMap stack:
        43: iload 8 /* gettingQuotedValue */
            ifeq 63
        44: .line 681
            iload 10 /* bch */
            bipush 92
            if_icmpne 55
        45: .line 683
            iinc 11 /* i */ 1
        46: .line 684
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 50
        47: .line 685
            aload 6 /* value */
            aload 0 /* buf */
            iload 11 /* i */
            baload
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        48: .line 686
            iinc 11 /* i */ 1
        49: .line 687
            goto 81
        50: .line 689
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        51: .line 690
            new java.lang.StringBuilder
            dup
            ldc "Unmatched quote found for directive: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        52: .line 691
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " with value: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        53: .line 690
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        54: .line 689
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 693
      StackMap locals:
      StackMap stack:
            iload 10 /* bch */
            bipush 34
            if_icmpne 60
        56: .line 695
            iinc 11 /* i */ 1
        57: .line 696
            iconst_0
            istore 8 /* gettingQuotedValue */
        58: .line 697
            iconst_1
            istore 9 /* expectSeparator */
        59: .line 698
            goto 81
        60: .line 699
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        61: .line 700
            iinc 11 /* i */ 1
        62: .line 703
            goto 81
      StackMap locals:
      StackMap stack:
        63: iload 10 /* bch */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
            ifne 64
            iload 10 /* bch */
            bipush 44
            if_icmpne 73
        64: .line 706
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
        65: .line 707
            aload 1 /* keyTable */
            aload 4 /* valueTable */
            aload 2 /* realmChoices */
            iload 3 /* realmIndex */
        66: .line 706
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
        67: .line 708
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        68: .line 709
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        69: .line 710
            iconst_1
            istore 7 /* gettingKey */
        70: .line 711
            iconst_0
            dup
            istore 9 /* expectSeparator */
            istore 8 /* gettingQuotedValue */
        71: .line 712
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        72: .line 714
            goto 81
      StackMap locals:
      StackMap stack:
        73: iload 9 /* expectSeparator */
            ifeq 79
        74: .line 715
            new javax.security.sasl.SaslException
            dup
        75: .line 716
            new java.lang.StringBuilder
            dup
            ldc "Expecting comma or linear whitespace after quoted string: \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        76: .line 717
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        77: .line 716
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        78: .line 715
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        79: .line 719
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        80: .line 720
            iinc 11 /* i */ 1
        end local 10 // byte bch
        81: .line 632
      StackMap locals: byte[] java.lang.String[] java.util.List int byte[][] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream int int int top int
      StackMap stack:
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmplt 8
        82: .line 724
            iload 8 /* gettingQuotedValue */
            ifeq 88
        83: .line 725
            new javax.security.sasl.SaslException
            dup
        84: .line 726
            new java.lang.StringBuilder
            dup
            ldc "Unmatched quote found for directive: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        85: .line 727
            ldc " with value: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        86: .line 726
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        87: .line 725
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        88: .line 731
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifle 92
        89: .line 732
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
        90: .line 733
            aload 1 /* keyTable */
            aload 4 /* valueTable */
            aload 2 /* realmChoices */
            iload 3 /* realmIndex */
        91: .line 732
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
        92: .line 736
      StackMap locals:
      StackMap stack:
            aload 4 /* valueTable */
            areturn
        end local 11 // int i
        end local 9 // boolean expectSeparator
        end local 8 // boolean gettingQuotedValue
        end local 7 // boolean gettingKey
        end local 6 // java.io.ByteArrayOutputStream value
        end local 5 // java.io.ByteArrayOutputStream key
        end local 4 // byte[][] valueTable
        end local 3 // int realmIndex
        end local 2 // java.util.List realmChoices
        end local 1 // java.lang.String[] keyTable
        end local 0 // byte[] buf
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   93     0                 buf  [B
            0   93     1            keyTable  [Ljava/lang/String;
            0   93     2        realmChoices  Ljava/util/List<[B>;
            0   93     3          realmIndex  I
            1   93     4          valueTable  [[B
            2   93     5                 key  Ljava/io/ByteArrayOutputStream;
            3   93     6               value  Ljava/io/ByteArrayOutputStream;
            4   93     7          gettingKey  Z
            5   93     8  gettingQuotedValue  Z
            6   93     9     expectSeparator  Z
            9   81    10                 bch  B
            7   93    11                   i  I
    Exceptions:
      throws javax.security.sasl.SaslException
    Signature: ([B[Ljava/lang/String;Ljava/util/List<[B>;I)[[B
    MethodParameters:
              Name  Flags
      buf           
      keyTable      
      realmChoices  
      realmIndex    

  private static boolean isLws(byte);
    descriptor: (B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // byte b
         0: .line 743
            iload 0 /* b */
            lookupswitch { // 4
                    9: 1
                   10: 1
                   13: 1
                   32: 1
              default: 2
          }
         1: .line 748
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         2: .line 750
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static int skipLws(byte[], int);
    descriptor: ([BI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // byte[] buf
        start local 1 // int start
         0: .line 756
            iload 1 /* start */
            istore 2 /* i */
        start local 2 // int i
         1: goto 5
         2: .line 757
      StackMap locals: int
      StackMap stack:
            aload 0 /* buf */
            iload 2 /* i */
            baload
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
            ifne 4
         3: .line 758
            iload 2 /* i */
            ireturn
         4: .line 756
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* buf */
            arraylength
            if_icmplt 2
         6: .line 761
            iload 2 /* i */
            ireturn
        end local 2 // int i
        end local 1 // int start
        end local 0 // byte[] buf
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0    buf  [B
            0    7     1  start  I
            1    7     2      i  I
    MethodParameters:
       Name  Flags
      buf    
      start  

  private static void extractDirective(java.lang.String, byte[], java.lang.String[], byte[][], java.util.List<byte[]>, );
    descriptor: (Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=7, args_size=6
        start local 0 // java.lang.String key
        start local 1 // byte[] value
        start local 2 // java.lang.String[] keyTable
        start local 3 // byte[][] valueTable
        start local 4 // java.util.List realmChoices
        start local 5 // int realmIndex
         0: .line 776
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         1: goto 23
         2: .line 777
      StackMap locals: int
      StackMap stack:
            aload 0 /* key */
            aload 2 /* keyTable */
            iload 6 /* i */
            aaload
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 22
         3: .line 778
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            ifnonnull 12
         4: .line 779
            aload 3 /* valueTable */
            iload 6 /* i */
            aload 1 /* value */
            aastore
         5: .line 780
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 24
         6: .line 781
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
            ldc "DIGEST11:Directive {0} = {1}"
         7: .line 782
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 783
            aload 2 /* keyTable */
            iload 6 /* i */
            aaload
            aastore
            dup
            iconst_1
         9: .line 784
            new java.lang.String
            dup
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            invokespecial java.lang.String.<init>:([B)V
            aastore
        10: .line 781
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        11: .line 786
            goto 24
      StackMap locals:
      StackMap stack:
        12: aload 4 /* realmChoices */
            ifnull 17
            iload 6 /* i */
            iload 5 /* realmIndex */
            if_icmpne 17
        13: .line 788
            aload 4 /* realmChoices */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 15
        14: .line 789
            aload 4 /* realmChoices */
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 791
      StackMap locals:
      StackMap stack:
            aload 4 /* realmChoices */
            aload 1 /* value */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 792
            goto 24
        17: .line 793
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        18: .line 794
            new java.lang.StringBuilder
            dup
            ldc "DIGEST-MD5: peer sent more than one "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 795
            aload 0 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " directive: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            new java.lang.String
            dup
            aload 1 /* value */
            invokespecial java.lang.String.<init>:([B)V
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: .line 794
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 793
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 776
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 6 /* i */
            aload 2 /* keyTable */
            arraylength
            if_icmplt 2
        end local 6 // int i
        24: .line 801
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int realmIndex
        end local 4 // java.util.List realmChoices
        end local 3 // byte[][] valueTable
        end local 2 // java.lang.String[] keyTable
        end local 1 // byte[] value
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   25     0           key  Ljava/lang/String;
            0   25     1         value  [B
            0   25     2      keyTable  [Ljava/lang/String;
            0   25     3    valueTable  [[B
            0   25     4  realmChoices  Ljava/util/List<[B>;
            0   25     5    realmIndex  I
            1   24     6             i  I
    Exceptions:
      throws javax.security.sasl.SaslException
    Signature: (Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List<[B>;I)V
    MethodParameters:
              Name  Flags
      key           
      value         
      keyTable      
      valueTable    
      realmChoices  
      realmIndex    

  private static void setParityBit(byte[]);
    descriptor: ([B)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // byte[] key
         0: .line 1520
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 6
         2: .line 1521
      StackMap locals: int
      StackMap stack:
            aload 0 /* key */
            iload 1 /* i */
            baload
            sipush 254
            iand
            istore 2 /* b */
        start local 2 // int b
         3: .line 1522
            iload 2 /* b */
            iload 2 /* b */
            invokestatic java.lang.Integer.bitCount:(I)I
            iconst_1
            iand
            iconst_1
            ixor
            ior
            istore 2 /* b */
         4: .line 1523
            aload 0 /* key */
            iload 1 /* i */
            iload 2 /* b */
            i2b
            bastore
        end local 2 // int b
         5: .line 1520
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 1 /* i */
            aload 0 /* key */
            arraylength
            if_icmplt 2
        end local 1 // int i
         7: .line 1525
            return
        end local 0 // byte[] key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0   key  [B
            1    7     1     i  I
            3    5     2     b  I
    MethodParameters:
      Name  Flags
      key   

  private static byte[] addDesParity(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // byte[] input
        start local 1 // int offset
        start local 2 // int len
         0: .line 1537
            iload 2 /* len */
            bipush 7
            if_icmpeq 4
         1: .line 1538
            new java.lang.IllegalArgumentException
            dup
         2: .line 1539
            new java.lang.StringBuilder
            dup
            ldc "Invalid length of DES Key Value:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 1538
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1541
      StackMap locals:
      StackMap stack:
            bipush 7
            newarray 8
            astore 3 /* raw */
        start local 3 // byte[] raw
         5: .line 1542
            aload 0 /* input */
            iload 1 /* offset */
            aload 3 /* raw */
            iconst_0
            iload 2 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 1544
            bipush 8
            newarray 8
            astore 4 /* result */
        start local 4 // byte[] result
         7: .line 1545
            new java.math.BigInteger
            dup
            aload 3 /* raw */
            invokespecial java.math.BigInteger.<init>:([B)V
            astore 5 /* in */
        start local 5 // java.math.BigInteger in
         8: .line 1548
            aload 4 /* result */
            arraylength
            iconst_1
            isub
            istore 6 /* i */
        start local 6 // int i
         9: goto 14
        10: .line 1549
      StackMap locals: byte[] int int byte[] byte[] java.math.BigInteger int
      StackMap stack:
            aload 4 /* result */
            iload 6 /* i */
            aload 5 /* in */
            getstatic com.sun.security.sasl.digest.DigestMD5Base.MASK:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.and:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.toByteArray:()[B
            iconst_0
            baload
            bastore
        11: .line 1550
            aload 4 /* result */
            iload 6 /* i */
            dup2
            baload
            iconst_1
            ishl
            i2b
            bastore
        12: .line 1551
            aload 5 /* in */
            bipush 7
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 5 /* in */
        13: .line 1548
            iinc 6 /* i */ -1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            ifge 10
        end local 6 // int i
        15: .line 1553
            aload 4 /* result */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.setParityBit:([B)V
        16: .line 1554
            aload 4 /* result */
            areturn
        end local 5 // java.math.BigInteger in
        end local 4 // byte[] result
        end local 3 // byte[] raw
        end local 2 // int len
        end local 1 // int offset
        end local 0 // byte[] input
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0   input  [B
            0   17     1  offset  I
            0   17     2     len  I
            5   17     3     raw  [B
            7   17     4  result  [B
            8   17     5      in  Ljava/math/BigInteger;
            9   15     6       i  I
    MethodParameters:
        Name  Flags
      input   
      offset  
      len     

  private static javax.crypto.SecretKey makeDesKeys(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)Ljavax/crypto/SecretKey;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // byte[] input
        start local 1 // java.lang.String desStrength
         0: .line 1577
            aload 0 /* input */
            iconst_0
            bipush 7
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.addDesParity:([BII)[B
            astore 2 /* subkey1 */
        start local 2 // byte[] subkey1
         1: .line 1579
            aconst_null
            astore 3 /* spec */
        start local 3 // java.security.spec.KeySpec spec
         2: .line 1581
            aload 1 /* desStrength */
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
         3: .line 1580
            astore 4 /* desFactory */
        start local 4 // javax.crypto.SecretKeyFactory desFactory
         4: .line 1582
            aload 1 /* desStrength */
            dup
            astore 5
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
          -1335250348: 5
                99346: 6
              default: 45
          }
      StackMap locals: byte[] java.lang.String byte[] java.security.spec.KeySpec javax.crypto.SecretKeyFactory java.lang.String
      StackMap stack:
         5: aload 5
            ldc "desede"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 45
      StackMap locals:
      StackMap stack:
         6: aload 5
            ldc "des"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 45
         7: .line 1584
      StackMap locals:
      StackMap stack:
            new javax.crypto.spec.DESKeySpec
            dup
            aload 2 /* subkey1 */
            iconst_0
            invokespecial javax.crypto.spec.DESKeySpec.<init>:([BI)V
            astore 3 /* spec */
         8: .line 1585
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 48
         9: .line 1586
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        10: .line 1587
            ldc "DIGEST42:DES key input: "
            aload 0 /* input */
        11: .line 1586
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        12: .line 1588
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        13: .line 1589
            ldc "DIGEST43:DES key parity-adjusted: "
            aload 2 /* subkey1 */
        14: .line 1588
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        15: .line 1590
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        16: .line 1591
            ldc "DIGEST44:DES key material: "
            aload 3 /* spec */
            checkcast javax.crypto.spec.DESKeySpec
            invokevirtual javax.crypto.spec.DESKeySpec.getKey:()[B
        17: .line 1590
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        18: .line 1592
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
            ldc "DIGEST45: is parity-adjusted? {0}"
        19: .line 1593
            aload 2 /* subkey1 */
            iconst_0
            invokestatic javax.crypto.spec.DESKeySpec.isParityAdjusted:([BI)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        20: .line 1592
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        21: .line 1595
            goto 48
        22: .line 1598
      StackMap locals:
      StackMap stack:
            aload 0 /* input */
            bipush 7
            bipush 7
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.addDesParity:([BII)[B
            astore 6 /* subkey2 */
        start local 6 // byte[] subkey2
        23: .line 1600
            aload 2 /* subkey1 */
            arraylength
            iconst_2
            imul
            aload 6 /* subkey2 */
            arraylength
            iadd
            newarray 8
            astore 7 /* ede */
        start local 7 // byte[] ede
        24: .line 1601
            aload 2 /* subkey1 */
            iconst_0
            aload 7 /* ede */
            iconst_0
            aload 2 /* subkey1 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        25: .line 1602
            aload 6 /* subkey2 */
            iconst_0
            aload 7 /* ede */
            aload 2 /* subkey1 */
            arraylength
            aload 6 /* subkey2 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        26: .line 1603
            aload 2 /* subkey1 */
            iconst_0
            aload 7 /* ede */
            aload 2 /* subkey1 */
            arraylength
            aload 6 /* subkey2 */
            arraylength
            iadd
        27: .line 1604
            aload 2 /* subkey1 */
            arraylength
        28: .line 1603
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 1605
            new javax.crypto.spec.DESedeKeySpec
            dup
            aload 7 /* ede */
            iconst_0
            invokespecial javax.crypto.spec.DESedeKeySpec.<init>:([BI)V
            astore 3 /* spec */
        30: .line 1606
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 48
        31: .line 1607
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        32: .line 1608
            ldc "DIGEST46:3DES key input: "
            aload 0 /* input */
        33: .line 1607
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        34: .line 1609
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        35: .line 1610
            ldc "DIGEST47:3DES key ede: "
            aload 7 /* ede */
        36: .line 1609
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        37: .line 1611
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        38: .line 1612
            ldc "DIGEST48:3DES key material: "
        39: .line 1613
            aload 3 /* spec */
            checkcast javax.crypto.spec.DESedeKeySpec
            invokevirtual javax.crypto.spec.DESedeKeySpec.getKey:()[B
        40: .line 1611
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        41: .line 1614
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
            ldc "DIGEST49: is parity-adjusted? "
        42: .line 1615
            aload 7 /* ede */
            iconst_0
            invokestatic javax.crypto.spec.DESedeKeySpec.isParityAdjusted:([BI)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        43: .line 1614
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        44: .line 1617
            goto 48
        end local 7 // byte[] ede
        end local 6 // byte[] subkey2
        45: .line 1619
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid DES strength:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        46: .line 1620
            aload 1 /* desStrength */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 1619
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 1622
      StackMap locals:
      StackMap stack:
            aload 4 /* desFactory */
            aload 3 /* spec */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            areturn
        end local 4 // javax.crypto.SecretKeyFactory desFactory
        end local 3 // java.security.spec.KeySpec spec
        end local 2 // byte[] subkey1
        end local 1 // java.lang.String desStrength
        end local 0 // byte[] input
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   49     0        input  [B
            0   49     1  desStrength  Ljava/lang/String;
            1   49     2      subkey1  [B
            2   49     3         spec  Ljava/security/spec/KeySpec;
            4   49     4   desFactory  Ljavax/crypto/SecretKeyFactory;
           23   45     6      subkey2  [B
           24   45     7          ede  [B
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException, java.security.spec.InvalidKeySpecException
    MethodParameters:
             Name  Flags
      input        
      desStrength  

  static void access$0(int, byte[], int, int);
    descriptor: (I[BII)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            iload 0
            aload 1
            iload 2
            iload 3
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.intToNetworkByteOrder:(I[BII)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static java.util.logging.Logger access$1();
    descriptor: ()Ljava/util/logging/Logger;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 72
            getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void access$2(java.lang.String, java.lang.String, java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            aload 3
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void access$3(java.lang.String, java.lang.String, java.lang.String, byte[], int, int);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=6, locals=6, args_size=6
         0: .line 1
            aload 0
            aload 1
            aload 2
            aload 3
            iload 4
            iload 5
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int access$4(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            iload 1
            iload 2
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.networkByteOrderToInt:([BII)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "DigestMD5Base.java"
NestMembers:
  com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity  com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy
InnerClasses:
  DigestIntegrity = com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity of com.sun.security.sasl.digest.DigestMD5Base
  final DigestPrivacy = com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy of com.sun.security.sasl.digest.DigestMD5Base