final class org.apache.http.impl.auth.NTLMEngineImpl implements org.apache.http.impl.auth.NTLMEngine
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.apache.http.impl.auth.NTLMEngineImpl
  super_class: java.lang.Object
{
  private static final java.nio.charset.Charset UNICODE_LITTLE_UNMARKED;
    descriptor: Ljava/nio/charset/Charset;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.nio.charset.Charset DEFAULT_CHARSET;
    descriptor: Ljava/nio/charset/Charset;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final int FLAG_REQUEST_UNICODE_ENCODING;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int FLAG_REQUEST_OEM_ENCODING;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int FLAG_REQUEST_TARGET;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  static final int FLAG_REQUEST_SIGN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  static final int FLAG_REQUEST_SEAL;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 32

  static final int FLAG_REQUEST_LAN_MANAGER_KEY;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 128

  static final int FLAG_REQUEST_NTLMv1;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 512

  static final int FLAG_DOMAIN_PRESENT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4096

  static final int FLAG_WORKSTATION_PRESENT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8192

  static final int FLAG_REQUEST_ALWAYS_SIGN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 32768

  static final int FLAG_REQUEST_NTLM2_SESSION;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 524288

  static final int FLAG_REQUEST_VERSION;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 33554432

  static final int FLAG_TARGETINFO_PRESENT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8388608

  static final int FLAG_REQUEST_128BIT_KEY_EXCH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 536870912

  static final int FLAG_REQUEST_EXPLICIT_KEY_EXCH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1073741824

  static final int FLAG_REQUEST_56BIT_ENCRYPTION;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -2147483648

  static final int MSV_AV_EOL;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final int MSV_AV_NB_COMPUTER_NAME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int MSV_AV_NB_DOMAIN_NAME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int MSV_AV_DNS_COMPUTER_NAME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  static final int MSV_AV_DNS_DOMAIN_NAME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  static final int MSV_AV_DNS_TREE_NAME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  static final int MSV_AV_FLAGS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  static final int MSV_AV_TIMESTAMP;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  static final int MSV_AV_SINGLE_HOST;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  static final int MSV_AV_TARGET_NAME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 9

  static final int MSV_AV_CHANNEL_BINDINGS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  static final int MSV_AV_FLAGS_ACCOUNT_AUTH_CONSTAINED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int MSV_AV_FLAGS_MIC;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int MSV_AV_FLAGS_UNTRUSTED_TARGET_SPN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final java.security.SecureRandom RND_GEN;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

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

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

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

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 54
            ldc "UnicodeLittleUnmarked"
            invokestatic java.nio.charset.Charset.forName:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
         1: .line 56
            getstatic org.apache.http.Consts.ASCII:Ljava/nio/charset/Charset;
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
         2: .line 101
            aconst_null
            astore 0 /* rnd */
        start local 0 // java.security.SecureRandom rnd
         3: .line 103
            ldc "SHA1PRNG"
            invokestatic java.security.SecureRandom.getInstance:(Ljava/lang/String;)Ljava/security/SecureRandom;
            astore 0 /* rnd */
         4: .line 104
            goto 6
      StackMap locals: java.security.SecureRandom
      StackMap stack: java.lang.Exception
         5: pop
         6: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* rnd */
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.RND_GEN:Ljava/security/SecureRandom;
        end local 0 // java.security.SecureRandom rnd
         7: .line 110
            ldc "NTLMSSP"
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getNullTerminatedAsciiString:(Ljava/lang/String;)[B
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.SIGNATURE:[B
         8: .line 115
            ldc "session key to server-to-client signing key magic constant"
         9: .line 114
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getNullTerminatedAsciiString:(Ljava/lang/String;)[B
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.SIGN_MAGIC_SERVER:[B
        10: .line 117
            ldc "session key to client-to-server signing key magic constant"
        11: .line 116
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getNullTerminatedAsciiString:(Ljava/lang/String;)[B
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.SIGN_MAGIC_CLIENT:[B
        12: .line 119
            ldc "session key to server-to-client sealing key magic constant"
        13: .line 118
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getNullTerminatedAsciiString:(Ljava/lang/String;)[B
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.SEAL_MAGIC_SERVER:[B
        14: .line 121
            ldc "session key to client-to-server sealing key magic constant"
        15: .line 120
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getNullTerminatedAsciiString:(Ljava/lang/String;)[B
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.SEAL_MAGIC_CLIENT:[B
        16: .line 124
            ldc "tls-server-end-point:"
            getstatic org.apache.http.Consts.ASCII:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.MAGIC_TLS_SERVER_ENDPOINT:[B
        17: .line 135
            new org.apache.http.impl.auth.NTLMEngineImpl$Type1Message
            dup
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$Type1Message.<init>:()V
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type1Message.getResponse:()Ljava/lang/String;
            putstatic org.apache.http.impl.auth.NTLMEngineImpl.TYPE_1_MESSAGE:Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3    7     0   rnd  Ljava/security/SecureRandom;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Exception

  private static byte[] getNullTerminatedAsciiString(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.lang.String source
         0: .line 128
            aload 0 /* source */
            getstatic org.apache.http.Consts.ASCII:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 1 /* bytesWithoutNull */
        start local 1 // byte[] bytesWithoutNull
         1: .line 129
            aload 1 /* bytesWithoutNull */
            arraylength
            iconst_1
            iadd
            newarray 8
            astore 2 /* target */
        start local 2 // byte[] target
         2: .line 130
            aload 1 /* bytesWithoutNull */
            iconst_0
            aload 2 /* target */
            iconst_0
            aload 1 /* bytesWithoutNull */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 131
            aload 2 /* target */
            aload 1 /* bytesWithoutNull */
            arraylength
            iconst_0
            bastore
         4: .line 132
            aload 2 /* target */
            areturn
        end local 2 // byte[] target
        end local 1 // byte[] bytesWithoutNull
        end local 0 // java.lang.String source
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0            source  Ljava/lang/String;
            1    5     1  bytesWithoutNull  [B
            2    5     2            target  [B
    MethodParameters:
        Name  Flags
      source  final

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.http.impl.auth.NTLMEngineImpl this
         0: .line 137
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 138
            return
        end local 0 // org.apache.http.impl.auth.NTLMEngineImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/http/impl/auth/NTLMEngineImpl;

  static java.lang.String getType1Message(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // java.lang.String host
        start local 1 // java.lang.String domain
         0: .line 154
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.TYPE_1_MESSAGE:Ljava/lang/String;
            areturn
        end local 1 // java.lang.String domain
        end local 0 // java.lang.String host
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    host  Ljava/lang/String;
            0    1     1  domain  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      host    final
      domain  final

  static java.lang.String getType3Message(java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte[], int, java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BILjava/lang/String;[B)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=10, locals=8, args_size=8
        start local 0 // java.lang.String user
        start local 1 // java.lang.String password
        start local 2 // java.lang.String host
        start local 3 // java.lang.String domain
        start local 4 // byte[] nonce
        start local 5 // int type2Flags
        start local 6 // java.lang.String target
        start local 7 // byte[] targetInformation
         0: .line 180
            new org.apache.http.impl.auth.NTLMEngineImpl$Type3Message
            dup
            aload 3 /* domain */
            aload 2 /* host */
            aload 0 /* user */
            aload 1 /* password */
            aload 4 /* nonce */
            iload 5 /* type2Flags */
            aload 6 /* target */
         1: .line 181
            aload 7 /* targetInformation */
         2: .line 180
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$Type3Message.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BILjava/lang/String;[B)V
         3: .line 181
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type3Message.getResponse:()Ljava/lang/String;
         4: .line 180
            areturn
        end local 7 // byte[] targetInformation
        end local 6 // java.lang.String target
        end local 5 // int type2Flags
        end local 4 // byte[] nonce
        end local 3 // java.lang.String domain
        end local 2 // java.lang.String host
        end local 1 // java.lang.String password
        end local 0 // java.lang.String user
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               user  Ljava/lang/String;
            0    5     1           password  Ljava/lang/String;
            0    5     2               host  Ljava/lang/String;
            0    5     3             domain  Ljava/lang/String;
            0    5     4              nonce  [B
            0    5     5         type2Flags  I
            0    5     6             target  Ljava/lang/String;
            0    5     7  targetInformation  [B
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
                   Name  Flags
      user               final
      password           final
      host               final
      domain             final
      nonce              final
      type2Flags         final
      target             final
      targetInformation  final

  static java.lang.String getType3Message(java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte[], int, java.lang.String, byte[], java.security.cert.Certificate, byte[], byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BILjava/lang/String;[BLjava/security/cert/Certificate;[B[B)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=13, locals=11, args_size=11
        start local 0 // java.lang.String user
        start local 1 // java.lang.String password
        start local 2 // java.lang.String host
        start local 3 // java.lang.String domain
        start local 4 // byte[] nonce
        start local 5 // int type2Flags
        start local 6 // java.lang.String target
        start local 7 // byte[] targetInformation
        start local 8 // java.security.cert.Certificate peerServerCertificate
        start local 9 // byte[] type1Message
        start local 10 // byte[] type2Message
         0: .line 208
            new org.apache.http.impl.auth.NTLMEngineImpl$Type3Message
            dup
            aload 3 /* domain */
            aload 2 /* host */
            aload 0 /* user */
            aload 1 /* password */
            aload 4 /* nonce */
            iload 5 /* type2Flags */
            aload 6 /* target */
         1: .line 209
            aload 7 /* targetInformation */
            aload 8 /* peerServerCertificate */
            aload 9 /* type1Message */
            aload 10 /* type2Message */
         2: .line 208
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$Type3Message.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BILjava/lang/String;[BLjava/security/cert/Certificate;[B[B)V
         3: .line 209
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type3Message.getResponse:()Ljava/lang/String;
         4: .line 208
            areturn
        end local 10 // byte[] type2Message
        end local 9 // byte[] type1Message
        end local 8 // java.security.cert.Certificate peerServerCertificate
        end local 7 // byte[] targetInformation
        end local 6 // java.lang.String target
        end local 5 // int type2Flags
        end local 4 // byte[] nonce
        end local 3 // java.lang.String domain
        end local 2 // java.lang.String host
        end local 1 // java.lang.String password
        end local 0 // java.lang.String user
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    5     0                   user  Ljava/lang/String;
            0    5     1               password  Ljava/lang/String;
            0    5     2                   host  Ljava/lang/String;
            0    5     3                 domain  Ljava/lang/String;
            0    5     4                  nonce  [B
            0    5     5             type2Flags  I
            0    5     6                 target  Ljava/lang/String;
            0    5     7      targetInformation  [B
            0    5     8  peerServerCertificate  Ljava/security/cert/Certificate;
            0    5     9           type1Message  [B
            0    5    10           type2Message  [B
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
                       Name  Flags
      user                   final
      password               final
      host                   final
      domain                 final
      nonce                  final
      type2Flags             final
      target                 final
      targetInformation      final
      peerServerCertificate  final
      type1Message           final
      type2Message           final

  private static int readULong(byte[], int);
    descriptor: ([BI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // byte[] src
        start local 1 // int index
         0: .line 213
            aload 0 /* src */
            arraylength
            iload 1 /* index */
            iconst_4
            iadd
            if_icmpge 2
         1: .line 214
            iconst_0
            ireturn
         2: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* src */
            iload 1 /* index */
            baload
            sipush 255
            iand
            aload 0 /* src */
            iload 1 /* index */
            iconst_1
            iadd
            baload
            sipush 255
            iand
            bipush 8
            ishl
            ior
         3: .line 217
            aload 0 /* src */
            iload 1 /* index */
            iconst_2
            iadd
            baload
            sipush 255
            iand
            bipush 16
            ishl
         4: .line 216
            ior
         5: .line 217
            aload 0 /* src */
            iload 1 /* index */
            iconst_3
            iadd
            baload
            sipush 255
            iand
            bipush 24
            ishl
         6: .line 216
            ior
            ireturn
        end local 1 // int index
        end local 0 // byte[] src
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0    src  [B
            0    7     1  index  I
    MethodParameters:
       Name  Flags
      src    final
      index  final

  private static int readUShort(byte[], int);
    descriptor: ([BI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // byte[] src
        start local 1 // int index
         0: .line 221
            aload 0 /* src */
            arraylength
            iload 1 /* index */
            iconst_2
            iadd
            if_icmpge 2
         1: .line 222
            iconst_0
            ireturn
         2: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* src */
            iload 1 /* index */
            baload
            sipush 255
            iand
            aload 0 /* src */
            iload 1 /* index */
            iconst_1
            iadd
            baload
            sipush 255
            iand
            bipush 8
            ishl
            ior
            ireturn
        end local 1 // int index
        end local 0 // byte[] src
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0    src  [B
            0    3     1  index  I
    MethodParameters:
       Name  Flags
      src    final
      index  final

  private static byte[] readSecurityBuffer(byte[], int);
    descriptor: ([BI)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // byte[] src
        start local 1 // int index
         0: .line 228
            aload 0 /* src */
            iload 1 /* index */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.readUShort:([BI)I
            istore 2 /* length */
        start local 2 // int length
         1: .line 229
            aload 0 /* src */
            iload 1 /* index */
            iconst_4
            iadd
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.readULong:([BI)I
            istore 3 /* offset */
        start local 3 // int offset
         2: .line 230
            aload 0 /* src */
            arraylength
            iload 3 /* offset */
            iload 2 /* length */
            iadd
            if_icmpge 4
         3: .line 231
            iload 2 /* length */
            newarray 8
            areturn
         4: .line 233
      StackMap locals: int int
      StackMap stack:
            iload 2 /* length */
            newarray 8
            astore 4 /* buffer */
        start local 4 // byte[] buffer
         5: .line 234
            aload 0 /* src */
            iload 3 /* offset */
            aload 4 /* buffer */
            iconst_0
            iload 2 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 235
            aload 4 /* buffer */
            areturn
        end local 4 // byte[] buffer
        end local 3 // int offset
        end local 2 // int length
        end local 1 // int index
        end local 0 // byte[] src
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0     src  [B
            0    7     1   index  I
            1    7     2  length  I
            2    7     3  offset  I
            5    7     4  buffer  [B
    MethodParameters:
       Name  Flags
      src    final
      index  final

  private static byte[] makeRandomChallenge(java.util.Random);
    descriptor: (Ljava/util/Random;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.Random random
         0: .line 240
            bipush 8
            newarray 8
            astore 1 /* rval */
        start local 1 // byte[] rval
         1: .line 241
            aload 0 /* random */
            dup
            astore 2
            monitorenter
         2: .line 242
            aload 0 /* random */
            aload 1 /* rval */
            invokevirtual java.util.Random.nextBytes:([B)V
         3: .line 241
            aload 2
            monitorexit
         4: goto 7
      StackMap locals: java.util.Random byte[] java.util.Random
      StackMap stack: java.lang.Throwable
         5: aload 2
            monitorexit
         6: athrow
         7: .line 244
      StackMap locals:
      StackMap stack:
            aload 1 /* rval */
            areturn
        end local 1 // byte[] rval
        end local 0 // java.util.Random random
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  random  Ljava/util/Random;
            1    8     1    rval  [B
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any
    MethodParameters:
        Name  Flags
      random  final

  private static byte[] makeSecondaryKey(java.util.Random);
    descriptor: (Ljava/util/Random;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.Random random
         0: .line 249
            bipush 16
            newarray 8
            astore 1 /* rval */
        start local 1 // byte[] rval
         1: .line 250
            aload 0 /* random */
            dup
            astore 2
            monitorenter
         2: .line 251
            aload 0 /* random */
            aload 1 /* rval */
            invokevirtual java.util.Random.nextBytes:([B)V
         3: .line 250
            aload 2
            monitorexit
         4: goto 7
      StackMap locals: java.util.Random byte[] java.util.Random
      StackMap stack: java.lang.Throwable
         5: aload 2
            monitorexit
         6: athrow
         7: .line 253
      StackMap locals:
      StackMap stack:
            aload 1 /* rval */
            areturn
        end local 1 // byte[] rval
        end local 0 // java.util.Random random
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  random  Ljava/util/Random;
            1    8     1    rval  [B
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any
    MethodParameters:
        Name  Flags
      random  final

  static byte[] hmacMD5(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // byte[] value
        start local 1 // byte[] key
         0: .line 573
            new org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5
            dup
            aload 1 /* key */
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.<init>:([B)V
            astore 2 /* hmacMD5 */
        start local 2 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
         1: .line 574
            aload 2 /* hmacMD5 */
            aload 0 /* value */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         2: .line 575
            aload 2 /* hmacMD5 */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.getOutput:()[B
            areturn
        end local 2 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
        end local 1 // byte[] key
        end local 0 // byte[] value
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0    value  [B
            0    3     1      key  [B
            1    3     2  hmacMD5  Lorg/apache/http/impl/auth/NTLMEngineImpl$HMACMD5;
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
       Name  Flags
      value  final
      key    final

  static byte[] RC4(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // byte[] value
        start local 1 // byte[] key
         0: .line 582
            ldc "RC4"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 2 /* rc4 */
        start local 2 // javax.crypto.Cipher rc4
         1: .line 583
            aload 2 /* rc4 */
            iconst_1
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* key */
            ldc "RC4"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         2: .line 584
            aload 2 /* rc4 */
            aload 0 /* value */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
         3: areturn
        end local 2 // javax.crypto.Cipher rc4
         4: .line 585
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         5: .line 586
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            aload 2 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // byte[] key
        end local 0 // byte[] value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0  value  [B
            0    6     1    key  [B
            1    4     2    rc4  Ljavax/crypto/Cipher;
            5    6     2      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
       Name  Flags
      value  final
      key    final

  static byte[] ntlm2SessionResponse(byte[], byte[], byte[]);
    descriptor: ([B[B[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // byte[] ntlmHash
        start local 1 // byte[] challenge
        start local 2 // byte[] clientChallenge
         0: .line 601
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getMD5:()Ljava/security/MessageDigest;
            astore 3 /* md5 */
        start local 3 // java.security.MessageDigest md5
         1: .line 602
            aload 3 /* md5 */
            aload 1 /* challenge */
            invokevirtual java.security.MessageDigest.update:([B)V
         2: .line 603
            aload 3 /* md5 */
            aload 2 /* clientChallenge */
            invokevirtual java.security.MessageDigest.update:([B)V
         3: .line 604
            aload 3 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 4 /* digest */
        start local 4 // byte[] digest
         4: .line 606
            bipush 8
            newarray 8
            astore 5 /* sessionHash */
        start local 5 // byte[] sessionHash
         5: .line 607
            aload 4 /* digest */
            iconst_0
            aload 5 /* sessionHash */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 608
            aload 0 /* ntlmHash */
            aload 5 /* sessionHash */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.lmResponse:([B[B)[B
         7: areturn
        end local 5 // byte[] sessionHash
        end local 4 // byte[] digest
        end local 3 // java.security.MessageDigest md5
         8: .line 609
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
         9: .line 610
            aload 3 /* e */
            instanceof org.apache.http.impl.auth.NTLMEngineException
            ifeq 11
        10: .line 611
            aload 3 /* e */
            checkcast org.apache.http.impl.auth.NTLMEngineException
            athrow
        11: .line 613
      StackMap locals: java.lang.Exception
      StackMap stack:
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            aload 3 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aload 3 /* e */
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        end local 2 // byte[] clientChallenge
        end local 1 // byte[] challenge
        end local 0 // byte[] ntlmHash
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0         ntlmHash  [B
            0   12     1        challenge  [B
            0   12     2  clientChallenge  [B
            1    8     3              md5  Ljava/security/MessageDigest;
            4    8     4           digest  [B
            5    8     5      sessionHash  [B
            9   12     3                e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     7       8  Class java.lang.Exception
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
                 Name  Flags
      ntlmHash         final
      challenge        final
      clientChallenge  final

  private static byte[] lmHash(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=1
        start local 0 // java.lang.String password
         0: .line 628
            aload 0 /* password */
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            getstatic org.apache.http.Consts.ASCII:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 1 /* oemPassword */
        start local 1 // byte[] oemPassword
         1: .line 629
            aload 1 /* oemPassword */
            arraylength
            bipush 14
            invokestatic java.lang.Math.min:(II)I
            istore 2 /* length */
        start local 2 // int length
         2: .line 630
            bipush 14
            newarray 8
            astore 3 /* keyBytes */
        start local 3 // byte[] keyBytes
         3: .line 631
            aload 1 /* oemPassword */
            iconst_0
            aload 3 /* keyBytes */
            iconst_0
            iload 2 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 632
            aload 3 /* keyBytes */
            iconst_0
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.createDESKey:([BI)Ljava/security/Key;
            astore 4 /* lowKey */
        start local 4 // java.security.Key lowKey
         5: .line 633
            aload 3 /* keyBytes */
            bipush 7
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.createDESKey:([BI)Ljava/security/Key;
            astore 5 /* highKey */
        start local 5 // java.security.Key highKey
         6: .line 634
            ldc "KGS!@#$%"
            getstatic org.apache.http.Consts.ASCII:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 6 /* magicConstant */
        start local 6 // byte[] magicConstant
         7: .line 635
            ldc "DES/ECB/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 7 /* des */
        start local 7 // javax.crypto.Cipher des
         8: .line 636
            aload 7 /* des */
            iconst_1
            aload 4 /* lowKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         9: .line 637
            aload 7 /* des */
            aload 6 /* magicConstant */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 8 /* lowHash */
        start local 8 // byte[] lowHash
        10: .line 638
            aload 7 /* des */
            iconst_1
            aload 5 /* highKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        11: .line 639
            aload 7 /* des */
            aload 6 /* magicConstant */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 9 /* highHash */
        start local 9 // byte[] highHash
        12: .line 640
            bipush 16
            newarray 8
            astore 10 /* lmHash */
        start local 10 // byte[] lmHash
        13: .line 641
            aload 8 /* lowHash */
            iconst_0
            aload 10 /* lmHash */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 642
            aload 9 /* highHash */
            iconst_0
            aload 10 /* lmHash */
            bipush 8
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        15: .line 643
            aload 10 /* lmHash */
        16: areturn
        end local 10 // byte[] lmHash
        end local 9 // byte[] highHash
        end local 8 // byte[] lowHash
        end local 7 // javax.crypto.Cipher des
        end local 6 // byte[] magicConstant
        end local 5 // java.security.Key highKey
        end local 4 // java.security.Key lowKey
        end local 3 // byte[] keyBytes
        end local 2 // int length
        end local 1 // byte[] oemPassword
        17: .line 644
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        18: .line 645
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            aload 1 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // java.lang.String password
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   19     0       password  Ljava/lang/String;
            1   17     1    oemPassword  [B
            2   17     2         length  I
            3   17     3       keyBytes  [B
            5   17     4         lowKey  Ljava/security/Key;
            6   17     5        highKey  Ljava/security/Key;
            7   17     6  magicConstant  [B
            8   17     7            des  Ljavax/crypto/Cipher;
           10   17     8        lowHash  [B
           12   17     9       highHash  [B
           13   17    10         lmHash  [B
           18   19     1              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    16      17  Class java.lang.Exception
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
          Name  Flags
      password  final

  private static byte[] ntlmHash(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String password
         0: .line 659
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            ifnonnull 2
         1: .line 660
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            ldc "Unicode not supported"
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 662
      StackMap locals:
      StackMap stack:
            aload 0 /* password */
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 1 /* unicodePassword */
        start local 1 // byte[] unicodePassword
         3: .line 663
            new org.apache.http.impl.auth.NTLMEngineImpl$MD4
            dup
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$MD4.<init>:()V
            astore 2 /* md4 */
        start local 2 // org.apache.http.impl.auth.NTLMEngineImpl$MD4 md4
         4: .line 664
            aload 2 /* md4 */
            aload 1 /* unicodePassword */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$MD4.update:([B)V
         5: .line 665
            aload 2 /* md4 */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$MD4.getOutput:()[B
            areturn
        end local 2 // org.apache.http.impl.auth.NTLMEngineImpl$MD4 md4
        end local 1 // byte[] unicodePassword
        end local 0 // java.lang.String password
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0         password  Ljava/lang/String;
            3    6     1  unicodePassword  [B
            4    6     2              md4  Lorg/apache/http/impl/auth/NTLMEngineImpl$MD4;
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
          Name  Flags
      password  final

  private static byte[] lmv2Hash(java.lang.String, java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[B)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.lang.String domain
        start local 1 // java.lang.String user
        start local 2 // byte[] ntlmHash
         0: .line 676
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            ifnonnull 2
         1: .line 677
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            ldc "Unicode not supported"
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 679
      StackMap locals:
      StackMap stack:
            new org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5
            dup
            aload 2 /* ntlmHash */
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.<init>:([B)V
            astore 3 /* hmacMD5 */
        start local 3 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
         3: .line 681
            aload 3 /* hmacMD5 */
            aload 1 /* user */
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         4: .line 682
            aload 0 /* domain */
            ifnull 6
         5: .line 683
            aload 3 /* hmacMD5 */
            aload 0 /* domain */
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         6: .line 685
      StackMap locals: org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5
      StackMap stack:
            aload 3 /* hmacMD5 */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.getOutput:()[B
            areturn
        end local 3 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
        end local 2 // byte[] ntlmHash
        end local 1 // java.lang.String user
        end local 0 // java.lang.String domain
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0    domain  Ljava/lang/String;
            0    7     1      user  Ljava/lang/String;
            0    7     2  ntlmHash  [B
            3    7     3   hmacMD5  Lorg/apache/http/impl/auth/NTLMEngineImpl$HMACMD5;
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
          Name  Flags
      domain    final
      user      final
      ntlmHash  final

  private static byte[] ntlmv2Hash(java.lang.String, java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[B)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.lang.String domain
        start local 1 // java.lang.String user
        start local 2 // byte[] ntlmHash
         0: .line 696
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            ifnonnull 2
         1: .line 697
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            ldc "Unicode not supported"
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 699
      StackMap locals:
      StackMap stack:
            new org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5
            dup
            aload 2 /* ntlmHash */
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.<init>:([B)V
            astore 3 /* hmacMD5 */
        start local 3 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
         3: .line 701
            aload 3 /* hmacMD5 */
            aload 1 /* user */
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         4: .line 702
            aload 0 /* domain */
            ifnull 6
         5: .line 703
            aload 3 /* hmacMD5 */
            aload 0 /* domain */
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         6: .line 705
      StackMap locals: org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5
      StackMap stack:
            aload 3 /* hmacMD5 */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.getOutput:()[B
            areturn
        end local 3 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
        end local 2 // byte[] ntlmHash
        end local 1 // java.lang.String user
        end local 0 // java.lang.String domain
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0    domain  Ljava/lang/String;
            0    7     1      user  Ljava/lang/String;
            0    7     2  ntlmHash  [B
            3    7     3   hmacMD5  Lorg/apache/http/impl/auth/NTLMEngineImpl$HMACMD5;
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
          Name  Flags
      domain    final
      user      final
      ntlmHash  final

  private static byte[] lmResponse(byte[], byte[]);
    descriptor: ([B[B)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // byte[] hash
        start local 1 // byte[] challenge
         0: .line 720
            bipush 21
            newarray 8
            astore 2 /* keyBytes */
        start local 2 // byte[] keyBytes
         1: .line 721
            aload 0 /* hash */
            iconst_0
            aload 2 /* keyBytes */
            iconst_0
            bipush 16
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 722
            aload 2 /* keyBytes */
            iconst_0
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.createDESKey:([BI)Ljava/security/Key;
            astore 3 /* lowKey */
        start local 3 // java.security.Key lowKey
         3: .line 723
            aload 2 /* keyBytes */
            bipush 7
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.createDESKey:([BI)Ljava/security/Key;
            astore 4 /* middleKey */
        start local 4 // java.security.Key middleKey
         4: .line 724
            aload 2 /* keyBytes */
            bipush 14
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.createDESKey:([BI)Ljava/security/Key;
            astore 5 /* highKey */
        start local 5 // java.security.Key highKey
         5: .line 725
            ldc "DES/ECB/NoPadding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 6 /* des */
        start local 6 // javax.crypto.Cipher des
         6: .line 726
            aload 6 /* des */
            iconst_1
            aload 3 /* lowKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         7: .line 727
            aload 6 /* des */
            aload 1 /* challenge */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 7 /* lowResponse */
        start local 7 // byte[] lowResponse
         8: .line 728
            aload 6 /* des */
            iconst_1
            aload 4 /* middleKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         9: .line 729
            aload 6 /* des */
            aload 1 /* challenge */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 8 /* middleResponse */
        start local 8 // byte[] middleResponse
        10: .line 730
            aload 6 /* des */
            iconst_1
            aload 5 /* highKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        11: .line 731
            aload 6 /* des */
            aload 1 /* challenge */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 9 /* highResponse */
        start local 9 // byte[] highResponse
        12: .line 732
            bipush 24
            newarray 8
            astore 10 /* lmResponse */
        start local 10 // byte[] lmResponse
        13: .line 733
            aload 7 /* lowResponse */
            iconst_0
            aload 10 /* lmResponse */
            iconst_0
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 734
            aload 8 /* middleResponse */
            iconst_0
            aload 10 /* lmResponse */
            bipush 8
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        15: .line 735
            aload 9 /* highResponse */
            iconst_0
            aload 10 /* lmResponse */
            bipush 16
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 736
            aload 10 /* lmResponse */
        17: areturn
        end local 10 // byte[] lmResponse
        end local 9 // byte[] highResponse
        end local 8 // byte[] middleResponse
        end local 7 // byte[] lowResponse
        end local 6 // javax.crypto.Cipher des
        end local 5 // java.security.Key highKey
        end local 4 // java.security.Key middleKey
        end local 3 // java.security.Key lowKey
        end local 2 // byte[] keyBytes
        18: .line 737
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        19: .line 738
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            aload 2 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // byte[] challenge
        end local 0 // byte[] hash
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   20     0            hash  [B
            0   20     1       challenge  [B
            1   18     2        keyBytes  [B
            3   18     3          lowKey  Ljava/security/Key;
            4   18     4       middleKey  Ljava/security/Key;
            5   18     5         highKey  Ljava/security/Key;
            6   18     6             des  Ljavax/crypto/Cipher;
            8   18     7     lowResponse  [B
           10   18     8  middleResponse  [B
           12   18     9    highResponse  [B
           13   18    10      lmResponse  [B
           19   20     2               e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    17      18  Class java.lang.Exception
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
           Name  Flags
      hash       final
      challenge  final

  private static byte[] lmv2Response(byte[], byte[], byte[]);
    descriptor: ([B[B[B)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // byte[] hash
        start local 1 // byte[] challenge
        start local 2 // byte[] clientData
         0: .line 757
            new org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5
            dup
            aload 0 /* hash */
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.<init>:([B)V
            astore 3 /* hmacMD5 */
        start local 3 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
         1: .line 758
            aload 3 /* hmacMD5 */
            aload 1 /* challenge */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         2: .line 759
            aload 3 /* hmacMD5 */
            aload 2 /* clientData */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.update:([B)V
         3: .line 760
            aload 3 /* hmacMD5 */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5.getOutput:()[B
            astore 4 /* mac */
        start local 4 // byte[] mac
         4: .line 761
            aload 4 /* mac */
            arraylength
            aload 2 /* clientData */
            arraylength
            iadd
            newarray 8
            astore 5 /* lmv2Response */
        start local 5 // byte[] lmv2Response
         5: .line 762
            aload 4 /* mac */
            iconst_0
            aload 5 /* lmv2Response */
            iconst_0
            aload 4 /* mac */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 763
            aload 2 /* clientData */
            iconst_0
            aload 5 /* lmv2Response */
            aload 4 /* mac */
            arraylength
            aload 2 /* clientData */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 764
            aload 5 /* lmv2Response */
            areturn
        end local 5 // byte[] lmv2Response
        end local 4 // byte[] mac
        end local 3 // org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 hmacMD5
        end local 2 // byte[] clientData
        end local 1 // byte[] challenge
        end local 0 // byte[] hash
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          hash  [B
            0    8     1     challenge  [B
            0    8     2    clientData  [B
            1    8     3       hmacMD5  Lorg/apache/http/impl/auth/NTLMEngineImpl$HMACMD5;
            4    8     4           mac  [B
            5    8     5  lmv2Response  [B
    MethodParameters:
            Name  Flags
      hash        final
      challenge   final
      clientData  final

  private static byte[] encodeLong(int);
    descriptor: (I)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // int value
         0: .line 939
            iconst_4
            newarray 8
            astore 1 /* enc */
        start local 1 // byte[] enc
         1: .line 940
            aload 1 /* enc */
            iconst_0
            iload 0 /* value */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.encodeLong:([BII)V
         2: .line 941
            aload 1 /* enc */
            areturn
        end local 1 // byte[] enc
        end local 0 // int value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  value  I
            1    3     1    enc  [B
    MethodParameters:
       Name  Flags
      value  final

  private static void encodeLong(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // byte[] buf
        start local 1 // int offset
        start local 2 // int value
         0: .line 946
            aload 0 /* buf */
            iload 1 /* offset */
            iconst_0
            iadd
            iload 2 /* value */
            sipush 255
            iand
            i2b
            bastore
         1: .line 947
            aload 0 /* buf */
            iload 1 /* offset */
            iconst_1
            iadd
            iload 2 /* value */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         2: .line 948
            aload 0 /* buf */
            iload 1 /* offset */
            iconst_2
            iadd
            iload 2 /* value */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         3: .line 949
            aload 0 /* buf */
            iload 1 /* offset */
            iconst_3
            iadd
            iload 2 /* value */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         4: .line 950
            return
        end local 2 // int value
        end local 1 // int offset
        end local 0 // byte[] buf
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0     buf  [B
            0    5     1  offset  I
            0    5     2   value  I
    MethodParameters:
        Name  Flags
      buf     final
      offset  final
      value   final

  private static byte[] createBlob(byte[], byte[], byte[]);
    descriptor: ([B[B[B)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // byte[] clientChallenge
        start local 1 // byte[] targetInformation
        start local 2 // byte[] timestamp
         0: .line 964
            iconst_4
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            dup
            iconst_1
            iconst_1
            bastore
            astore 3 /* blobSignature */
        start local 3 // byte[] blobSignature
         1: .line 965
            iconst_4
            newarray 8
            astore 4 /* reserved */
        start local 4 // byte[] reserved
         2: .line 966
            iconst_4
            newarray 8
            astore 5 /* unknown1 */
        start local 5 // byte[] unknown1
         3: .line 967
            iconst_4
            newarray 8
            astore 6 /* unknown2 */
        start local 6 // byte[] unknown2
         4: .line 968
            aload 3 /* blobSignature */
            arraylength
            aload 4 /* reserved */
            arraylength
            iadd
            aload 2 /* timestamp */
            arraylength
            iadd
            bipush 8
            iadd
         5: .line 969
            aload 5 /* unknown1 */
            arraylength
         6: .line 968
            iadd
         7: .line 969
            aload 1 /* targetInformation */
            arraylength
         8: .line 968
            iadd
         9: .line 969
            aload 6 /* unknown2 */
            arraylength
        10: .line 968
            iadd
            newarray 8
            astore 7 /* blob */
        start local 7 // byte[] blob
        11: .line 970
            iconst_0
            istore 8 /* offset */
        start local 8 // int offset
        12: .line 971
            aload 3 /* blobSignature */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            aload 3 /* blobSignature */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 972
            iload 8 /* offset */
            aload 3 /* blobSignature */
            arraylength
            iadd
            istore 8 /* offset */
        14: .line 973
            aload 4 /* reserved */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            aload 4 /* reserved */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        15: .line 974
            iload 8 /* offset */
            aload 4 /* reserved */
            arraylength
            iadd
            istore 8 /* offset */
        16: .line 975
            aload 2 /* timestamp */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            aload 2 /* timestamp */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        17: .line 976
            iload 8 /* offset */
            aload 2 /* timestamp */
            arraylength
            iadd
            istore 8 /* offset */
        18: .line 977
            aload 0 /* clientChallenge */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            bipush 8
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        19: .line 978
            iinc 8 /* offset */ 8
        20: .line 979
            aload 5 /* unknown1 */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            aload 5 /* unknown1 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        21: .line 980
            iload 8 /* offset */
            aload 5 /* unknown1 */
            arraylength
            iadd
            istore 8 /* offset */
        22: .line 981
            aload 1 /* targetInformation */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            aload 1 /* targetInformation */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        23: .line 982
            iload 8 /* offset */
            aload 1 /* targetInformation */
            arraylength
            iadd
            istore 8 /* offset */
        24: .line 983
            aload 6 /* unknown2 */
            iconst_0
            aload 7 /* blob */
            iload 8 /* offset */
            aload 6 /* unknown2 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        25: .line 984
            iload 8 /* offset */
            aload 6 /* unknown2 */
            arraylength
            iadd
            istore 8 /* offset */
        26: .line 985
            aload 7 /* blob */
            areturn
        end local 8 // int offset
        end local 7 // byte[] blob
        end local 6 // byte[] unknown2
        end local 5 // byte[] unknown1
        end local 4 // byte[] reserved
        end local 3 // byte[] blobSignature
        end local 2 // byte[] timestamp
        end local 1 // byte[] targetInformation
        end local 0 // byte[] clientChallenge
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   27     0    clientChallenge  [B
            0   27     1  targetInformation  [B
            0   27     2          timestamp  [B
            1   27     3      blobSignature  [B
            2   27     4           reserved  [B
            3   27     5           unknown1  [B
            4   27     6           unknown2  [B
           11   27     7               blob  [B
           12   27     8             offset  I
    MethodParameters:
                   Name  Flags
      clientChallenge    final
      targetInformation  final
      timestamp          final

  private static java.security.Key createDESKey(byte[], int);
    descriptor: ([BI)Ljava/security/Key;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // byte[] bytes
        start local 1 // int offset
         0: .line 1001
            bipush 7
            newarray 8
            astore 2 /* keyBytes */
        start local 2 // byte[] keyBytes
         1: .line 1002
            aload 0 /* bytes */
            iload 1 /* offset */
            aload 2 /* keyBytes */
            iconst_0
            bipush 7
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 1003
            bipush 8
            newarray 8
            astore 3 /* material */
        start local 3 // byte[] material
         3: .line 1004
            aload 3 /* material */
            iconst_0
            aload 2 /* keyBytes */
            iconst_0
            baload
            bastore
         4: .line 1005
            aload 3 /* material */
            iconst_1
            aload 2 /* keyBytes */
            iconst_0
            baload
            bipush 7
            ishl
            aload 2 /* keyBytes */
            iconst_1
            baload
            sipush 255
            iand
            iconst_1
            iushr
            ior
            i2b
            bastore
         5: .line 1006
            aload 3 /* material */
            iconst_2
            aload 2 /* keyBytes */
            iconst_1
            baload
            bipush 6
            ishl
            aload 2 /* keyBytes */
            iconst_2
            baload
            sipush 255
            iand
            iconst_2
            iushr
            ior
            i2b
            bastore
         6: .line 1007
            aload 3 /* material */
            iconst_3
            aload 2 /* keyBytes */
            iconst_2
            baload
            iconst_5
            ishl
            aload 2 /* keyBytes */
            iconst_3
            baload
            sipush 255
            iand
            iconst_3
            iushr
            ior
            i2b
            bastore
         7: .line 1008
            aload 3 /* material */
            iconst_4
            aload 2 /* keyBytes */
            iconst_3
            baload
            iconst_4
            ishl
            aload 2 /* keyBytes */
            iconst_4
            baload
            sipush 255
            iand
            iconst_4
            iushr
            ior
            i2b
            bastore
         8: .line 1009
            aload 3 /* material */
            iconst_5
            aload 2 /* keyBytes */
            iconst_4
            baload
            iconst_3
            ishl
            aload 2 /* keyBytes */
            iconst_5
            baload
            sipush 255
            iand
            iconst_5
            iushr
            ior
            i2b
            bastore
         9: .line 1010
            aload 3 /* material */
            bipush 6
            aload 2 /* keyBytes */
            iconst_5
            baload
            iconst_2
            ishl
            aload 2 /* keyBytes */
            bipush 6
            baload
            sipush 255
            iand
            bipush 6
            iushr
            ior
            i2b
            bastore
        10: .line 1011
            aload 3 /* material */
            bipush 7
            aload 2 /* keyBytes */
            bipush 6
            baload
            iconst_1
            ishl
            i2b
            bastore
        11: .line 1012
            aload 3 /* material */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.oddParity:([B)V
        12: .line 1013
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 3 /* material */
            ldc "DES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            areturn
        end local 3 // byte[] material
        end local 2 // byte[] keyBytes
        end local 1 // int offset
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0     bytes  [B
            0   13     1    offset  I
            1   13     2  keyBytes  [B
            3   13     3  material  [B
    MethodParameters:
        Name  Flags
      bytes   final
      offset  final

  private static void oddParity(byte[]);
    descriptor: ([B)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // byte[] bytes
         0: .line 1023
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 17
         2: .line 1024
      StackMap locals: int
      StackMap stack:
            aload 0 /* bytes */
            iload 1 /* i */
            baload
            istore 2 /* b */
        start local 2 // byte b
         3: .line 1025
            iload 2 /* b */
            bipush 7
            iushr
            iload 2 /* b */
            bipush 6
            iushr
            ixor
            iload 2 /* b */
            iconst_5
            iushr
            ixor
            iload 2 /* b */
            iconst_4
            iushr
            ixor
            iload 2 /* b */
            iconst_3
            iushr
            ixor
         4: .line 1026
            iload 2 /* b */
            iconst_2
            iushr
         5: .line 1025
            ixor
         6: .line 1026
            iload 2 /* b */
            iconst_1
            iushr
         7: .line 1025
            ixor
         8: .line 1026
            iconst_1
         9: .line 1025
            iand
            ifne 10
            iconst_1
            goto 11
      StackMap locals: int
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: istore 3 /* needsParity */
        start local 3 // boolean needsParity
        12: .line 1027
            iload 3 /* needsParity */
            ifeq 15
        13: .line 1028
            aload 0 /* bytes */
            iload 1 /* i */
            dup2
            baload
            iconst_1
            ior
            i2b
            bastore
        14: .line 1029
            goto 16
        15: .line 1030
      StackMap locals: int
      StackMap stack:
            aload 0 /* bytes */
            iload 1 /* i */
            dup2
            baload
            bipush -2
            iand
            i2b
            bastore
        end local 3 // boolean needsParity
        end local 2 // byte b
        16: .line 1023
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 1 /* i */
            aload 0 /* bytes */
            arraylength
            if_icmplt 2
        end local 1 // int i
        18: .line 1033
            return
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0        bytes  [B
            1   18     1            i  I
            3   16     2            b  B
           12   16     3  needsParity  Z
    MethodParameters:
       Name  Flags
      bytes  final

  private static java.nio.charset.Charset getCharset(int);
    descriptor: (I)Ljava/nio/charset/Charset;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int flags
         0: .line 1042
            iload 0 /* flags */
            iconst_1
            iand
            ifne 2
         1: .line 1043
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
            areturn
         2: .line 1045
      StackMap locals:
      StackMap stack:
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            ifnonnull 4
         3: .line 1046
            new org.apache.http.impl.auth.NTLMEngineException
            dup
            ldc "Unicode not supported"
            invokespecial org.apache.http.impl.auth.NTLMEngineException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1048
      StackMap locals:
      StackMap stack:
            getstatic org.apache.http.impl.auth.NTLMEngineImpl.UNICODE_LITTLE_UNMARKED:Ljava/nio/charset/Charset;
            areturn
        end local 0 // int flags
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0  flags  I
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
       Name  Flags
      flags  final

  private static java.lang.String stripDotSuffix(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String value
         0: .line 1053
            aload 0 /* value */
            ifnonnull 2
         1: .line 1054
            aconst_null
            areturn
         2: .line 1056
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            istore 1 /* index */
        start local 1 // int index
         3: .line 1057
            iload 1 /* index */
            iconst_m1
            if_icmpeq 5
         4: .line 1058
            aload 0 /* value */
            iconst_0
            iload 1 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
         5: .line 1060
      StackMap locals: int
      StackMap stack:
            aload 0 /* value */
            areturn
        end local 1 // int index
        end local 0 // java.lang.String value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0  value  Ljava/lang/String;
            3    6     1  index  I
    MethodParameters:
       Name  Flags
      value  final

  private static java.lang.String convertHost(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String host
         0: .line 1065
            aload 0 /* host */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.stripDotSuffix:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String host
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  host  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      host  final

  private static java.lang.String convertDomain(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String domain
         0: .line 1070
            aload 0 /* domain */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.stripDotSuffix:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String domain
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  domain  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      domain  final

  static void writeUShort(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // byte[] buffer
        start local 1 // int value
        start local 2 // int offset
         0: .line 1817
            aload 0 /* buffer */
            iload 2 /* offset */
            iload 1 /* value */
            sipush 255
            iand
            i2b
            bastore
         1: .line 1818
            aload 0 /* buffer */
            iload 2 /* offset */
            iconst_1
            iadd
            iload 1 /* value */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         2: .line 1819
            return
        end local 2 // int offset
        end local 1 // int value
        end local 0 // byte[] buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  buffer  [B
            0    3     1   value  I
            0    3     2  offset  I
    MethodParameters:
        Name  Flags
      buffer  final
      value   final
      offset  final

  static void writeULong(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // byte[] buffer
        start local 1 // int value
        start local 2 // int offset
         0: .line 1822
            aload 0 /* buffer */
            iload 2 /* offset */
            iload 1 /* value */
            sipush 255
            iand
            i2b
            bastore
         1: .line 1823
            aload 0 /* buffer */
            iload 2 /* offset */
            iconst_1
            iadd
            iload 1 /* value */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
         2: .line 1824
            aload 0 /* buffer */
            iload 2 /* offset */
            iconst_2
            iadd
            iload 1 /* value */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            bastore
         3: .line 1825
            aload 0 /* buffer */
            iload 2 /* offset */
            iconst_3
            iadd
            iload 1 /* value */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
         4: .line 1826
            return
        end local 2 // int offset
        end local 1 // int value
        end local 0 // byte[] buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  buffer  [B
            0    5     1   value  I
            0    5     2  offset  I
    MethodParameters:
        Name  Flags
      buffer  final
      value   final
      offset  final

  static int F(int, int, int);
    descriptor: (III)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // int x
        start local 1 // int y
        start local 2 // int z
         0: .line 1829
            iload 0 /* x */
            iload 1 /* y */
            iand
            iload 0 /* x */
            iconst_m1
            ixor
            iload 2 /* z */
            iand
            ior
            ireturn
        end local 2 // int z
        end local 1 // int y
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
            0    1     1     y  I
            0    1     2     z  I
    MethodParameters:
      Name  Flags
      x     final
      y     final
      z     final

  static int G(int, int, int);
    descriptor: (III)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // int x
        start local 1 // int y
        start local 2 // int z
         0: .line 1833
            iload 0 /* x */
            iload 1 /* y */
            iand
            iload 0 /* x */
            iload 2 /* z */
            iand
            ior
            iload 1 /* y */
            iload 2 /* z */
            iand
            ior
            ireturn
        end local 2 // int z
        end local 1 // int y
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
            0    1     1     y  I
            0    1     2     z  I
    MethodParameters:
      Name  Flags
      x     final
      y     final
      z     final

  static int H(int, int, int);
    descriptor: (III)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // int x
        start local 1 // int y
        start local 2 // int z
         0: .line 1837
            iload 0 /* x */
            iload 1 /* y */
            ixor
            iload 2 /* z */
            ixor
            ireturn
        end local 2 // int z
        end local 1 // int y
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
            0    1     1     y  I
            0    1     2     z  I
    MethodParameters:
      Name  Flags
      x     final
      y     final
      z     final

  static int rotintlft(int, int);
    descriptor: (II)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int val
        start local 1 // int numbits
         0: .line 1841
            iload 0 /* val */
            iload 1 /* numbits */
            ishl
            iload 0 /* val */
            bipush 32
            iload 1 /* numbits */
            isub
            iushr
            ior
            ireturn
        end local 1 // int numbits
        end local 0 // int val
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0      val  I
            0    1     1  numbits  I
    MethodParameters:
         Name  Flags
      val      final
      numbits  final

  static java.security.MessageDigest getMD5();
    descriptor: ()Ljava/security/MessageDigest;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 1846
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
         1: areturn
         2: .line 1847
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 0 /* ex */
        start local 0 // java.security.NoSuchAlgorithmException ex
         3: .line 1848
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "MD5 message digest doesn't seem to exist - fatal error: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* ex */
            invokevirtual java.security.NoSuchAlgorithmException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.security.NoSuchAlgorithmException ex
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3    4     0    ex  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.NoSuchAlgorithmException

  public java.lang.String generateType1Msg(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.http.impl.auth.NTLMEngineImpl this
        start local 1 // java.lang.String domain
        start local 2 // java.lang.String workstation
         0: .line 2084
            aload 2 /* workstation */
            aload 1 /* domain */
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getType1Message:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String workstation
        end local 1 // java.lang.String domain
        end local 0 // org.apache.http.impl.auth.NTLMEngineImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/apache/http/impl/auth/NTLMEngineImpl;
            0    1     1       domain  Ljava/lang/String;
            0    1     2  workstation  Ljava/lang/String;
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
             Name  Flags
      domain       final
      workstation  final

  public java.lang.String generateType3Msg(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // org.apache.http.impl.auth.NTLMEngineImpl this
        start local 1 // java.lang.String username
        start local 2 // java.lang.String password
        start local 3 // java.lang.String domain
        start local 4 // java.lang.String workstation
        start local 5 // java.lang.String challenge
         0: .line 2094
            new org.apache.http.impl.auth.NTLMEngineImpl$Type2Message
            dup
            aload 5 /* challenge */
            invokespecial org.apache.http.impl.auth.NTLMEngineImpl$Type2Message.<init>:(Ljava/lang/String;)V
            astore 6 /* t2m */
        start local 6 // org.apache.http.impl.auth.NTLMEngineImpl$Type2Message t2m
         1: .line 2096
            aload 1 /* username */
         2: .line 2097
            aload 2 /* password */
         3: .line 2098
            aload 4 /* workstation */
         4: .line 2099
            aload 3 /* domain */
         5: .line 2100
            aload 6 /* t2m */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type2Message.getChallenge:()[B
         6: .line 2101
            aload 6 /* t2m */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type2Message.getFlags:()I
         7: .line 2102
            aload 6 /* t2m */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type2Message.getTarget:()Ljava/lang/String;
         8: .line 2103
            aload 6 /* t2m */
            invokevirtual org.apache.http.impl.auth.NTLMEngineImpl$Type2Message.getTargetInfo:()[B
         9: .line 2095
            invokestatic org.apache.http.impl.auth.NTLMEngineImpl.getType3Message:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BILjava/lang/String;[B)Ljava/lang/String;
            areturn
        end local 6 // org.apache.http.impl.auth.NTLMEngineImpl$Type2Message t2m
        end local 5 // java.lang.String challenge
        end local 4 // java.lang.String workstation
        end local 3 // java.lang.String domain
        end local 2 // java.lang.String password
        end local 1 // java.lang.String username
        end local 0 // org.apache.http.impl.auth.NTLMEngineImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lorg/apache/http/impl/auth/NTLMEngineImpl;
            0   10     1     username  Ljava/lang/String;
            0   10     2     password  Ljava/lang/String;
            0   10     3       domain  Ljava/lang/String;
            0   10     4  workstation  Ljava/lang/String;
            0   10     5    challenge  Ljava/lang/String;
            1   10     6          t2m  Lorg/apache/http/impl/auth/NTLMEngineImpl$Type2Message;
    Exceptions:
      throws org.apache.http.impl.auth.NTLMEngineException
    MethodParameters:
             Name  Flags
      username     final
      password     final
      domain       final
      workstation  final
      challenge    final
}
SourceFile: "NTLMEngineImpl.java"
NestMembers:
  org.apache.http.impl.auth.NTLMEngineImpl$CipherGen  org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5  org.apache.http.impl.auth.NTLMEngineImpl$Handle  org.apache.http.impl.auth.NTLMEngineImpl$MD4  org.apache.http.impl.auth.NTLMEngineImpl$Mode  org.apache.http.impl.auth.NTLMEngineImpl$NTLMMessage  org.apache.http.impl.auth.NTLMEngineImpl$Type1Message  org.apache.http.impl.auth.NTLMEngineImpl$Type2Message  org.apache.http.impl.auth.NTLMEngineImpl$Type3Message
InnerClasses:
  protected CipherGen = org.apache.http.impl.auth.NTLMEngineImpl$CipherGen of org.apache.http.impl.auth.NTLMEngineImpl
  HMACMD5 = org.apache.http.impl.auth.NTLMEngineImpl$HMACMD5 of org.apache.http.impl.auth.NTLMEngineImpl
  Handle = org.apache.http.impl.auth.NTLMEngineImpl$Handle of org.apache.http.impl.auth.NTLMEngineImpl
  MD4 = org.apache.http.impl.auth.NTLMEngineImpl$MD4 of org.apache.http.impl.auth.NTLMEngineImpl
  final Mode = org.apache.http.impl.auth.NTLMEngineImpl$Mode of org.apache.http.impl.auth.NTLMEngineImpl
  NTLMMessage = org.apache.http.impl.auth.NTLMEngineImpl$NTLMMessage of org.apache.http.impl.auth.NTLMEngineImpl
  Type1Message = org.apache.http.impl.auth.NTLMEngineImpl$Type1Message of org.apache.http.impl.auth.NTLMEngineImpl
  Type2Message = org.apache.http.impl.auth.NTLMEngineImpl$Type2Message of org.apache.http.impl.auth.NTLMEngineImpl
  Type3Message = org.apache.http.impl.auth.NTLMEngineImpl$Type3Message of org.apache.http.impl.auth.NTLMEngineImpl