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.nio.charset.Charset encoding;
    descriptor: Ljava/nio/charset/Charset;
    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 1489
            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 */
            getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
            putfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
         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 389
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* digestString */
        start local 2 // java.lang.StringBuilder digestString
         1: .line 391
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 10
         3: .line 392
      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 393
            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 394
            goto 9
         6: .line 395
      StackMap locals:
      StackMap stack:
            aload 2 /* digestString */
         7: .line 396
            aload 1 /* digest */
            iload 3 /* i */
            baload
            sipush 255
            iand
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
         8: .line 395
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 391
      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 399
            aload 2 /* digestString */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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
    MethodParameters:
        Name  Flags
      digest  

  protected byte[] stringToByte_8859_1(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.sun.security.sasl.digest.DigestMD5Base this
        start local 1 // java.lang.String str
         0: .line 412
            aload 1 /* str */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 2 /* buffer */
        start local 2 // char[] buffer
         1: .line 414
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.useUTF8:Z
            ifeq 8
         2: .line 415
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 7
         4: .line 416
      StackMap locals: char[] int
      StackMap stack:
            aload 2 /* buffer */
            iload 3 /* i */
            caload
            sipush 255
            if_icmple 6
         5: .line 417
            aload 1 /* str */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            areturn
         6: .line 415
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* buffer */
            arraylength
            if_icmplt 4
        end local 3 // int i
         8: .line 421
      StackMap locals:
      StackMap stack:
            aload 1 /* str */
            getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            areturn
        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    9     0    this  Lcom/sun/security/sasl/digest/DigestMD5Base;
            0    9     1     str  Ljava/lang/String;
            1    9     2  buffer  [C
            3    8     3       i  I
    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 425
            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 427
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         2: goto 10
         3: .line 431
      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 433
            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 434
            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 435
            goto 9
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
         7: pop
            goto 9
         8: .line 437
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            pop
         9: .line 427
      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 442
            aload 0 /* ciphers */
            iconst_1
            baload
            ifeq 14
        12: .line 443
            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 444
            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 447
      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 475
            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 484
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 14 /* A2 */
        start local 14 // java.io.ByteArrayOutputStream A2
         2: .line 485
            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/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
         3: .line 486
            aload 3 /* qopValue */
            ldc "auth-conf"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 487
            aload 3 /* qopValue */
            ldc "auth-int"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 489
      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 491
            aload 14 /* A2 */
            ldc ":00000000000000000000000000000000"
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
         7: .line 494
      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 495
            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 498
      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 499
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        start local 18 // byte[] digest
        11: .line 500
            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 502
            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 503
            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 510
      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 511
            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 512
            aload 15 /* beginA1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        17: .line 514
            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 515
            aload 15 /* beginA1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        19: .line 516
            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 518
            aload 11 /* md5 */
            aload 15 /* beginA1 */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
        21: .line 519
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        22: .line 521
            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 522
            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 523
            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 522
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 531
      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 532
            aload 16 /* A1 */
            aload 18 /* digest */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        28: .line 533
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        29: .line 534
            aload 16 /* A1 */
            aload 7 /* nonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        30: .line 535
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        31: .line 536
            aload 16 /* A1 */
            aload 8 /* cNonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        32: .line 538
            aload 10 /* authzidValue */
            ifnull 35
        33: .line 539
            aload 16 /* A1 */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        34: .line 540
            aload 16 /* A1 */
            aload 10 /* authzidValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        35: .line 542
      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 543
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        37: .line 544
            aload 0 /* this */
            aload 18 /* digest */
            putfield com.sun.security.sasl.digest.DigestMD5Base.H_A1:[B
        38: .line 545
            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 547
            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 548
            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 554
      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 555
            aload 17 /* KD */
            aload 12 /* hexA1 */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        43: .line 556
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        44: .line 557
            aload 17 /* KD */
            aload 7 /* nonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        45: .line 558
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        46: .line 559
            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/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        47: .line 560
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        48: .line 561
            aload 17 /* KD */
            aload 8 /* cNonceValue */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        49: .line 562
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        50: .line 563
            aload 17 /* KD */
            aload 3 /* qopValue */
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        51: .line 564
            aload 17 /* KD */
            bipush 58
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        52: .line 565
            aload 17 /* KD */
            aload 13 /* hexA2 */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
        53: .line 567
            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 568
            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 571
      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 572
            aload 11 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 18 /* digest */
        57: .line 574
            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 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 62
        59: .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 "DIGEST10:response-value: {0}"
        60: .line 578
            new java.lang.String
            dup
            aload 19 /* answer */
            invokespecial java.lang.String.<init>:([B)V
        61: .line 577
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        62: .line 580
      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.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 590
            iload 0 /* count */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            astore 1 /* str */
        start local 1 // java.lang.String str
         1: .line 591
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* pad */
        start local 2 // java.lang.StringBuilder pad
         2: .line 593
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            bipush 8
            if_icmpge 8
         3: .line 594
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 7
         5: .line 595
      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 594
            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 599
      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 614
            aload 1 /* keyTable */
            arraylength
            anewarray byte[]
            astore 4 /* valueTable */
        start local 4 // byte[][] valueTable
         1: .line 616
            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 617
            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 618
            iconst_1
            istore 7 /* gettingKey */
        start local 7 // boolean gettingKey
         4: .line 619
            iconst_0
            istore 8 /* gettingQuotedValue */
        start local 8 // boolean gettingQuotedValue
         5: .line 620
            iconst_0
            istore 9 /* expectSeparator */
        start local 9 // boolean expectSeparator
         6: .line 623
            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 624
            goto 81
         8: .line 625
      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 627
            iload 7 /* gettingKey */
            ifeq 43
        10: .line 628
            iload 10 /* bch */
            bipush 44
            if_icmpne 17
        11: .line 629
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifeq 15
        12: .line 630
            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 631
            aload 5 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 630
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 634
      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 636
            goto 81
      StackMap locals:
      StackMap stack:
        17: iload 10 /* bch */
            bipush 61
            if_icmpne 30
        18: .line 637
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifne 20
        19: .line 638
            new javax.security.sasl.SaslException
            dup
            ldc "Empty directive key"
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 640
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* gettingKey */
        21: .line 641
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        22: .line 644
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 27
        23: .line 645
            aload 0 /* buf */
            iload 11 /* i */
            baload
            bipush 34
            if_icmpne 81
        24: .line 646
            iconst_1
            istore 8 /* gettingQuotedValue */
        25: .line 647
            iinc 11 /* i */ 1
        26: .line 649
            goto 81
        27: .line 650
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        28: .line 651
            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 650
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 653
      StackMap locals:
      StackMap stack:
            iload 10 /* bch */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
            ifeq 40
        31: .line 655
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        32: .line 658
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 37
        33: .line 659
            aload 0 /* buf */
            iload 11 /* i */
            baload
            bipush 61
            if_icmpeq 81
        34: .line 660
            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 661
            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 660
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        37: .line 664
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        38: .line 665
            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 664
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        40: .line 668
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        41: .line 669
            iinc 11 /* i */ 1
        42: .line 671
            goto 81
      StackMap locals:
      StackMap stack:
        43: iload 8 /* gettingQuotedValue */
            ifeq 63
        44: .line 673
            iload 10 /* bch */
            bipush 92
            if_icmpne 55
        45: .line 675
            iinc 11 /* i */ 1
        46: .line 676
            iload 11 /* i */
            aload 0 /* buf */
            arraylength
            if_icmpge 50
        47: .line 677
            aload 6 /* value */
            aload 0 /* buf */
            iload 11 /* i */
            baload
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        48: .line 678
            iinc 11 /* i */ 1
        49: .line 679
            goto 81
        50: .line 681
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        51: .line 682
            new java.lang.StringBuilder
            dup
            ldc "Unmatched quote found for directive: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        52: .line 683
            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 682
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        54: .line 681
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 685
      StackMap locals:
      StackMap stack:
            iload 10 /* bch */
            bipush 34
            if_icmpne 60
        56: .line 687
            iinc 11 /* i */ 1
        57: .line 688
            iconst_0
            istore 8 /* gettingQuotedValue */
        58: .line 689
            iconst_1
            istore 9 /* expectSeparator */
        59: .line 690
            goto 81
        60: .line 691
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        61: .line 692
            iinc 11 /* i */ 1
        62: .line 695
            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 698
      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 699
            aload 1 /* keyTable */
            aload 4 /* valueTable */
            aload 2 /* realmChoices */
            iload 3 /* realmIndex */
        66: .line 698
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
        67: .line 700
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        68: .line 701
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        69: .line 702
            iconst_1
            istore 7 /* gettingKey */
        70: .line 703
            iconst_0
            dup
            istore 9 /* expectSeparator */
            istore 8 /* gettingQuotedValue */
        71: .line 704
            aload 0 /* buf */
            iload 11 /* i */
            iconst_1
            iadd
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
            istore 11 /* i */
        72: .line 706
            goto 81
      StackMap locals:
      StackMap stack:
        73: iload 9 /* expectSeparator */
            ifeq 79
        74: .line 707
            new javax.security.sasl.SaslException
            dup
        75: .line 708
            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 709
            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 708
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        78: .line 707
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        79: .line 711
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            iload 10 /* bch */
            invokevirtual java.io.ByteArrayOutputStream.write:(I)V
        80: .line 712
            iinc 11 /* i */ 1
        end local 10 // byte bch
        81: .line 624
      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 716
            iload 8 /* gettingQuotedValue */
            ifeq 88
        83: .line 717
            new javax.security.sasl.SaslException
            dup
        84: .line 718
            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 719
            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 718
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        87: .line 717
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        88: .line 723
      StackMap locals:
      StackMap stack:
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.size:()I
            ifle 92
        89: .line 724
            aload 5 /* key */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 6 /* value */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
        90: .line 725
            aload 1 /* keyTable */
            aload 4 /* valueTable */
            aload 2 /* realmChoices */
            iload 3 /* realmIndex */
        91: .line 724
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
        92: .line 728
      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 735
            iload 0 /* b */
            lookupswitch { // 4
                    9: 1
                   10: 1
                   13: 1
                   32: 1
              default: 2
          }
         1: .line 740
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         2: .line 742
      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 748
            iload 1 /* start */
            istore 2 /* i */
        start local 2 // int i
         1: goto 5
         2: .line 749
      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 750
            iload 2 /* i */
            ireturn
         4: .line 748
      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 753
            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 768
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         1: goto 23
         2: .line 769
      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 770
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            ifnonnull 12
         4: .line 771
            aload 3 /* valueTable */
            iload 6 /* i */
            aload 1 /* value */
            aastore
         5: .line 772
            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 773
            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 774
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 775
            aload 2 /* keyTable */
            iload 6 /* i */
            aaload
            aastore
            dup
            iconst_1
         9: .line 776
            new java.lang.String
            dup
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            invokespecial java.lang.String.<init>:([B)V
            aastore
        10: .line 773
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        11: .line 778
            goto 24
      StackMap locals:
      StackMap stack:
        12: aload 4 /* realmChoices */
            ifnull 17
            iload 6 /* i */
            iload 5 /* realmIndex */
            if_icmpne 17
        13: .line 780
            aload 4 /* realmChoices */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 15
        14: .line 781
            aload 4 /* realmChoices */
            aload 3 /* valueTable */
            iload 6 /* i */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 783
      StackMap locals:
      StackMap stack:
            aload 4 /* realmChoices */
            aload 1 /* value */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 784
            goto 24
        17: .line 785
      StackMap locals:
      StackMap stack:
            new javax.security.sasl.SaslException
            dup
        18: .line 786
            new java.lang.StringBuilder
            dup
            ldc "DIGEST-MD5: peer sent more than one "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 787
            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 786
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 785
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 768
      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 793
      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 1496
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 6
         2: .line 1497
      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 1498
            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 1499
            aload 0 /* key */
            iload 1 /* i */
            iload 2 /* b */
            i2b
            bastore
        end local 2 // int b
         5: .line 1496
            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 1501
            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 1513
            iload 2 /* len */
            bipush 7
            if_icmpeq 4
         1: .line 1514
            new java.lang.IllegalArgumentException
            dup
         2: .line 1515
            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 1514
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1517
      StackMap locals:
      StackMap stack:
            bipush 7
            newarray 8
            astore 3 /* raw */
        start local 3 // byte[] raw
         5: .line 1518
            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 1520
            bipush 8
            newarray 8
            astore 4 /* result */
        start local 4 // byte[] result
         7: .line 1521
            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 1524
            aload 4 /* result */
            arraylength
            iconst_1
            isub
            istore 6 /* i */
        start local 6 // int i
         9: goto 14
        10: .line 1525
      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 1526
            aload 4 /* result */
            iload 6 /* i */
            dup2
            baload
            iconst_1
            ishl
            i2b
            bastore
        12: .line 1527
            aload 5 /* in */
            bipush 7
            invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
            astore 5 /* in */
        13: .line 1524
            iinc 6 /* i */ -1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            ifge 10
        end local 6 // int i
        15: .line 1529
            aload 4 /* result */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.setParityBit:([B)V
        16: .line 1530
            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 1553
            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 1555
            aconst_null
            astore 3 /* spec */
        start local 3 // java.security.spec.KeySpec spec
         2: .line 1557
            aload 1 /* desStrength */
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
         3: .line 1556
            astore 4 /* desFactory */
        start local 4 // javax.crypto.SecretKeyFactory desFactory
         4: .line 1558
            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 1560
      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 1561
            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 1562
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        10: .line 1563
            ldc "DIGEST42:DES key input: "
            aload 0 /* input */
        11: .line 1562
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        12: .line 1564
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        13: .line 1565
            ldc "DIGEST43:DES key parity-adjusted: "
            aload 2 /* subkey1 */
        14: .line 1564
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        15: .line 1566
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        16: .line 1567
            ldc "DIGEST44:DES key material: "
            aload 3 /* spec */
            checkcast javax.crypto.spec.DESKeySpec
            invokevirtual javax.crypto.spec.DESKeySpec.getKey:()[B
        17: .line 1566
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        18: .line 1568
            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 1569
            aload 2 /* subkey1 */
            iconst_0
            invokestatic javax.crypto.spec.DESKeySpec.isParityAdjusted:([BI)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        20: .line 1568
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        21: .line 1571
            goto 48
        22: .line 1574
      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 1576
            aload 2 /* subkey1 */
            arraylength
            iconst_2
            imul
            aload 6 /* subkey2 */
            arraylength
            iadd
            newarray 8
            astore 7 /* ede */
        start local 7 // byte[] ede
        24: .line 1577
            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 1578
            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 1579
            aload 2 /* subkey1 */
            iconst_0
            aload 7 /* ede */
            aload 2 /* subkey1 */
            arraylength
            aload 6 /* subkey2 */
            arraylength
            iadd
        27: .line 1580
            aload 2 /* subkey1 */
            arraylength
        28: .line 1579
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 1581
            new javax.crypto.spec.DESedeKeySpec
            dup
            aload 7 /* ede */
            iconst_0
            invokespecial javax.crypto.spec.DESedeKeySpec.<init>:([BI)V
            astore 3 /* spec */
        30: .line 1582
            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 1583
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        32: .line 1584
            ldc "DIGEST46:3DES key input: "
            aload 0 /* input */
        33: .line 1583
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        34: .line 1585
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        35: .line 1586
            ldc "DIGEST47:3DES key ede: "
            aload 7 /* ede */
        36: .line 1585
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        37: .line 1587
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "makeDesKeys"
        38: .line 1588
            ldc "DIGEST48:3DES key material: "
        39: .line 1589
            aload 3 /* spec */
            checkcast javax.crypto.spec.DESedeKeySpec
            invokevirtual javax.crypto.spec.DESedeKeySpec.getKey:()[B
        40: .line 1587
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        41: .line 1590
            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 1591
            aload 7 /* ede */
            iconst_0
            invokestatic javax.crypto.spec.DESedeKeySpec.isParityAdjusted:([BI)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        43: .line 1590
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        44: .line 1593
            goto 48
        end local 7 // byte[] ede
        end local 6 // byte[] subkey2
        45: .line 1595
      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 1596
            aload 1 /* desStrength */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 1595
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 1598
      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