class com.sun.security.ntlm.NTLM
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.security.ntlm.NTLM
  super_class: java.lang.Object
{
  private final javax.crypto.SecretKeyFactory fac;
    descriptor: Ljavax/crypto/SecretKeyFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.crypto.Cipher cipher;
    descriptor: Ljavax/crypto/Cipher;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.security.MessageDigest md4;
    descriptor: Ljava/security/MessageDigest;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.crypto.Mac hmac;
    descriptor: Ljavax/crypto/Mac;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.security.MessageDigest md5;
    descriptor: Ljava/security/MessageDigest;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  final com.sun.security.ntlm.Version v;
    descriptor: Lcom/sun/security/ntlm/Version;
    flags: (0x0010) ACC_FINAL

  final boolean writeLM;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final boolean writeNTLM;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 53
            ldc Lcom/sun/security/ntlm/NTLM;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
         3: .line 61
            ldc "ntlm.debug"
            invokestatic sun.security.action.GetBooleanAction.privilegedGetProperty:(Ljava/lang/String;)Z
         4: .line 60
            putstatic com.sun.security.ntlm.NTLM.DEBUG:Z
         5: .line 61
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // java.lang.String version
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 1 /* version */
            ifnonnull 2
            ldc "LMv2/NTLMv2"
            astore 1 /* version */
         2: .line 70
      StackMap locals: com.sun.security.ntlm.NTLM java.lang.String
      StackMap stack:
            aload 1 /* version */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 7
          -1981975933: 3
          -1885054699: 4
                 2433: 5
              2341821: 6
              2406855: 7
             74612555: 8
            981059989: 9
              default: 17
          }
      StackMap locals: java.lang.String
      StackMap stack:
         3: aload 2
            ldc "NTLMv2"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
            goto 17
      StackMap locals:
      StackMap stack:
         4: aload 2
            ldc "LMv2/NTLMv2"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
            goto 17
      StackMap locals:
      StackMap stack:
         5: aload 2
            ldc "LM"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 17
      StackMap locals:
      StackMap stack:
         6: aload 2
            ldc "LMv2"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 14
            goto 17
      StackMap locals:
      StackMap stack:
         7: aload 2
            ldc "NTLM"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            goto 17
      StackMap locals:
      StackMap stack:
         8: aload 2
            ldc "NTLM2"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
            goto 17
      StackMap locals:
      StackMap stack:
         9: aload 2
            ldc "LM/NTLM"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 17
        10: .line 71
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLM:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            goto 20
        11: .line 72
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLM:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            goto 20
        12: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLM:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            aload 0 /* this */
            iconst_1
            dup_x1
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            goto 20
        13: .line 74
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLM2:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            aload 0 /* this */
            iconst_1
            dup_x1
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            goto 20
        14: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLMv2:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            goto 20
        15: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLMv2:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            goto 20
        16: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.security.ntlm.Version.NTLMv2:Lcom/sun/security/ntlm/Version;
            putfield com.sun.security.ntlm.NTLM.v:Lcom/sun/security/ntlm/Version;
            aload 0 /* this */
            aload 0 /* this */
            iconst_1
            dup_x1
            putfield com.sun.security.ntlm.NTLM.writeNTLM:Z
            putfield com.sun.security.ntlm.NTLM.writeLM:Z
            goto 20
        17: .line 78
      StackMap locals:
      StackMap stack:
            new com.sun.security.ntlm.NTLMException
            dup
            iconst_5
        18: .line 79
            new java.lang.StringBuilder
            dup
            ldc "Unknown version "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* version */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 78
            invokespecial com.sun.security.ntlm.NTLMException.<init>:(ILjava/lang/String;)V
            athrow
        20: .line 82
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "DES"
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            putfield com.sun.security.ntlm.NTLM.fac:Ljavax/crypto/SecretKeyFactory;
        21: .line 83
            aload 0 /* this */
            ldc "DES/ECB/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            putfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
        22: .line 84
            aload 0 /* this */
            invokestatic sun.security.provider.MD4.getInstance:()Ljava/security/MessageDigest;
            putfield com.sun.security.ntlm.NTLM.md4:Ljava/security/MessageDigest;
        23: .line 85
            aload 0 /* this */
            ldc "HmacMD5"
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            putfield com.sun.security.ntlm.NTLM.hmac:Ljavax/crypto/Mac;
        24: .line 86
            aload 0 /* this */
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            putfield com.sun.security.ntlm.NTLM.md5:Ljava/security/MessageDigest;
        25: .line 87
            goto 30
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
        26: pop
        27: .line 88
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        28: .line 89
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
        29: .line 90
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        30: .line 92
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String version
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   31     0     this  Lcom/sun/security/ntlm/NTLM;
            0   31     1  version  Ljava/lang/String;
      Exception table:
        from    to  target  type
          20    25      26  Class javax.crypto.NoSuchPaddingException
          20    25      28  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws com.sun.security.ntlm.NTLMException
    MethodParameters:
         Name  Flags
      version  

  public void debug(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // java.lang.String format
        start local 2 // java.lang.Object[] args
         0: .line 105
            getstatic com.sun.security.ntlm.NTLM.DEBUG:Z
            ifeq 2
         1: .line 106
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 1 /* format */
            aload 2 /* args */
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         2: .line 108
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.String format
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/sun/security/ntlm/NTLM;
            0    3     1  format  Ljava/lang/String;
            0    3     2    args  [Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      format  
      args    

  public void debug(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] bytes
         0: .line 119
            getstatic com.sun.security.ntlm.NTLM.DEBUG:Z
            ifeq 4
         1: .line 121
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            aload 1 /* bytes */
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([BLjava/io/OutputStream;)V
         2: .line 122
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         3: pop
         4: .line 126
      StackMap locals:
      StackMap stack:
            return
        end local 1 // byte[] bytes
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/sun/security/ntlm/NTLM;
            0    5     1  bytes  [B
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    MethodParameters:
       Name  Flags
      bytes  

  byte[] makeDesKey(byte[], int);
    descriptor: ([BI)[B
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] input
        start local 2 // int off
         0: .line 262
            aload 1 /* input */
            arraylength
            newarray 10
            astore 3 /* in */
        start local 3 // int[] in
         1: .line 263
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 7
         3: .line 264
      StackMap locals: int[] int
      StackMap stack:
            aload 3 /* in */
            iload 4 /* i */
            aload 1 /* input */
            iload 4 /* i */
            baload
            ifge 4
            aload 1 /* input */
            iload 4 /* i */
            baload
            sipush 256
            iadd
            goto 5
      StackMap locals: com.sun.security.ntlm.NTLM byte[] int int[] int
      StackMap stack: int[] int
         4: aload 1 /* input */
            iload 4 /* i */
            baload
      StackMap locals: com.sun.security.ntlm.NTLM byte[] int int[] int
      StackMap stack: int[] int int
         5: iastore
         6: .line 263
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 4 /* i */
            aload 3 /* in */
            arraylength
            if_icmplt 3
        end local 4 // int i
         8: .line 266
            bipush 8
            newarray 8
            astore 4 /* out */
        start local 4 // byte[] out
         9: .line 267
            aload 4 /* out */
            iconst_0
            aload 3 /* in */
            iload 2 /* off */
            iconst_0
            iadd
            iaload
            i2b
            bastore
        10: .line 268
            aload 4 /* out */
            iconst_1
            aload 3 /* in */
            iload 2 /* off */
            iconst_0
            iadd
            iaload
            bipush 7
            ishl
            sipush 255
            iand
            aload 3 /* in */
            iload 2 /* off */
            iconst_1
            iadd
            iaload
            iconst_1
            ishr
            ior
            i2b
            bastore
        11: .line 269
            aload 4 /* out */
            iconst_2
            aload 3 /* in */
            iload 2 /* off */
            iconst_1
            iadd
            iaload
            bipush 6
            ishl
            sipush 255
            iand
            aload 3 /* in */
            iload 2 /* off */
            iconst_2
            iadd
            iaload
            iconst_2
            ishr
            ior
            i2b
            bastore
        12: .line 270
            aload 4 /* out */
            iconst_3
            aload 3 /* in */
            iload 2 /* off */
            iconst_2
            iadd
            iaload
            iconst_5
            ishl
            sipush 255
            iand
            aload 3 /* in */
            iload 2 /* off */
            iconst_3
            iadd
            iaload
            iconst_3
            ishr
            ior
            i2b
            bastore
        13: .line 271
            aload 4 /* out */
            iconst_4
            aload 3 /* in */
            iload 2 /* off */
            iconst_3
            iadd
            iaload
            iconst_4
            ishl
            sipush 255
            iand
            aload 3 /* in */
            iload 2 /* off */
            iconst_4
            iadd
            iaload
            iconst_4
            ishr
            ior
            i2b
            bastore
        14: .line 272
            aload 4 /* out */
            iconst_5
            aload 3 /* in */
            iload 2 /* off */
            iconst_4
            iadd
            iaload
            iconst_3
            ishl
            sipush 255
            iand
            aload 3 /* in */
            iload 2 /* off */
            iconst_5
            iadd
            iaload
            iconst_5
            ishr
            ior
            i2b
            bastore
        15: .line 273
            aload 4 /* out */
            bipush 6
            aload 3 /* in */
            iload 2 /* off */
            iconst_5
            iadd
            iaload
            iconst_2
            ishl
            sipush 255
            iand
            aload 3 /* in */
            iload 2 /* off */
            bipush 6
            iadd
            iaload
            bipush 6
            ishr
            ior
            i2b
            bastore
        16: .line 274
            aload 4 /* out */
            bipush 7
            aload 3 /* in */
            iload 2 /* off */
            bipush 6
            iadd
            iaload
            iconst_1
            ishl
            sipush 255
            iand
            i2b
            bastore
        17: .line 275
            aload 4 /* out */
            areturn
        end local 4 // byte[] out
        end local 3 // int[] in
        end local 2 // int off
        end local 1 // byte[] input
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Lcom/sun/security/ntlm/NTLM;
            0   18     1  input  [B
            0   18     2    off  I
            1   18     3     in  [I
            2    8     4      i  I
            9   18     4    out  [B
    MethodParameters:
       Name  Flags
      input  
      off    

  byte[] calcLMHash(byte[]);
    descriptor: ([B)[B
    flags: (0x0000) 
    Code:
      stack=5, locals=12, args_size=2
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] pwb
         0: .line 279
            bipush 8
            newarray 8
            dup
            iconst_0
            bipush 75
            bastore
            dup
            iconst_1
            bipush 71
            bastore
            dup
            iconst_2
            bipush 83
            bastore
            dup
            iconst_3
            bipush 33
            bastore
            dup
            iconst_4
            bipush 64
            bastore
            dup
            iconst_5
            bipush 35
            bastore
            dup
            bipush 6
            bipush 36
            bastore
            dup
            bipush 7
            bipush 37
            bastore
            astore 2 /* magic */
        start local 2 // byte[] magic
         1: .line 280
            bipush 14
            newarray 8
            astore 3 /* pwb1 */
        start local 3 // byte[] pwb1
         2: .line 281
            aload 1 /* pwb */
            arraylength
            istore 4 /* len */
        start local 4 // int len
         3: .line 282
            iload 4 /* len */
            bipush 14
            if_icmple 5
         4: .line 283
            bipush 14
            istore 4 /* len */
         5: .line 284
      StackMap locals: byte[] byte[] int
      StackMap stack:
            aload 1 /* pwb */
            iconst_0
            aload 3 /* pwb1 */
            iconst_0
            iload 4 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 287
            new javax.crypto.spec.DESKeySpec
            dup
            aload 0 /* this */
            aload 3 /* pwb1 */
            iconst_0
            invokevirtual com.sun.security.ntlm.NTLM.makeDesKey:([BI)[B
            invokespecial javax.crypto.spec.DESKeySpec.<init>:([B)V
            astore 5 /* dks1 */
        start local 5 // javax.crypto.spec.DESKeySpec dks1
         7: .line 288
            new javax.crypto.spec.DESKeySpec
            dup
            aload 0 /* this */
            aload 3 /* pwb1 */
            bipush 7
            invokevirtual com.sun.security.ntlm.NTLM.makeDesKey:([BI)[B
            invokespecial javax.crypto.spec.DESKeySpec.<init>:([B)V
            astore 6 /* dks2 */
        start local 6 // javax.crypto.spec.DESKeySpec dks2
         8: .line 290
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.fac:Ljavax/crypto/SecretKeyFactory;
            aload 5 /* dks1 */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 7 /* key1 */
        start local 7 // javax.crypto.SecretKey key1
         9: .line 291
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.fac:Ljavax/crypto/SecretKeyFactory;
            aload 6 /* dks2 */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 8 /* key2 */
        start local 8 // javax.crypto.SecretKey key2
        10: .line 292
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 7 /* key1 */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        11: .line 293
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            aload 2 /* magic */
            iconst_0
            bipush 8
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 9 /* out1 */
        start local 9 // byte[] out1
        12: .line 294
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 8 /* key2 */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        13: .line 295
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            aload 2 /* magic */
            iconst_0
            bipush 8
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 10 /* out2 */
        start local 10 // byte[] out2
        14: .line 296
            bipush 21
            newarray 8
            astore 11 /* result */
        start local 11 // byte[] result
        15: .line 297
            aload 9 /* out1 */
            iconst_0
            aload 11 /* result */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 298
            aload 10 /* out2 */
            iconst_0
            aload 11 /* result */
            bipush 8
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        17: .line 299
            aload 11 /* result */
        18: areturn
        end local 11 // byte[] result
        end local 10 // byte[] out2
        end local 9 // byte[] out1
        end local 8 // javax.crypto.SecretKey key2
        end local 7 // javax.crypto.SecretKey key1
        end local 6 // javax.crypto.spec.DESKeySpec dks2
        end local 5 // javax.crypto.spec.DESKeySpec dks1
        19: .line 300
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            pop
        20: .line 302
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        21: .line 303
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            pop
        22: .line 305
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        23: .line 306
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            pop
        24: .line 308
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        25: .line 309
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            pop
        26: .line 311
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        27: .line 313
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // int len
        end local 3 // byte[] pwb1
        end local 2 // byte[] magic
        end local 1 // byte[] pwb
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   28     0    this  Lcom/sun/security/ntlm/NTLM;
            0   28     1     pwb  [B
            1   28     2   magic  [B
            2   28     3    pwb1  [B
            3   28     4     len  I
            7   19     5    dks1  Ljavax/crypto/spec/DESKeySpec;
            8   19     6    dks2  Ljavax/crypto/spec/DESKeySpec;
            9   19     7    key1  Ljavax/crypto/SecretKey;
           10   19     8    key2  Ljavax/crypto/SecretKey;
           12   19     9    out1  [B
           14   19    10    out2  [B
           15   19    11  result  [B
      Exception table:
        from    to  target  type
           6    18      19  Class java.security.InvalidKeyException
           6    18      21  Class java.security.spec.InvalidKeySpecException
           6    18      23  Class javax.crypto.IllegalBlockSizeException
           6    18      25  Class javax.crypto.BadPaddingException
    MethodParameters:
      Name  Flags
      pwb   

  byte[] calcNTHash(byte[]);
    descriptor: ([B)[B
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] pw
         0: .line 317
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.md4:Ljava/security/MessageDigest;
            aload 1 /* pw */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 2 /* out */
        start local 2 // byte[] out
         1: .line 318
            bipush 21
            newarray 8
            astore 3 /* result */
        start local 3 // byte[] result
         2: .line 319
            aload 2 /* out */
            iconst_0
            aload 3 /* result */
            iconst_0
            bipush 16
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 320
            aload 3 /* result */
            areturn
        end local 3 // byte[] result
        end local 2 // byte[] out
        end local 1 // byte[] pw
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/security/ntlm/NTLM;
            0    4     1      pw  [B
            1    4     2     out  [B
            2    4     3  result  [B
    MethodParameters:
      Name  Flags
      pw    

  byte[] calcResponse(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0000) 
    Code:
      stack=5, locals=13, args_size=3
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] key
        start local 2 // byte[] text
         0: .line 329
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 1
            aload 1 /* key */
            arraylength
            bipush 21
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 330
      StackMap locals:
      StackMap stack:
            new javax.crypto.spec.DESKeySpec
            dup
            aload 0 /* this */
            aload 1 /* key */
            iconst_0
            invokevirtual com.sun.security.ntlm.NTLM.makeDesKey:([BI)[B
            invokespecial javax.crypto.spec.DESKeySpec.<init>:([B)V
            astore 3 /* dks1 */
        start local 3 // javax.crypto.spec.DESKeySpec dks1
         2: .line 331
            new javax.crypto.spec.DESKeySpec
            dup
            aload 0 /* this */
            aload 1 /* key */
            bipush 7
            invokevirtual com.sun.security.ntlm.NTLM.makeDesKey:([BI)[B
            invokespecial javax.crypto.spec.DESKeySpec.<init>:([B)V
            astore 4 /* dks2 */
        start local 4 // javax.crypto.spec.DESKeySpec dks2
         3: .line 332
            new javax.crypto.spec.DESKeySpec
            dup
            aload 0 /* this */
            aload 1 /* key */
            bipush 14
            invokevirtual com.sun.security.ntlm.NTLM.makeDesKey:([BI)[B
            invokespecial javax.crypto.spec.DESKeySpec.<init>:([B)V
            astore 5 /* dks3 */
        start local 5 // javax.crypto.spec.DESKeySpec dks3
         4: .line 333
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.fac:Ljavax/crypto/SecretKeyFactory;
            aload 3 /* dks1 */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 6 /* key1 */
        start local 6 // javax.crypto.SecretKey key1
         5: .line 334
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.fac:Ljavax/crypto/SecretKeyFactory;
            aload 4 /* dks2 */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 7 /* key2 */
        start local 7 // javax.crypto.SecretKey key2
         6: .line 335
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.fac:Ljavax/crypto/SecretKeyFactory;
            aload 5 /* dks3 */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 8 /* key3 */
        start local 8 // javax.crypto.SecretKey key3
         7: .line 336
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 6 /* key1 */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         8: .line 337
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            aload 2 /* text */
            iconst_0
            bipush 8
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 9 /* out1 */
        start local 9 // byte[] out1
         9: .line 338
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 7 /* key2 */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        10: .line 339
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            aload 2 /* text */
            iconst_0
            bipush 8
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 10 /* out2 */
        start local 10 // byte[] out2
        11: .line 340
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 8 /* key3 */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        12: .line 341
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.cipher:Ljavax/crypto/Cipher;
            aload 2 /* text */
            iconst_0
            bipush 8
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 11 /* out3 */
        start local 11 // byte[] out3
        13: .line 342
            bipush 24
            newarray 8
            astore 12 /* result */
        start local 12 // byte[] result
        14: .line 343
            aload 9 /* out1 */
            iconst_0
            aload 12 /* result */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        15: .line 344
            aload 10 /* out2 */
            iconst_0
            aload 12 /* result */
            bipush 8
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 345
            aload 11 /* out3 */
            iconst_0
            aload 12 /* result */
            bipush 16
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        17: .line 346
            aload 12 /* result */
        18: areturn
        end local 12 // byte[] result
        end local 11 // byte[] out3
        end local 10 // byte[] out2
        end local 9 // byte[] out1
        end local 8 // javax.crypto.SecretKey key3
        end local 7 // javax.crypto.SecretKey key2
        end local 6 // javax.crypto.SecretKey key1
        end local 5 // javax.crypto.spec.DESKeySpec dks3
        end local 4 // javax.crypto.spec.DESKeySpec dks2
        end local 3 // javax.crypto.spec.DESKeySpec dks1
        19: .line 347
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            pop
        20: .line 348
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        21: .line 349
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            pop
        22: .line 350
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        23: .line 351
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            pop
        24: .line 352
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        25: .line 353
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            pop
        26: .line 354
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        27: .line 356
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // byte[] text
        end local 1 // byte[] key
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   28     0    this  Lcom/sun/security/ntlm/NTLM;
            0   28     1     key  [B
            0   28     2    text  [B
            2   19     3    dks1  Ljavax/crypto/spec/DESKeySpec;
            3   19     4    dks2  Ljavax/crypto/spec/DESKeySpec;
            4   19     5    dks3  Ljavax/crypto/spec/DESKeySpec;
            5   19     6    key1  Ljavax/crypto/SecretKey;
            6   19     7    key2  Ljavax/crypto/SecretKey;
            7   19     8    key3  Ljavax/crypto/SecretKey;
            9   19     9    out1  [B
           11   19    10    out2  [B
           13   19    11    out3  [B
           14   19    12  result  [B
      Exception table:
        from    to  target  type
           0    18      19  Class javax.crypto.IllegalBlockSizeException
           0    18      21  Class javax.crypto.BadPaddingException
           0    18      23  Class java.security.spec.InvalidKeySpecException
           0    18      25  Class java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   
      text  

  byte[] hmacMD5(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] key
        start local 2 // byte[] text
         0: .line 364
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            bipush 16
            invokestatic java.util.Arrays.copyOf:([BI)[B
            ldc "HmacMD5"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
         1: .line 363
            astore 3 /* skey */
        start local 3 // javax.crypto.spec.SecretKeySpec skey
         2: .line 365
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.hmac:Ljavax/crypto/Mac;
            aload 3 /* skey */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
         3: .line 366
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.hmac:Ljavax/crypto/Mac;
            aload 2 /* text */
            invokevirtual javax.crypto.Mac.doFinal:([B)[B
         4: areturn
        end local 3 // javax.crypto.spec.SecretKeySpec skey
         5: .line 367
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            pop
         6: .line 368
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 369
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            pop
         8: .line 370
            getstatic com.sun.security.ntlm.NTLM.$assertionsDisabled:Z
            ifne 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 372
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // byte[] text
        end local 1 // byte[] key
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/sun/security/ntlm/NTLM;
            0   10     1   key  [B
            0   10     2  text  [B
            2    5     3  skey  Ljavax/crypto/spec/SecretKeySpec;
      Exception table:
        from    to  target  type
           0     4       5  Class java.security.InvalidKeyException
           0     4       7  Class java.lang.RuntimeException
    MethodParameters:
      Name  Flags
      key   
      text  

  byte[] calcV2(byte[], java.lang.String, byte[], byte[]);
    descriptor: ([BLjava/lang/String;[B[B)[B
    flags: (0x0000) 
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] nthash
        start local 2 // java.lang.String text
        start local 3 // byte[] blob
        start local 4 // byte[] challenge
         0: .line 376
            aload 0 /* this */
            aload 1 /* nthash */
            aload 2 /* text */
            getstatic java.nio.charset.StandardCharsets.UTF_16LE:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual com.sun.security.ntlm.NTLM.hmacMD5:([B[B)[B
            astore 5 /* ntlmv2hash */
        start local 5 // byte[] ntlmv2hash
         1: .line 377
            aload 3 /* blob */
            arraylength
            bipush 8
            iadd
            newarray 8
            astore 6 /* cn */
        start local 6 // byte[] cn
         2: .line 378
            aload 4 /* challenge */
            iconst_0
            aload 6 /* cn */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 379
            aload 3 /* blob */
            iconst_0
            aload 6 /* cn */
            bipush 8
            aload 3 /* blob */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 380
            bipush 16
            aload 3 /* blob */
            arraylength
            iadd
            newarray 8
            astore 7 /* result */
        start local 7 // byte[] result
         5: .line 381
            aload 0 /* this */
            aload 5 /* ntlmv2hash */
            aload 6 /* cn */
            invokevirtual com.sun.security.ntlm.NTLM.hmacMD5:([B[B)[B
            iconst_0
            aload 7 /* result */
            iconst_0
            bipush 16
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 382
            aload 3 /* blob */
            iconst_0
            aload 7 /* result */
            bipush 16
            aload 3 /* blob */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 383
            aload 7 /* result */
            areturn
        end local 7 // byte[] result
        end local 6 // byte[] cn
        end local 5 // byte[] ntlmv2hash
        end local 4 // byte[] challenge
        end local 3 // byte[] blob
        end local 2 // java.lang.String text
        end local 1 // byte[] nthash
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/sun/security/ntlm/NTLM;
            0    8     1      nthash  [B
            0    8     2        text  Ljava/lang/String;
            0    8     3        blob  [B
            0    8     4   challenge  [B
            1    8     5  ntlmv2hash  [B
            2    8     6          cn  [B
            5    8     7      result  [B
    MethodParameters:
           Name  Flags
      nthash     
      text       
      blob       
      challenge  

  static byte[] ntlm2LM(byte[]);
    descriptor: ([B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte[] nonce
         0: .line 389
            aload 0 /* nonce */
            bipush 24
            invokestatic java.util.Arrays.copyOf:([BI)[B
            areturn
        end local 0 // byte[] nonce
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  nonce  [B
    MethodParameters:
       Name  Flags
      nonce  

  byte[] ntlm2NTLM(byte[], byte[], byte[]);
    descriptor: ([B[B[B)[B
    flags: (0x0000) 
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.sun.security.ntlm.NTLM this
        start local 1 // byte[] ntlmHash
        start local 2 // byte[] nonce
        start local 3 // byte[] challenge
         0: .line 393
            aload 3 /* challenge */
            bipush 16
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 4 /* b */
        start local 4 // byte[] b
         1: .line 394
            aload 2 /* nonce */
            iconst_0
            aload 4 /* b */
            bipush 8
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 395
            aload 0 /* this */
            getfield com.sun.security.ntlm.NTLM.md5:Ljava/security/MessageDigest;
            aload 4 /* b */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            bipush 8
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 5 /* sesshash */
        start local 5 // byte[] sesshash
         3: .line 396
            aload 0 /* this */
            aload 1 /* ntlmHash */
            aload 5 /* sesshash */
            invokevirtual com.sun.security.ntlm.NTLM.calcResponse:([B[B)[B
            areturn
        end local 5 // byte[] sesshash
        end local 4 // byte[] b
        end local 3 // byte[] challenge
        end local 2 // byte[] nonce
        end local 1 // byte[] ntlmHash
        end local 0 // com.sun.security.ntlm.NTLM this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/sun/security/ntlm/NTLM;
            0    4     1   ntlmHash  [B
            0    4     2      nonce  [B
            0    4     3  challenge  [B
            1    4     4          b  [B
            3    4     5   sesshash  [B
    MethodParameters:
           Name  Flags
      ntlmHash   
      nonce      
      challenge  

  static byte[] getP1(char[]);
    descriptor: ([C)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // char[] password
         0: .line 402
            new java.lang.String
            dup
            aload 0 /* password */
            invokespecial java.lang.String.<init>:([C)V
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
         1: .line 403
            getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
         2: .line 402
            areturn
        end local 0 // char[] password
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  password  [C
    MethodParameters:
          Name  Flags
      password  

  static byte[] getP2(char[]);
    descriptor: ([C)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // char[] password
         0: .line 407
            new java.lang.String
            dup
            aload 0 /* password */
            invokespecial java.lang.String.<init>:([C)V
            getstatic java.nio.charset.StandardCharsets.UTF_16LE:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            areturn
        end local 0 // char[] password
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  password  [C
    MethodParameters:
          Name  Flags
      password  
}
SourceFile: "NTLM.java"
NestMembers:
  com.sun.security.ntlm.NTLM$Reader  com.sun.security.ntlm.NTLM$Writer
InnerClasses:
  Reader = com.sun.security.ntlm.NTLM$Reader of com.sun.security.ntlm.NTLM
  Writer = com.sun.security.ntlm.NTLM$Writer of com.sun.security.ntlm.NTLM