public class com.sun.security.auth.module.JndiLoginModule implements javax.security.auth.spi.LoginModule
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.security.auth.module.JndiLoginModule
  super_class: java.lang.Object
{
  public final java.lang.String USER_PROVIDER;
    descriptor: Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    ConstantValue: "user.provider.url"

  public final java.lang.String GROUP_PROVIDER;
    descriptor: Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    ConstantValue: "group.provider.url"

  private boolean debug;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean strongDebug;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String userProvider;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String groupProvider;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private boolean useFirstPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean tryFirstPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean storePass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean clearPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean succeeded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean commitSucceeded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String username;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private char[] password;
    descriptor: [C
    flags: (0x0002) ACC_PRIVATE

  javax.naming.directory.DirContext ctx;
    descriptor: Ljavax/naming/directory/DirContext;
    flags: (0x0000) 

  private com.sun.security.auth.UnixPrincipal userPrincipal;
    descriptor: Lcom/sun/security/auth/UnixPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.security.auth.UnixNumericUserPrincipal UIDPrincipal;
    descriptor: Lcom/sun/security/auth/UnixNumericUserPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.security.auth.UnixNumericGroupPrincipal GIDPrincipal;
    descriptor: Lcom/sun/security/auth/UnixNumericGroupPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private java.util.LinkedList<com.sun.security.auth.UnixNumericGroupPrincipal> supplementaryGroups;
    descriptor: Ljava/util/LinkedList;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/LinkedList<Lcom/sun/security/auth/UnixNumericGroupPrincipal;>;

  private javax.security.auth.Subject subject;
    descriptor: Ljavax/security/auth/Subject;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.callback.CallbackHandler callbackHandler;
    descriptor: Ljavax/security/auth/callback/CallbackHandler;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<java.lang.String, java.lang.Object> sharedState;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private java.util.Map<java.lang.String, ?> options;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;*>;

  private static final java.lang.String CRYPT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "{crypt}"

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

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

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

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

  private static final java.lang.String NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.auth.login.name"

  private static final java.lang.String PWD;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.auth.login.password"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
         0: .line 152
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 155
            aload 0 /* this */
            ldc "user.provider.url"
            putfield com.sun.security.auth.module.JndiLoginModule.USER_PROVIDER:Ljava/lang/String;
         2: .line 156
            aload 0 /* this */
            ldc "group.provider.url"
            putfield com.sun.security.auth.module.JndiLoginModule.GROUP_PROVIDER:Ljava/lang/String;
         3: .line 159
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.debug:Z
         4: .line 160
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.strongDebug:Z
         5: .line 163
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.useFirstPass:Z
         6: .line 164
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.tryFirstPass:Z
         7: .line 165
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.storePass:Z
         8: .line 166
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.clearPass:Z
         9: .line 169
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
        10: .line 170
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.commitSucceeded:Z
        11: .line 181
            aload 0 /* this */
        12: .line 182
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
        13: .line 152
            return
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lcom/sun/security/auth/module/JndiLoginModule;

  public void initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map<java.lang.String, ?>, java.util.Map<java.lang.String, ?>);
    descriptor: (Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;Ljava/util/Map;Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
        start local 1 // javax.security.auth.Subject subject
        start local 2 // javax.security.auth.callback.CallbackHandler callbackHandler
        start local 3 // java.util.Map sharedState
        start local 4 // java.util.Map options
         0: .line 222
            aload 0 /* this */
            aload 1 /* subject */
            putfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
         1: .line 223
            aload 0 /* this */
            aload 2 /* callbackHandler */
            putfield com.sun.security.auth.module.JndiLoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
         2: .line 224
            aload 0 /* this */
            aload 3 /* sharedState */
            putfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
         3: .line 225
            aload 0 /* this */
            aload 4 /* options */
            putfield com.sun.security.auth.module.JndiLoginModule.options:Ljava/util/Map;
         4: .line 228
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "debug"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.JndiLoginModule.debug:Z
         5: .line 229
            aload 0 /* this */
         6: .line 230
            ldc "true"
            aload 4 /* options */
            ldc "strongDebug"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
         7: .line 229
            putfield com.sun.security.auth.module.JndiLoginModule.strongDebug:Z
         8: .line 231
            aload 0 /* this */
            aload 4 /* options */
            ldc "user.provider.url"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.JndiLoginModule.userProvider:Ljava/lang/String;
         9: .line 232
            aload 0 /* this */
            aload 4 /* options */
            ldc "group.provider.url"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.JndiLoginModule.groupProvider:Ljava/lang/String;
        10: .line 233
            aload 0 /* this */
        11: .line 234
            ldc "true"
            aload 4 /* options */
            ldc "tryFirstPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        12: .line 233
            putfield com.sun.security.auth.module.JndiLoginModule.tryFirstPass:Z
        13: .line 235
            aload 0 /* this */
        14: .line 236
            ldc "true"
            aload 4 /* options */
            ldc "useFirstPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        15: .line 235
            putfield com.sun.security.auth.module.JndiLoginModule.useFirstPass:Z
        16: .line 237
            aload 0 /* this */
        17: .line 238
            ldc "true"
            aload 4 /* options */
            ldc "storePass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        18: .line 237
            putfield com.sun.security.auth.module.JndiLoginModule.storePass:Z
        19: .line 239
            aload 0 /* this */
        20: .line 240
            ldc "true"
            aload 4 /* options */
            ldc "clearPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        21: .line 239
            putfield com.sun.security.auth.module.JndiLoginModule.clearPass:Z
        22: .line 241
            return
        end local 4 // java.util.Map options
        end local 3 // java.util.Map sharedState
        end local 2 // javax.security.auth.callback.CallbackHandler callbackHandler
        end local 1 // javax.security.auth.Subject subject
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   23     0             this  Lcom/sun/security/auth/module/JndiLoginModule;
            0   23     1          subject  Ljavax/security/auth/Subject;
            0   23     2  callbackHandler  Ljavax/security/auth/callback/CallbackHandler;
            0   23     3      sharedState  Ljava/util/Map<Ljava/lang/String;*>;
            0   23     4          options  Ljava/util/Map<Ljava/lang/String;*>;
    Signature: (Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;Ljava/util/Map<Ljava/lang/String;*>;Ljava/util/Map<Ljava/lang/String;*>;)V
    MethodParameters:
                 Name  Flags
      subject          
      callbackHandler  
      sharedState      
      options          

  public boolean login();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
         0: .line 257
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userProvider:Ljava/lang/String;
            ifnonnull 4
         1: .line 258
            new javax.security.auth.login.LoginException
            dup
         2: .line 259
            ldc "Error: Unable to locate JNDI user provider"
         3: .line 258
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.groupProvider:Ljava/lang/String;
            ifnonnull 8
         5: .line 262
            new javax.security.auth.login.LoginException
            dup
         6: .line 263
            ldc "Error: Unable to locate JNDI group provider"
         7: .line 262
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 15
         9: .line 267
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] user provider: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 268
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userProvider:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 267
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 269
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] group provider: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 270
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.groupProvider:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 269
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        15: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.tryFirstPass:Z
            ifeq 28
        16: .line 279
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.security.auth.module.JndiLoginModule.attemptAuthentication:(Z)V
        17: .line 282
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
        18: .line 283
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 20
        19: .line 284
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] tryFirstPass succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 287
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        21: .line 288
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 1 /* le */
        start local 1 // javax.security.auth.login.LoginException le
        22: .line 290
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
        23: .line 291
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 39
        24: .line 292
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] tryFirstPass failed with:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        25: .line 294
            aload 1 /* le */
            invokevirtual javax.security.auth.login.LoginException.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 292
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 1 // javax.security.auth.login.LoginException le
        27: .line 298
            goto 39
      StackMap locals:
      StackMap stack:
        28: aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.useFirstPass:Z
            ifeq 39
        29: .line 303
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.security.auth.module.JndiLoginModule.attemptAuthentication:(Z)V
        30: .line 306
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
        31: .line 307
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 33
        32: .line 308
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] useFirstPass succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        33: .line 311
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        34: .line 312
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 1 /* le */
        start local 1 // javax.security.auth.login.LoginException le
        35: .line 314
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
        36: .line 315
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 38
        37: .line 316
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] useFirstPass failed"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        38: .line 319
      StackMap locals: javax.security.auth.login.LoginException
      StackMap stack:
            aload 1 /* le */
            athrow
        end local 1 // javax.security.auth.login.LoginException le
        39: .line 325
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.security.auth.module.JndiLoginModule.attemptAuthentication:(Z)V
        40: .line 328
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
        41: .line 329
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 43
        42: .line 330
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] regular authentication succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 333
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        44: .line 334
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 1 /* le */
        start local 1 // javax.security.auth.login.LoginException le
        45: .line 335
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
        46: .line 336
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 48
        47: .line 337
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] regular authentication failed"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        48: .line 340
      StackMap locals: javax.security.auth.login.LoginException
      StackMap stack:
            aload 1 /* le */
            athrow
        end local 1 // javax.security.auth.login.LoginException le
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   49     0  this  Lcom/sun/security/auth/module/JndiLoginModule;
           22   27     1    le  Ljavax/security/auth/login/LoginException;
           35   39     1    le  Ljavax/security/auth/login/LoginException;
           45   49     1    le  Ljavax/security/auth/login/LoginException;
      Exception table:
        from    to  target  type
          16    20      21  Class javax.security.auth.login.LoginException
          29    33      34  Class javax.security.auth.login.LoginException
          39    43      44  Class javax.security.auth.login.LoginException
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean commit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
         0: .line 368
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
            ifne 2
         1: .line 369
            iconst_0
            ireturn
         2: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 5
         3: .line 372
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
         4: .line 373
            new javax.security.auth.login.LoginException
            dup
            ldc "Subject is Readonly"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 376
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userPrincipal:Lcom/sun/security/auth/UnixPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 377
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userPrincipal:Lcom/sun/security/auth/UnixPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 378
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.UIDPrincipal:Lcom/sun/security/auth/UnixNumericUserPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 379
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.UIDPrincipal:Lcom/sun/security/auth/UnixNumericUserPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         9: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.GIDPrincipal:Lcom/sun/security/auth/UnixNumericGroupPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 11
        10: .line 381
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.GIDPrincipal:Lcom/sun/security/auth/UnixNumericGroupPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        11: .line 382
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        12: goto 19
        13: .line 383
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
        14: .line 384
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
            iload 1 /* i */
            invokevirtual java.util.LinkedList.get:(I)Ljava/lang/Object;
        15: .line 383
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
        16: .line 384
            ifne 18
        17: .line 385
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
            iload 1 /* i */
            invokevirtual java.util.LinkedList.get:(I)Ljava/lang/Object;
            checkcast java.security.Principal
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        18: .line 382
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 1 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.size:()I
            if_icmplt 13
        end local 1 // int i
        20: .line 388
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 25
        21: .line 389
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule]: added UnixPrincipal,"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        22: .line 391
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t\t\tUnixNumericUserPrincipal,"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        23: .line 392
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t\t\tUnixNumericGroupPrincipal(s),"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 393
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t\t to Subject"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        25: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
        26: .line 398
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.JndiLoginModule.commitSucceeded:Z
        27: .line 399
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   28     0  this  Lcom/sun/security/auth/module/JndiLoginModule;
           12   20     1     i  I
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean abort();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
         0: .line 419
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 2
         1: .line 420
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule]: aborted authentication failed"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 423
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
            ifne 4
         3: .line 424
            iconst_0
            ireturn
         4: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
            ifeq 12
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.commitSucceeded:Z
            ifne 12
         5: .line 428
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
         6: .line 429
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
         7: .line 431
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.userPrincipal:Lcom/sun/security/auth/UnixPrincipal;
         8: .line 432
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.UIDPrincipal:Lcom/sun/security/auth/UnixNumericUserPrincipal;
         9: .line 433
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.GIDPrincipal:Lcom/sun/security/auth/UnixNumericGroupPrincipal;
        10: .line 434
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
        11: .line 435
            goto 13
        12: .line 438
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.logout:()Z
            pop
        13: .line 440
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lcom/sun/security/auth/module/JndiLoginModule;
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean logout();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
         0: .line 455
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 3
         1: .line 456
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
         2: .line 457
            new javax.security.auth.login.LoginException
            dup
            ldc "Subject is Readonly"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userPrincipal:Lcom/sun/security/auth/UnixPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         4: .line 460
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.UIDPrincipal:Lcom/sun/security/auth/UnixNumericUserPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         5: .line 461
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.GIDPrincipal:Lcom/sun/security/auth/UnixNumericGroupPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         6: .line 462
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         7: goto 10
         8: .line 463
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
            iload 1 /* i */
            invokevirtual java.util.LinkedList.get:(I)Ljava/lang/Object;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         9: .line 462
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 1 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.size:()I
            if_icmplt 8
        end local 1 // int i
        11: .line 468
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.cleanState:()V
        12: .line 469
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.succeeded:Z
        13: .line 470
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.JndiLoginModule.commitSucceeded:Z
        14: .line 472
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.userPrincipal:Lcom/sun/security/auth/UnixPrincipal;
        15: .line 473
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.UIDPrincipal:Lcom/sun/security/auth/UnixNumericUserPrincipal;
        16: .line 474
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.GIDPrincipal:Lcom/sun/security/auth/UnixNumericGroupPrincipal;
        17: .line 475
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
        18: .line 477
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 20
        19: .line 478
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule]: logged out Subject"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 481
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   21     0  this  Lcom/sun/security/auth/module/JndiLoginModule;
            7   11     1     i  I
    Exceptions:
      throws javax.security.auth.login.LoginException

  private void attemptAuthentication(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=16, args_size=2
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 493
            aconst_null
            astore 2 /* encryptedPassword */
        start local 2 // java.lang.String encryptedPassword
         1: .line 496
            aload 0 /* this */
            iload 1 /* getPasswdFromSharedState */
            invokevirtual com.sun.security.auth.module.JndiLoginModule.getUsernamePassword:(Z)V
         2: .line 501
            new javax.naming.InitialContext
            dup
            invokespecial javax.naming.InitialContext.<init>:()V
            astore 3 /* iCtx */
        start local 3 // javax.naming.InitialContext iCtx
         3: .line 502
            aload 0 /* this */
            aload 3 /* iCtx */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userProvider:Ljava/lang/String;
            invokevirtual javax.naming.InitialContext.lookup:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast javax.naming.directory.DirContext
            putfield com.sun.security.auth.module.JndiLoginModule.ctx:Ljavax/naming/directory/DirContext;
         4: .line 514
            new javax.naming.directory.SearchControls
            dup
            invokespecial javax.naming.directory.SearchControls.<init>:()V
            astore 4 /* controls */
        start local 4 // javax.naming.directory.SearchControls controls
         5: .line 515
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.ctx:Ljavax/naming/directory/DirContext;
            ldc ""
         6: .line 516
            new java.lang.StringBuilder
            dup
            ldc "(uid="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 517
            aload 4 /* controls */
         8: .line 515
            invokeinterface javax.naming.directory.DirContext.search:(Ljava/lang/String;Ljava/lang/String;Ljavax/naming/directory/SearchControls;)Ljavax/naming/NamingEnumeration;
            astore 5 /* ne */
        start local 5 // javax.naming.NamingEnumeration ne
         9: .line 518
            aload 5 /* ne */
            invokeinterface javax.naming.NamingEnumeration.hasMore:()Z
            ifeq 68
        10: .line 519
            aload 5 /* ne */
            invokeinterface javax.naming.NamingEnumeration.next:()Ljava/lang/Object;
            checkcast javax.naming.directory.SearchResult
            astore 6 /* result */
        start local 6 // javax.naming.directory.SearchResult result
        11: .line 520
            aload 6 /* result */
            invokevirtual javax.naming.directory.SearchResult.getAttributes:()Ljavax/naming/directory/Attributes;
            astore 7 /* attributes */
        start local 7 // javax.naming.directory.Attributes attributes
        12: .line 539
            aload 7 /* attributes */
            ldc "userPassword"
            invokeinterface javax.naming.directory.Attributes.get:(Ljava/lang/String;)Ljavax/naming/directory/Attribute;
            astore 8 /* pwd */
        start local 8 // javax.naming.directory.Attribute pwd
        13: .line 540
            new java.lang.String
            dup
            aload 8 /* pwd */
            invokeinterface javax.naming.directory.Attribute.get:()Ljava/lang/Object;
            checkcast byte[]
            ldc "UTF8"
            invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
            astore 9 /* encryptedPwd */
        start local 9 // java.lang.String encryptedPwd
        14: .line 541
            aload 9 /* encryptedPwd */
            ldc "{crypt}"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 2 /* encryptedPassword */
        15: .line 544
            aload 0 /* this */
        16: .line 545
            aload 2 /* encryptedPassword */
            new java.lang.String
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            invokespecial java.lang.String.<init>:([C)V
        17: .line 544
            invokevirtual com.sun.security.auth.module.JndiLoginModule.verifyPassword:(Ljava/lang/String;Ljava/lang/String;)Z
        18: .line 545
            ifeq 22
        19: .line 548
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 25
        20: .line 549
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] attemptAuthentication() succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 552
            goto 25
        22: .line 554
      StackMap locals: com.sun.security.auth.module.JndiLoginModule int java.lang.String javax.naming.InitialContext javax.naming.directory.SearchControls javax.naming.NamingEnumeration javax.naming.directory.SearchResult javax.naming.directory.Attributes javax.naming.directory.Attribute java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 24
        23: .line 555
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] attemptAuthentication() failed"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 557
      StackMap locals:
      StackMap stack:
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Login incorrect"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 562
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.storePass:Z
            ifeq 30
        26: .line 563
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 30
        27: .line 564
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 30
        28: .line 565
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        29: .line 566
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        30: .line 570
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.security.auth.UnixPrincipal
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokespecial com.sun.security.auth.UnixPrincipal.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.JndiLoginModule.userPrincipal:Lcom/sun/security/auth/UnixPrincipal;
        31: .line 573
            aload 7 /* attributes */
            ldc "uidNumber"
            invokeinterface javax.naming.directory.Attributes.get:(Ljava/lang/String;)Ljavax/naming/directory/Attribute;
            astore 10 /* uid */
        start local 10 // javax.naming.directory.Attribute uid
        32: .line 574
            aload 10 /* uid */
            invokeinterface javax.naming.directory.Attribute.get:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 11 /* uidNumber */
        start local 11 // java.lang.String uidNumber
        33: .line 575
            aload 0 /* this */
            new com.sun.security.auth.UnixNumericUserPrincipal
            dup
            aload 11 /* uidNumber */
            invokespecial com.sun.security.auth.UnixNumericUserPrincipal.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.JndiLoginModule.UIDPrincipal:Lcom/sun/security/auth/UnixNumericUserPrincipal;
        34: .line 576
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 39
            aload 11 /* uidNumber */
            ifnull 39
        35: .line 577
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] user: '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        36: .line 578
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' has UID: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        37: .line 579
            aload 11 /* uidNumber */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        38: .line 577
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 583
      StackMap locals: javax.naming.directory.Attribute java.lang.String
      StackMap stack:
            aload 7 /* attributes */
            ldc "gidNumber"
            invokeinterface javax.naming.directory.Attributes.get:(Ljava/lang/String;)Ljavax/naming/directory/Attribute;
            astore 12 /* gid */
        start local 12 // javax.naming.directory.Attribute gid
        40: .line 584
            aload 12 /* gid */
            invokeinterface javax.naming.directory.Attribute.get:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 13 /* gidNumber */
        start local 13 // java.lang.String gidNumber
        41: .line 585
            aload 0 /* this */
            new com.sun.security.auth.UnixNumericGroupPrincipal
            dup
        42: .line 586
            aload 13 /* gidNumber */
            iconst_1
            invokespecial com.sun.security.auth.UnixNumericGroupPrincipal.<init>:(Ljava/lang/String;Z)V
        43: .line 585
            putfield com.sun.security.auth.module.JndiLoginModule.GIDPrincipal:Lcom/sun/security/auth/UnixNumericGroupPrincipal;
        44: .line 587
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 49
            aload 13 /* gidNumber */
            ifnull 49
        45: .line 588
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] user: '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        46: .line 589
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' has GID: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        47: .line 590
            aload 13 /* gidNumber */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        48: .line 588
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        49: .line 594
      StackMap locals: javax.naming.directory.Attribute java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* iCtx */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.groupProvider:Ljava/lang/String;
            invokevirtual javax.naming.InitialContext.lookup:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast javax.naming.directory.DirContext
            putfield com.sun.security.auth.module.JndiLoginModule.ctx:Ljavax/naming/directory/DirContext;
        50: .line 595
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.ctx:Ljavax/naming/directory/DirContext;
            ldc ""
            new javax.naming.directory.BasicAttributes
            dup
            ldc "memberUid"
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokespecial javax.naming.directory.BasicAttributes.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            invokeinterface javax.naming.directory.DirContext.search:(Ljava/lang/String;Ljavax/naming/directory/Attributes;)Ljavax/naming/NamingEnumeration;
            astore 5 /* ne */
        51: .line 597
            goto 66
        52: .line 598
      StackMap locals:
      StackMap stack:
            aload 5 /* ne */
            invokeinterface javax.naming.NamingEnumeration.next:()Ljava/lang/Object;
            checkcast javax.naming.directory.SearchResult
            astore 6 /* result */
        53: .line 599
            aload 6 /* result */
            invokevirtual javax.naming.directory.SearchResult.getAttributes:()Ljavax/naming/directory/Attributes;
            astore 7 /* attributes */
        54: .line 601
            aload 7 /* attributes */
            ldc "gidNumber"
            invokeinterface javax.naming.directory.Attributes.get:(Ljava/lang/String;)Ljavax/naming/directory/Attribute;
            astore 12 /* gid */
        55: .line 602
            aload 12 /* gid */
            invokeinterface javax.naming.directory.Attribute.get:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 14 /* suppGid */
        start local 14 // java.lang.String suppGid
        56: .line 603
            aload 13 /* gidNumber */
            aload 14 /* suppGid */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 66
        57: .line 605
            new com.sun.security.auth.UnixNumericGroupPrincipal
            dup
            aload 14 /* suppGid */
            iconst_0
            invokespecial com.sun.security.auth.UnixNumericGroupPrincipal.<init>:(Ljava/lang/String;Z)V
        58: .line 604
            astore 15 /* suppPrincipal */
        start local 15 // com.sun.security.auth.UnixNumericGroupPrincipal suppPrincipal
        59: .line 606
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.supplementaryGroups:Ljava/util/LinkedList;
            aload 15 /* suppPrincipal */
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        60: .line 607
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 66
            aload 14 /* suppGid */
            ifnull 66
        61: .line 608
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] user: '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        62: .line 609
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        63: .line 610
            ldc "' has Supplementary Group: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        64: .line 611
            aload 14 /* suppGid */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        65: .line 608
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 15 // com.sun.security.auth.UnixNumericGroupPrincipal suppPrincipal
        end local 14 // java.lang.String suppGid
        66: .line 597
      StackMap locals:
      StackMap stack:
            aload 5 /* ne */
            invokeinterface javax.naming.NamingEnumeration.hasMore:()Z
            ifne 52
        end local 13 // java.lang.String gidNumber
        end local 12 // javax.naming.directory.Attribute gid
        end local 11 // java.lang.String uidNumber
        end local 10 // javax.naming.directory.Attribute uid
        end local 9 // java.lang.String encryptedPwd
        end local 8 // javax.naming.directory.Attribute pwd
        end local 7 // javax.naming.directory.Attributes attributes
        end local 6 // javax.naming.directory.SearchResult result
        67: .line 616
            goto 81
        68: .line 618
      StackMap locals: com.sun.security.auth.module.JndiLoginModule int java.lang.String javax.naming.InitialContext javax.naming.directory.SearchControls javax.naming.NamingEnumeration
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 70
        69: .line 619
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule]: User not found"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        70: .line 621
      StackMap locals:
      StackMap stack:
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "User not found"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // javax.naming.NamingEnumeration ne
        end local 4 // javax.naming.directory.SearchControls controls
        end local 3 // javax.naming.InitialContext iCtx
        71: .line 623
      StackMap locals: com.sun.security.auth.module.JndiLoginModule int java.lang.String
      StackMap stack: javax.naming.NamingException
            astore 3 /* ne */
        start local 3 // javax.naming.NamingException ne
        72: .line 625
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 75
        73: .line 626
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule]:  User not found"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        74: .line 627
            aload 3 /* ne */
            invokevirtual javax.naming.NamingException.printStackTrace:()V
        75: .line 629
      StackMap locals: javax.naming.NamingException
      StackMap stack:
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "User not found"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.naming.NamingException ne
        76: .line 630
      StackMap locals: com.sun.security.auth.module.JndiLoginModule int java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
            astore 3 /* uee */
        start local 3 // java.io.UnsupportedEncodingException uee
        77: .line 632
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.debug:Z
            ifeq 80
        78: .line 633
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule]:  password incorrectly encoded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        79: .line 635
            aload 3 /* uee */
            invokevirtual java.io.UnsupportedEncodingException.printStackTrace:()V
        80: .line 637
      StackMap locals: java.io.UnsupportedEncodingException
      StackMap stack:
            new javax.security.auth.login.LoginException
            dup
            ldc "Login failure due to incorrect password encoding in the password database"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.io.UnsupportedEncodingException uee
        81: .line 642
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String encryptedPassword
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   82     0                      this  Lcom/sun/security/auth/module/JndiLoginModule;
            0   82     1  getPasswdFromSharedState  Z
            1   82     2         encryptedPassword  Ljava/lang/String;
            3   71     3                      iCtx  Ljavax/naming/InitialContext;
            5   71     4                  controls  Ljavax/naming/directory/SearchControls;
            9   71     5                        ne  Ljavax/naming/NamingEnumeration<Ljavax/naming/directory/SearchResult;>;
           11   67     6                    result  Ljavax/naming/directory/SearchResult;
           12   67     7                attributes  Ljavax/naming/directory/Attributes;
           13   67     8                       pwd  Ljavax/naming/directory/Attribute;
           14   67     9              encryptedPwd  Ljava/lang/String;
           32   67    10                       uid  Ljavax/naming/directory/Attribute;
           33   67    11                 uidNumber  Ljava/lang/String;
           40   67    12                       gid  Ljavax/naming/directory/Attribute;
           41   67    13                 gidNumber  Ljava/lang/String;
           56   66    14                   suppGid  Ljava/lang/String;
           59   66    15             suppPrincipal  Lcom/sun/security/auth/UnixNumericGroupPrincipal;
           72   76     3                        ne  Ljavax/naming/NamingException;
           77   81     3                       uee  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           2    71      71  Class javax.naming.NamingException
           2    71      76  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private void getUsernamePassword(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 659
            iload 1 /* getPasswdFromSharedState */
            ifeq 4
         1: .line 661
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
         2: .line 662
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast char[]
            putfield com.sun.security.auth.module.JndiLoginModule.password:[C
         3: .line 663
            return
         4: .line 667
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            ifnonnull 6
         5: .line 668
            new javax.security.auth.login.LoginException
            dup
            ldc "Error: no CallbackHandler available to garner authentication information from the user"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 671
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userProvider:Ljava/lang/String;
            iconst_0
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.userProvider:Ljava/lang/String;
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* protocol */
        start local 2 // java.lang.String protocol
         7: .line 673
            iconst_2
            anewarray javax.security.auth.callback.Callback
            astore 3 /* callbacks */
        start local 3 // javax.security.auth.callback.Callback[] callbacks
         8: .line 674
            aload 3 /* callbacks */
            iconst_0
            new javax.security.auth.callback.NameCallback
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* protocol */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 675
            ldc "username."
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;)V
        10: .line 674
            aastore
        11: .line 676
            aload 3 /* callbacks */
            iconst_1
            new javax.security.auth.callback.PasswordCallback
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* protocol */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 677
            ldc "password."
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 678
            iconst_0
            invokespecial javax.security.auth.callback.PasswordCallback.<init>:(Ljava/lang/String;Z)V
        14: .line 676
            aastore
        15: .line 681
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            aload 3 /* callbacks */
            invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
        16: .line 682
            aload 0 /* this */
            aload 3 /* callbacks */
            iconst_0
            aaload
            checkcast javax.security.auth.callback.NameCallback
            invokevirtual javax.security.auth.callback.NameCallback.getName:()Ljava/lang/String;
            putfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
        17: .line 683
            aload 3 /* callbacks */
            iconst_1
            aaload
            checkcast javax.security.auth.callback.PasswordCallback
            invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
            astore 4 /* tmpPassword */
        start local 4 // char[] tmpPassword
        18: .line 684
            aload 0 /* this */
            aload 4 /* tmpPassword */
            arraylength
            newarray 5
            putfield com.sun.security.auth.module.JndiLoginModule.password:[C
        19: .line 685
            aload 4 /* tmpPassword */
            iconst_0
        20: .line 686
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            iconst_0
            aload 4 /* tmpPassword */
            arraylength
        21: .line 685
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 687
            aload 3 /* callbacks */
            iconst_1
            aaload
            checkcast javax.security.auth.callback.PasswordCallback
            invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
        end local 4 // char[] tmpPassword
        23: .line 689
            goto 31
      StackMap locals: com.sun.security.auth.module.JndiLoginModule int java.lang.String javax.security.auth.callback.Callback[]
      StackMap stack: java.io.IOException
        24: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        25: .line 690
            new javax.security.auth.login.LoginException
            dup
            aload 4 /* ioe */
            invokevirtual java.io.IOException.toString:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.io.IOException ioe
        26: .line 691
      StackMap locals:
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
            astore 4 /* uce */
        start local 4 // javax.security.auth.callback.UnsupportedCallbackException uce
        27: .line 692
            new javax.security.auth.login.LoginException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Error: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* uce */
            invokevirtual javax.security.auth.callback.UnsupportedCallbackException.getCallback:()Ljavax/security/auth/callback/Callback;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        28: .line 693
            ldc " not available to garner authentication information "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        29: .line 694
            ldc "from the user"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        30: .line 692
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // javax.security.auth.callback.UnsupportedCallbackException uce
        31: .line 698
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.strongDebug:Z
            ifeq 42
        32: .line 699
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[JndiLoginModule] user entered username: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        33: .line 701
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        34: .line 699
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 702
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[JndiLoginModule] user entered password: "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        36: .line 704
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        37: goto 40
        38: .line 705
      StackMap locals: int
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            iload 4 /* i */
            caload
            invokevirtual java.io.PrintStream.print:(C)V
        39: .line 704
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        40: iload 4 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            arraylength
            if_icmplt 38
        end local 4 // int i
        41: .line 706
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        42: .line 708
      StackMap locals:
      StackMap stack:
            return
        end local 3 // javax.security.auth.callback.Callback[] callbacks
        end local 2 // java.lang.String protocol
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   43     0                      this  Lcom/sun/security/auth/module/JndiLoginModule;
            0   43     1  getPasswdFromSharedState  Z
            7   43     2                  protocol  Ljava/lang/String;
            8   43     3                 callbacks  [Ljavax/security/auth/callback/Callback;
           18   23     4               tmpPassword  [C
           25   26     4                       ioe  Ljava/io/IOException;
           27   31     4                       uce  Ljavax/security/auth/callback/UnsupportedCallbackException;
           37   41     4                         i  I
      Exception table:
        from    to  target  type
          15    23      24  Class java.io.IOException
          15    23      26  Class javax.security.auth.callback.UnsupportedCallbackException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private boolean verifyPassword(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
        start local 1 // java.lang.String encryptedPassword
        start local 2 // java.lang.String password
         0: .line 715
            aload 1 /* encryptedPassword */
            ifnonnull 2
         1: .line 716
            iconst_0
            ireturn
         2: .line 718
      StackMap locals:
      StackMap stack:
            new com.sun.security.auth.module.Crypt
            dup
            invokespecial com.sun.security.auth.module.Crypt.<init>:()V
            astore 3 /* c */
        start local 3 // com.sun.security.auth.module.Crypt c
         3: .line 720
            aload 1 /* encryptedPassword */
            ldc "UTF8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            astore 4 /* oldCrypt */
        start local 4 // byte[] oldCrypt
         4: .line 721
            aload 3 /* c */
            aload 2 /* password */
            ldc "UTF8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
         5: .line 722
            aload 4 /* oldCrypt */
         6: .line 721
            invokevirtual com.sun.security.auth.module.Crypt.crypt:([B[B)[B
            astore 5 /* newCrypt */
        start local 5 // byte[] newCrypt
         7: .line 723
            aload 5 /* newCrypt */
            arraylength
            aload 4 /* oldCrypt */
            arraylength
            if_icmpeq 9
         8: .line 724
            iconst_0
            ireturn
         9: .line 725
      StackMap locals: com.sun.security.auth.module.Crypt byte[] byte[]
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        10: goto 14
        11: .line 726
      StackMap locals: int
      StackMap stack:
            aload 4 /* oldCrypt */
            iload 6 /* i */
            baload
            aload 5 /* newCrypt */
            iload 6 /* i */
            baload
            if_icmpeq 13
        12: .line 727
            iconst_0
            ireturn
        13: .line 725
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            aload 5 /* newCrypt */
            arraylength
            if_icmplt 11
        end local 6 // int i
        end local 5 // byte[] newCrypt
        end local 4 // byte[] oldCrypt
        15: .line 729
            goto 18
      StackMap locals: com.sun.security.auth.module.JndiLoginModule java.lang.String java.lang.String com.sun.security.auth.module.Crypt
      StackMap stack: java.io.UnsupportedEncodingException
        16: pop
        17: .line 731
            iconst_0
            ireturn
        18: .line 733
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // com.sun.security.auth.module.Crypt c
        end local 2 // java.lang.String password
        end local 1 // java.lang.String encryptedPassword
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   19     0               this  Lcom/sun/security/auth/module/JndiLoginModule;
            0   19     1  encryptedPassword  Ljava/lang/String;
            0   19     2           password  Ljava/lang/String;
            3   19     3                  c  Lcom/sun/security/auth/module/Crypt;
            4   15     4           oldCrypt  [B
            7   15     5           newCrypt  [B
           10   15     6                  i  I
      Exception table:
        from    to  target  type
           3     8      16  Class java.io.UnsupportedEncodingException
           9    12      16  Class java.io.UnsupportedEncodingException
          13    15      16  Class java.io.UnsupportedEncodingException
    MethodParameters:
                   Name  Flags
      encryptedPassword  
      password           

  private void cleanState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.JndiLoginModule this
         0: .line 740
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.username:Ljava/lang/String;
         1: .line 741
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            ifnull 8
         2: .line 742
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         3: goto 6
         4: .line 743
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            iload 1 /* i */
            bipush 32
            castore
         5: .line 742
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 1 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.password:[C
            arraylength
            if_icmplt 4
        end local 1 // int i
         7: .line 744
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.password:[C
         8: .line 746
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.JndiLoginModule.ctx:Ljavax/naming/directory/DirContext;
         9: .line 748
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.clearPass:Z
            ifeq 12
        10: .line 749
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 750
            aload 0 /* this */
            getfield com.sun.security.auth.module.JndiLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 752
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.security.auth.module.JndiLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/sun/security/auth/module/JndiLoginModule;
            3    7     1     i  I
}
SourceFile: "JndiLoginModule.java"