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 275
            bipush 64
            newarray 5
            dup
            iconst_0
        21: .line 277
            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 278
            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 279
            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 280
            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 281
            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 282
            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 283
            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 284
            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 275
            putstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
        30: .line 1514
            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 6
         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 252
      StackMap locals:
      StackMap stack:
            aload 1 /* propName */
            ldc "javax.security.sasl.bound.server.name"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 253
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.digestUri:Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.digestUri:Ljava/lang/String;
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
         5: .line 255
      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
         6: .line 258
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
         7: .line 259
            ldc "DIGEST-MD5 authentication not completed"
         8: .line 258
            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    9     0      this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0    9     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 296
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            astore 0 /* random */
        start local 0 // java.util.Random random
         1: .line 297
            bipush 30
            newarray 8
            astore 1 /* randomData */
        start local 1 // byte[] randomData
         2: .line 298
            aload 0 /* random */
            aload 1 /* randomData */
            invokevirtual java.util.Random.nextBytes:([B)V
         3: .line 300
            bipush 40
            newarray 8
            astore 2 /* nonce */
        start local 2 // byte[] nonce
         4: .line 304
            iconst_0
            istore 6 /* j */
        start local 6 // int j
         5: .line 305
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         6: goto 15
         7: .line 306
      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 307
            aload 1 /* randomData */
            iload 7 /* i */
            iconst_1
            iadd
            baload
            istore 4 /* b */
        start local 4 // byte b
         9: .line 308
            aload 1 /* randomData */
            iload 7 /* i */
            iconst_2
            iadd
            baload
            istore 5 /* c */
        start local 5 // byte c
        10: .line 309
            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 310
            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 311
            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 312
            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 305
            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 315
            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 329
            aload 1 /* buf */
            arraylength
            istore 2 /* len */
        start local 2 // int len
         1: .line 331
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 8
         3: .line 332
      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 333
            iload 3 /* ch */
            i2c
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
            ifeq 6
         5: .line 334
            aload 0 /* out */
            bipush 92
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
         6: .line 336
      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 331
            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 338
            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 343
            aload 0 /* str */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         1: .line 344
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 345
      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 346
            iconst_1
            ireturn
         5: .line 344
      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 349
            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 354
            iload 0 /* ch */
            bipush 34
            if_icmpeq 5
         1: .line 355
            iload 0 /* ch */
            bipush 92
            if_icmpeq 5
         2: .line 356
            iload 0 /* ch */
            bipush 127
            if_icmpeq 5
         3: .line 359
            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 354
      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 363
            aload 0 /* str */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(Ljava/lang/String;)Z
            ifeq 13
         1: .line 364
            aload 0 /* str */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         2: .line 365
            iload 1 /* len */
            iload 1 /* len */
            iadd
            newarray 5
            astore 2 /* buf */
        start local 2 // char[] buf
         3: .line 366
            iconst_0
            istore 3 /* j */
        start local 3 // int j
         4: .line 368
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 11
         6: .line 369
      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 370
            iload 4 /* ch */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
            ifeq 9
         8: .line 371
            aload 2 /* buf */
            iload 3 /* j */
            iinc 3 /* j */ 1
            bipush 92
            castore
         9: .line 373
      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 368
            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 375
            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 377
      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=3, locals=4, args_size=2
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // byte[] digest
         0: .line 390
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* digestString */
        start local 2 // java.lang.StringBuilder digestString
         1: .line 392
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 10
         3: .line 393
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 1 /* digest */
            iload 3 /* i */
            baload
            sipush 255
            iand
            bipush 16
            if_icmpge 6
         4: .line 394
            aload 2 /* digestString */
            bipush 48
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            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;
            pop
         5: .line 395
            goto 9
         6: .line 396
      StackMap locals:
      StackMap stack:
            aload 2 /* digestString */
         7: .line 397
            aload 1 /* digest */
            iload 3 /* i */
            baload
            sipush 255
            iand
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
         8: .line 396
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 392
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* digest */
            arraylength
            if_icmplt 3
        end local 3 // int i
        11: .line 400
            aload 2 /* digestString */
            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
            areturn
        end local 2 // java.lang.StringBuilder digestString
        end local 1 // byte[] digest
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0          this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0   12     1        digest  [B
            1   12     2  digestString  Ljava/lang/StringBuilder;
            2   11     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 413
            aload 1 /* str */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 2 /* buffer */
        start local 2 // char[] buffer
         1: .line 416
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.useUTF8:Z
            ifeq 9
         2: .line 417
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 8
         4: .line 418
      StackMap locals: char[] int
      StackMap stack:
            aload 2 /* buffer */
            iload 3 /* i */
            caload
            sipush 255
            if_icmple 7
         5: .line 419
            aload 1 /* str */
            ldc "UTF8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
         6: areturn
         7: .line 417
      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 423
      StackMap locals:
      StackMap stack:
            aload 1 /* str */
            ldc "8859_1"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
        10: areturn
        11: .line 424
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 3 /* e */
        start local 3 // java.io.UnsupportedEncodingException e
        12: .line 425
            new javax.security.sasl.SaslException
            dup
        13: .line 426
            ldc "cannot encode string in UTF8 or 8859-1 (Latin-1)"
            aload 3 /* e */
        14: .line 425
            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 431
            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 433
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         2: goto 10
         3: .line 437
      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 439
            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 440
            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 441
            goto 9
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
         7: pop
            goto 9
         8: .line 443
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            pop
         9: .line 433
      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 448
            aload 0 /* ciphers */
            iconst_1
            baload
            ifeq 14
        12: .line 449
            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 450
            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 453
      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 484
            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 493
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 14 /* A2 */
        start local 14 // java.io.ByteArrayOutputStream A2
         2: .line 494
            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 495
            aload 3 /* qopValue */
            ldc "auth-conf"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 496
            aload 3 /* qopValue */
            ldc "auth-int"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 498
      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 500
            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 503
      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 504
            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 507
      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 508
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        start local 18 // byte[] digest
        11: .line 509
            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 511
            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 512
            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 519
      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 520
            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 521
            aload 15 /* beginA1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        17: .line 523
            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 524
            aload 15 /* beginA1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        19: .line 525
            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 527
            aload 11 /* md5 */
            aload 15 /* beginA1 */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        21: .line 528
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        22: .line 530
            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 531
            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 532
            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 531
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 540
      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 541
            aload 16 /* A1 */
            aload 18 /* digest */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        28: .line 542
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        29: .line 543
            aload 16 /* A1 */
            aload 7 /* nonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        30: .line 544
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        31: .line 545
            aload 16 /* A1 */
            aload 8 /* cNonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        32: .line 547
            aload 10 /* authzidValue */
            ifnull 35
        33: .line 548
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        34: .line 549
            aload 16 /* A1 */
            aload 10 /* authzidValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        35: .line 551
      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 552
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        37: .line 553
            aload 0 /* this */
            aload 18 /* digest */
            putfield com.sun.security.sasl.digest.DigestMD5Base.H_A1:[B
        38: .line 554
            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 556
            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 557
            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 563
      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 564
            aload 17 /* KD */
            aload 12 /* hexA1 */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        43: .line 565
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        44: .line 566
            aload 17 /* KD */
            aload 7 /* nonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        45: .line 567
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        46: .line 568
            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 569
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        48: .line 570
            aload 17 /* KD */
            aload 8 /* cNonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        49: .line 571
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        50: .line 572
            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 573
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        52: .line 574
            aload 17 /* KD */
            aload 13 /* hexA2 */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        53: .line 576
            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 577
            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 580
      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 581
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        57: .line 583
            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 585
            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 586
            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 587
            new java.lang.String
            dup
            aload 19 /* answer */
            invokespecial java.lang.String.<init>:([B)V
        61: .line 586
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        62: .line 589
      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 599
            iload 0 /* count */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            astore 1 /* str */
        start local 1 // java.lang.String str
         1: .line 600
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* pad */
        start local 2 // java.lang.StringBuilder pad
         2: .line 602
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            bipush 8
            if_icmpge 8
         3: .line 603
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 7
         5: .line 604
      StackMap locals: java.lang.String java.lang.StringBuilder int
      StackMap stack:
            aload 2 /* pad */
            ldc "0"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 603
            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 608
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 2 /* pad */
            invokevirtual java.lang.StringBuilder.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.StringBuilder 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/StringBuilder;
            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 623
            aload 1 /* keyTable */
            arraylength
            anewarray byte[]
            astore 4 /* valueTable */
        start local 4 // byte[][] valueTable
         1: .line 625
            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 626
            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 627
            iconst_1
            istore 7 /* gettingKey */
        start local 7 // boolean gettingKey
         4: .line 628
            iconst_0
            istore 8 /* gettingQuotedValue */
        start local 8 // boolean gettingQuotedValue
         5: .line 629
            iconst_0
            istore 9 /* expectSeparator */
        start local 9 // boolean expectSeparator
         6: .line 632
            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 633
            goto 81
         8: .line 634
      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 636
            iload 7 /* gettingKey */
            ifeq 43
        10: .line 637
            iload 10 /* bch */
            bipush 44
            if_icmpne 17
        11: .line 638
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifeq 15
        12: .line 639
            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 640
            aload 5 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 639
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 643
      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 645
            goto 81
      StackMap locals:
      StackMap stack:
        17: iload 10 /* bch */
            bipush 61
            if_icmpne 30
        18: .line 646
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifne 20
        19: .line 647
            new javax.security.sasl.SaslException
            dup
            ldc "Empty directive key"
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 649
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* gettingKey */
        21: .line 650
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        22: .line 653
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 27
        23: .line 654
            aload 0 /* buf */
            iload 11 /* i */
            baload
            bipush 34
            if_icmpne 81
        24: .line 655
            iconst_1
            istore 8 /* gettingQuotedValue */
        25: .line 656
            iinc 11 /* i */ 1
        26: .line 658
            goto 81
        27: .line 659
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        28: .line 660
            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 659
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 662
      StackMap locals:
      StackMap stack:
            iload 10 /* bch */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
            ifeq 40
        31: .line 664
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        32: .line 667
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 37
        33: .line 668
            aload 0 /* buf */
            iload 11 /* i */
            baload
            bipush 61
            if_icmpeq 81
        34: .line 669
            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 670
            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 669
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        37: .line 673
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        38: .line 674
            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 673
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        40: .line 677
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        41: .line 678
            iinc 11 /* i */ 1
        42: .line 680
            goto 81
      StackMap locals:
      StackMap stack:
        43: iload 8 /* gettingQuotedValue */
            ifeq 63
        44: .line 682
            iload 10 /* bch */
            bipush 92
            if_icmpne 55
        45: .line 684
            iinc 11 /* i */ 1
        46: .line 685
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 50
        47: .line 686
            aload 6 /* value */
            aload 0 /* buf */
            iload 11 /* i */
            baload
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        48: .line 687
            iinc 11 /* i */ 1
        49: .line 688
            goto 81
        50: .line 690
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        51: .line 691
            new java.lang.StringBuilder
            dup
            ldc "Unmatched quote found for directive: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        52: .line 692
            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 691
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        54: .line 690
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 694
      StackMap locals:
      StackMap stack:
            iload 10 /* bch */
            bipush 34
            if_icmpne 60
        56: .line 696
            iinc 11 /* i */ 1
        57: .line 697
            iconst_0
            istore 8 /* gettingQuotedValue */
        58: .line 698
            iconst_1
            istore 9 /* expectSeparator */
        59: .line 699
            goto 81
        60: .line 700
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        61: .line 701
            iinc 11 /* i */ 1
        62: .line 704
            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 707
      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 708
            aload 1 /* keyTable */
            aload 4 /* valueTable */
            aload 2 /* realmChoices */
            iload 3 /* realmIndex */
        66: .line 707
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
        67: .line 709
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        68: .line 710
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        69: .line 711
            iconst_1
            istore 7 /* gettingKey */
        70: .line 712
            iconst_0
            dup
            istore 9 /* expectSeparator */
            istore 8 /* gettingQuotedValue */
        71: .line 713
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        72: .line 715
            goto 81
      StackMap locals:
      StackMap stack:
        73: iload 9 /* expectSeparator */
            ifeq 79
        74: .line 716
            new javax.security.sasl.SaslException
            dup
        75: .line 717
            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 718
            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 717
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        78: .line 716
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        79: .line 720
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        80: .line 721
            iinc 11 /* i */ 1
        end local 10 // byte bch
        81: .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:
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmplt 8
        82: .line 725
            iload 8 /* gettingQuotedValue */
            ifeq 88
        83: .line 726
            new javax.security.sasl.SaslException
            dup
        84: .line 727
            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 728
            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 727
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        87: .line 726
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        88: .line 732
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifle 92
        89: .line 733
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
        90: .line 734
            aload 1 /* keyTable */
            aload 4 /* valueTable */
            aload 2 /* realmChoices */
            iload 3 /* realmIndex */
        91: .line 733
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
        92: .line 737
      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 744
            iload 0 /* b */
            lookupswitch { // 4
                    9: 1
                   10: 1
                   13: 1
                   32: 1
              default: 2
          }
         1: .line 749
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         2: .line 751
      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 757
            iload 1 /* start */
            istore 2 /* i */
        start local 2 // int i
         1: goto 5
         2: .line 758
      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 759
            iload 2 /* i */
            ireturn
         4: .line 757
      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 762
            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 777
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         1: goto 23
         2: .line 778
      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 779
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            ifnonnull 12
         4: .line 780
            aload 3 /* valueTable */
            iload 6 /* i */
            aload 1 /* value */
            aastore
         5: .line 781
            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 782
            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 783
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 784
            aload 2 /* keyTable */
            iload 6 /* i */
            aaload
            aastore
            dup
            iconst_1
         9: .line 785
            new java.lang.String
            dup
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            invokespecial java.lang.String.<init>:([B)V
            aastore
        10: .line 782
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        11: .line 787
            goto 24
      StackMap locals:
      StackMap stack:
        12: aload 4 /* realmChoices */
            ifnull 17
            iload 6 /* i */
            iload 5 /* realmIndex */
            if_icmpne 17
        13: .line 789
            aload 4 /* realmChoices */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 15
        14: .line 790
            aload 4 /* realmChoices */
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 792
      StackMap locals:
      StackMap stack:
            aload 4 /* realmChoices */
            aload 1 /* value */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 793
            goto 24
        17: .line 794
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        18: .line 795
            new java.lang.StringBuilder
            dup
            ldc "DIGEST-MD5: peer sent more than one "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 796
            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 795
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 794
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 777
      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 802
      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 1521
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 6
         2: .line 1522
      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 1523
            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 1524
            aload 0 /* key */
            iload 1 /* i */
            iload 2 /* b */
            i2b
            bastore
        end local 2 // int b
         5: .line 1521
            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 1526
            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 1538
            iload 2 /* len */
            bipush 7
            if_icmpeq 4
         1: .line 1539
            new java.lang.IllegalArgumentException
            dup
         2: .line 1540
            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 1539
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1542
      StackMap locals:
      StackMap stack:
            bipush 7
            newarray 8
            astore 3 /* raw */
        start local 3 // byte[] raw
         5: .line 1543
            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 1545
            bipush 8
            newarray 8
            astore 4 /* result */
        start local 4 // byte[] result
         7: .line 1546
            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 1549
            aload 4 /* result */
            arraylength
            iconst_1
            isub
            istore 6 /* i */
        start local 6 // int i
         9: goto 14
        10: .line 1550
      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 1551
            aload 4 /* result */
            iload 6 /* i */
            dup2
            baload
            iconst_1
            ishl
            i2b
            bastore
        12: .line 1552
            aload 5 /* in */
            bipush 7
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 5 /* in */
        13: .line 1549
            iinc 6 /* i */ -1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            ifge 10
        end local 6 // int i
        15: .line 1554
            aload 4 /* result */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.setParityBit:([B)V
        16: .line 1555
            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 1578
            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 1580
            aconst_null
            astore 3 /* spec */
        start local 3 // java.security.spec.KeySpec spec
         2: .line 1582
            aload 1 /* desStrength */
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
         3: .line 1581
            astore 4 /* desFactory */
        start local 4 // javax.crypto.SecretKeyFactory desFactory
         4: .line 1583
            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 1585
      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 1586
            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 1587
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        10: .line 1588
            ldc "DIGEST42:DES key input: "
            aload 0 /* input */
        11: .line 1587
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        12: .line 1589
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        13: .line 1590
            ldc "DIGEST43:DES key parity-adjusted: "
            aload 2 /* subkey1 */
        14: .line 1589
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        15: .line 1591
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        16: .line 1592
            ldc "DIGEST44:DES key material: "
            aload 3 /* spec */
            checkcast javax.crypto.spec.DESKeySpec
            invokevirtual javax.crypto.spec.DESKeySpec.getKey:()[B
        17: .line 1591
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        18: .line 1593
            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 1594
            aload 2 /* subkey1 */
            iconst_0
            invokestatic javax.crypto.spec.DESKeySpec.isParityAdjusted:([BI)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        20: .line 1593
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        21: .line 1596
            goto 48
        22: .line 1599
      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 1601
            aload 2 /* subkey1 */
            arraylength
            iconst_2
            imul
            aload 6 /* subkey2 */
            arraylength
            iadd
            newarray 8
            astore 7 /* ede */
        start local 7 // byte[] ede
        24: .line 1602
            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 1603
            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 1604
            aload 2 /* subkey1 */
            iconst_0
            aload 7 /* ede */
            aload 2 /* subkey1 */
            arraylength
            aload 6 /* subkey2 */
            arraylength
            iadd
        27: .line 1605
            aload 2 /* subkey1 */
            arraylength
        28: .line 1604
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 1606
            new javax.crypto.spec.DESedeKeySpec
            dup
            aload 7 /* ede */
            iconst_0
            invokespecial javax.crypto.spec.DESedeKeySpec.<init>:([BI)V
            astore 3 /* spec */
        30: .line 1607
            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 1608
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        32: .line 1609
            ldc "DIGEST46:3DES key input: "
            aload 0 /* input */
        33: .line 1608
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        34: .line 1610
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        35: .line 1611
            ldc "DIGEST47:3DES key ede: "
            aload 7 /* ede */
        36: .line 1610
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        37: .line 1612
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        38: .line 1613
            ldc "DIGEST48:3DES key material: "
        39: .line 1614
            aload 3 /* spec */
            checkcast javax.crypto.spec.DESedeKeySpec
            invokevirtual javax.crypto.spec.DESedeKeySpec.getKey:()[B
        40: .line 1612
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        41: .line 1615
            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 1616
            aload 7 /* ede */
            iconst_0
            invokestatic javax.crypto.spec.DESedeKeySpec.isParityAdjusted:([BI)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        43: .line 1615
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        44: .line 1618
            goto 48
        end local 7 // byte[] ede
        end local 6 // byte[] subkey2
        45: .line 1620
      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 1621
            aload 1 /* desStrength */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 1620
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 1623
      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