public class sun.security.krb5.internal.tools.Ktab
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.krb5.internal.tools.Ktab
  super_class: java.lang.Object
{
  sun.security.krb5.internal.ktab.KeyTab table;
    descriptor: Lsun/security/krb5/internal/ktab/KeyTab;
    flags: (0x0000) 

  char action;
    descriptor: C
    flags: (0x0000) 

  java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String principal;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  boolean showEType;
    descriptor: Z
    flags: (0x0000) 

  boolean showTime;
    descriptor: Z
    flags: (0x0000) 

  int etype;
    descriptor: I
    flags: (0x0000) 

  char[] password;
    descriptor: [C
    flags: (0x0000) 

  boolean forced;
    descriptor: Z
    flags: (0x0000) 

  boolean append;
    descriptor: Z
    flags: (0x0000) 

  int vDel;
    descriptor: I
    flags: (0x0000) 

  int vAdd;
    descriptor: I
    flags: (0x0000) 

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.krb5.internal.tools.Ktab this
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            iconst_m1
            putfield sun.security.krb5.internal.tools.Ktab.etype:I
         2: .line 62
            aload 0 /* this */
            aconst_null
            putfield sun.security.krb5.internal.tools.Ktab.password:[C
         3: .line 64
            aload 0 /* this */
            iconst_0
            putfield sun.security.krb5.internal.tools.Ktab.forced:Z
         4: .line 65
            aload 0 /* this */
            iconst_0
            putfield sun.security.krb5.internal.tools.Ktab.append:Z
         5: .line 66
            aload 0 /* this */
            iconst_m1
            putfield sun.security.krb5.internal.tools.Ktab.vDel:I
         6: .line 67
            aload 0 /* this */
            iconst_m1
            putfield sun.security.krb5.internal.tools.Ktab.vAdd:I
         7: .line 53
            return
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lsun/security/krb5/internal/tools/Ktab;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 74
            new sun.security.krb5.internal.tools.Ktab
            dup
            invokespecial sun.security.krb5.internal.tools.Ktab.<init>:()V
            astore 1 /* ktab */
        start local 1 // sun.security.krb5.internal.tools.Ktab ktab
         1: .line 75
            aload 0 /* args */
            arraylength
            iconst_1
            if_icmpne 9
         2: .line 76
            aload 0 /* args */
            iconst_0
            aaload
            ldc "-?"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 6
         3: .line 77
            aload 0 /* args */
            iconst_0
            aaload
            ldc "-h"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 6
         4: .line 78
            aload 0 /* args */
            iconst_0
            aaload
            ldc "--help"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 6
         5: .line 80
            aload 0 /* args */
            iconst_0
            aaload
            ldc "-help"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 9
         6: .line 81
      StackMap locals: sun.security.krb5.internal.tools.Ktab
      StackMap stack:
            aload 1 /* ktab */
            invokevirtual sun.security.krb5.internal.tools.Ktab.printHelp:()V
         7: .line 82
            iconst_0
            invokestatic java.lang.System.exit:(I)V
         8: .line 83
            return
         9: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            ifnull 10
            aload 0 /* args */
            arraylength
            ifne 12
        10: .line 85
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            bipush 108
            putfield sun.security.krb5.internal.tools.Ktab.action:C
        11: .line 86
            goto 13
        12: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            aload 0 /* args */
            invokevirtual sun.security.krb5.internal.tools.Ktab.processArgs:([Ljava/lang/String;)V
        13: .line 89
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
            invokestatic sun.security.krb5.internal.ktab.KeyTab.getInstance:(Ljava/lang/String;)Lsun/security/krb5/internal/ktab/KeyTab;
            putfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
        14: .line 90
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.isMissing:()Z
            ifeq 22
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            bipush 97
            if_icmpeq 22
        15: .line 91
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
            ifnonnull 18
        16: .line 92
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "No default key table exists."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        17: .line 93
            goto 21
        18: .line 94
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Key table "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 95
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " does not exist."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 94
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 97
      StackMap locals:
      StackMap stack:
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        22: .line 99
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.isValid:()Z
            ifne 30
        23: .line 100
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
            ifnonnull 26
        24: .line 101
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "The format of the default key table  is incorrect."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        25: .line 103
            goto 29
        26: .line 104
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "The format of key table "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        27: .line 105
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is incorrect."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        28: .line 104
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 107
      StackMap locals:
      StackMap stack:
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        30: .line 109
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            lookupswitch { // 3
                   97: 33
                  100: 35
                  108: 31
              default: 37
          }
        31: .line 111
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            invokevirtual sun.security.krb5.internal.tools.Ktab.listKt:()V
        32: .line 112
            goto 38
        33: .line 114
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            invokevirtual sun.security.krb5.internal.tools.Ktab.addEntry:()V
        34: .line 115
            goto 38
        35: .line 117
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            invokevirtual sun.security.krb5.internal.tools.Ktab.deleteEntry:()V
        36: .line 118
            goto 38
        37: .line 120
      StackMap locals:
      StackMap stack:
            aload 1 /* ktab */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "A command must be provided"
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        38: .line 122
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.security.krb5.internal.tools.Ktab ktab
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   39     0  args  [Ljava/lang/String;
            1   39     1  ktab  Lsun/security/krb5/internal/tools/Ktab;
    MethodParameters:
      Name  Flags
      args  

  void processArgs(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=6, args_size=2
        start local 0 // sun.security.krb5.internal.tools.Ktab this
        start local 1 // java.lang.String[] args
         0: .line 145
            iconst_0
            istore 2 /* argAlreadyAppeared */
        start local 2 // boolean argAlreadyAppeared
         1: .line 146
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 84
         3: .line 147
      StackMap locals: int int
      StackMap stack:
            aload 1 /* args */
            iload 3 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 64
         4: .line 148
            aload 1 /* args */
            iload 3 /* i */
            aaload
            getstatic java.util.Locale.US:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            dup
            astore 4
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 9
           -128108153: 5
                 1492: 6
                 1495: 7
                 1496: 8
                 1497: 9
                 1502: 10
                 1503: 11
                 1505: 12
                 1511: 13
              default: 62
          }
      StackMap locals: java.lang.String
      StackMap stack:
         5: aload 4
            ldc "-append"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 60
            goto 62
      StackMap locals:
      StackMap stack:
         6: aload 4
            ldc "-a"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
            goto 62
      StackMap locals:
      StackMap stack:
         7: aload 4
            ldc "-d"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 21
            goto 62
      StackMap locals:
      StackMap stack:
         8: aload 4
            ldc "-e"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 26
            goto 62
      StackMap locals:
      StackMap stack:
         9: aload 4
            ldc "-f"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 58
            goto 62
      StackMap locals:
      StackMap stack:
        10: aload 4
            ldc "-k"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 48
            goto 62
      StackMap locals:
      StackMap stack:
        11: aload 4
            ldc "-l"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 14
            goto 62
      StackMap locals:
      StackMap stack:
        12: aload 4
            ldc "-n"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 40
            goto 62
      StackMap locals:
      StackMap stack:
        13: aload 4
            ldc "-t"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 56
            goto 62
        14: .line 152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 108
            putfield sun.security.krb5.internal.tools.Ktab.action:C
        15: .line 153
            goto 83
        16: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 97
            putfield sun.security.krb5.internal.tools.Ktab.action:C
        17: .line 156
            iinc 3 /* i */ 1
            iload 3 /* i */
            aload 1 /* args */
            arraylength
            if_icmpge 18
            aload 1 /* args */
            iload 3 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 19
        18: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "A principal name must be specified after -a"
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        19: .line 159
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            putfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
        20: .line 160
            goto 83
        21: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 100
            putfield sun.security.krb5.internal.tools.Ktab.action:C
        22: .line 163
            iinc 3 /* i */ 1
            iload 3 /* i */
            aload 1 /* args */
            arraylength
            if_icmpge 23
            aload 1 /* args */
            iload 3 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 24
        23: .line 164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "A principal name must be specified after -d"
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        24: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            putfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
        25: .line 167
            goto 83
        26: .line 171
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            bipush 108
            if_icmpne 29
        27: .line 172
            aload 0 /* this */
            iconst_1
            putfield sun.security.krb5.internal.tools.Ktab.showEType:Z
        28: .line 173
            goto 83
      StackMap locals:
      StackMap stack:
        29: aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            bipush 100
            if_icmpne 38
        30: .line 174
            iinc 3 /* i */ 1
            iload 3 /* i */
            aload 1 /* args */
            arraylength
            if_icmpge 31
            aload 1 /* args */
            iload 3 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 32
        31: .line 175
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "An etype must be specified after -e"
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        32: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putfield sun.security.krb5.internal.tools.Ktab.etype:I
        33: .line 179
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.etype:I
            ifgt 83
        34: .line 180
            new java.lang.NumberFormatException
            dup
            invokespecial java.lang.NumberFormatException.<init>:()V
            athrow
        35: .line 182
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
        36: .line 183
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a valid etype"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        37: .line 185
            goto 83
        38: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not valid after -"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        39: .line 188
            goto 83
        40: .line 190
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
            iload 3 /* i */
            aload 1 /* args */
            arraylength
            if_icmpge 41
            aload 1 /* args */
            iload 3 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 42
        41: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "A KVNO must be specified after -n"
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        42: .line 194
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putfield sun.security.krb5.internal.tools.Ktab.vAdd:I
        43: .line 195
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vAdd:I
            ifge 83
        44: .line 196
            new java.lang.NumberFormatException
            dup
            invokespecial java.lang.NumberFormatException.<init>:()V
            athrow
        45: .line 198
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
        46: .line 199
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a valid KVNO"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        47: .line 201
            goto 83
        48: .line 203
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
            iload 3 /* i */
            aload 1 /* args */
            arraylength
            if_icmpge 49
            aload 1 /* args */
            iload 3 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 50
        49: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "A keytab name must be specified after -k"
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        50: .line 206
      StackMap locals:
      StackMap stack:
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.String.length:()I
            iconst_5
            if_icmplt 54
        51: .line 207
            aload 1 /* args */
            iload 3 /* i */
            aaload
            iconst_0
            iconst_5
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            ldc "FILE:"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 54
        52: .line 208
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            iconst_5
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            putfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
        53: .line 209
            goto 83
        54: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            putfield sun.security.krb5.internal.tools.Ktab.name:Ljava/lang/String;
        55: .line 212
            goto 83
        56: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.security.krb5.internal.tools.Ktab.showTime:Z
        57: .line 215
            goto 83
        58: .line 217
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.security.krb5.internal.tools.Ktab.forced:Z
        59: .line 218
            goto 83
        60: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.security.krb5.internal.tools.Ktab.append:Z
        61: .line 221
            goto 83
        62: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            ldc "Unknown command: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        63: .line 226
            goto 83
        64: .line 227
      StackMap locals:
      StackMap stack:
            iload 2 /* argAlreadyAppeared */
            ifeq 66
        65: .line 228
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            ldc "Useless extra argument "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        66: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            bipush 97
            if_icmpne 69
        67: .line 231
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.String.toCharArray:()[C
            putfield sun.security.krb5.internal.tools.Ktab.password:[C
        68: .line 232
            goto 82
      StackMap locals:
      StackMap stack:
        69: aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.action:C
            bipush 100
            if_icmpne 81
        70: .line 233
            aload 1 /* args */
            iload 3 /* i */
            aaload
            dup
            astore 5
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
                96673: 71
               110119: 72
              default: 75
          }
      StackMap locals: sun.security.krb5.internal.tools.Ktab java.lang.String[] int int top java.lang.String
      StackMap stack:
        71: aload 5
            ldc "all"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 73
            goto 75
      StackMap locals:
      StackMap stack:
        72: aload 5
            ldc "old"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 74
            goto 75
        73: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_m1
            putfield sun.security.krb5.internal.tools.Ktab.vDel:I
            goto 82
        74: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush -2
            putfield sun.security.krb5.internal.tools.Ktab.vDel:I
            goto 82
        75: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putfield sun.security.krb5.internal.tools.Ktab.vDel:I
        76: .line 239
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vDel:I
            ifge 82
        77: .line 240
            new java.lang.NumberFormatException
            dup
            invokespecial java.lang.NumberFormatException.<init>:()V
            athrow
        78: .line 242
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
        79: .line 243
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a valid KVNO"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        80: .line 247
            goto 82
        81: .line 248
      StackMap locals: sun.security.krb5.internal.tools.Ktab java.lang.String[] int int
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            ldc "Useless extra argument "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokevirtual sun.security.krb5.internal.tools.Ktab.error:([Ljava/lang/String;)V
        82: .line 250
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* argAlreadyAppeared */
        83: .line 146
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        84: iload 3 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 3
        end local 3 // int i
        85: .line 253
            return
        end local 2 // boolean argAlreadyAppeared
        end local 1 // java.lang.String[] args
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   86     0                this  Lsun/security/krb5/internal/tools/Ktab;
            0   86     1                args  [Ljava/lang/String;
            1   86     2  argAlreadyAppeared  Z
            2   85     3                   i  I
      Exception table:
        from    to  target  type
          32    35      35  Class java.lang.NumberFormatException
          42    45      45  Class java.lang.NumberFormatException
          75    78      78  Class java.lang.NumberFormatException
    MethodParameters:
      Name  Flags
      args  

  void addEntry();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.security.krb5.internal.tools.Ktab this
         0: .line 261
            aconst_null
            astore 1 /* pname */
        start local 1 // sun.security.krb5.PrincipalName pname
         1: .line 263
            new sun.security.krb5.PrincipalName
            dup
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
            invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;)V
            astore 1 /* pname */
         2: .line 264
            goto 9
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName
      StackMap stack: sun.security.krb5.KrbException
         3: astore 2 /* e */
        start local 2 // sun.security.krb5.KrbException e
         4: .line 265
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Failed to add "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 266
            ldc " to keytab."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 265
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 267
            aload 2 /* e */
            invokevirtual sun.security.krb5.KrbException.printStackTrace:()V
         8: .line 268
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // sun.security.krb5.KrbException e
         9: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.password:[C
            ifnonnull 20
        10: .line 273
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            getstatic java.lang.System.in:Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
        11: .line 272
            astore 2 /* cis */
        start local 2 // java.io.BufferedReader cis
        12: .line 274
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Password for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* pname */
            invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        13: .line 275
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.flush:()V
        14: .line 276
            aload 0 /* this */
            aload 2 /* cis */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
            putfield sun.security.krb5.internal.tools.Ktab.password:[C
        end local 2 // java.io.BufferedReader cis
        15: .line 277
            goto 20
      StackMap locals:
      StackMap stack: java.io.IOException
        16: astore 2 /* e */
        start local 2 // java.io.IOException e
        17: .line 278
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Failed to read the password."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 279
            aload 2 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        19: .line 280
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // java.io.IOException e
        20: .line 286
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            aload 1 /* pname */
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.password:[C
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vAdd:I
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.append:Z
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.addEntry:(Lsun/security/krb5/PrincipalName;[CIZ)V
        21: .line 287
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.password:[C
            bipush 48
            invokestatic java.util.Arrays.fill:([CC)V
        22: .line 289
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.save:()V
        23: .line 290
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Done!"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 291
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Service key for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: .line 292
            ldc " is saved in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.tabName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 291
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        27: .line 294
            goto 37
      StackMap locals:
      StackMap stack: sun.security.krb5.KrbException
        28: astore 2 /* e */
        start local 2 // sun.security.krb5.KrbException e
        29: .line 295
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Failed to add "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " to keytab."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        30: .line 296
            aload 2 /* e */
            invokevirtual sun.security.krb5.KrbException.printStackTrace:()V
        31: .line 297
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // sun.security.krb5.KrbException e
        32: goto 37
        33: .line 298
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* e */
        start local 2 // java.io.IOException e
        34: .line 299
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Failed to save new entry."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 300
            aload 2 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        36: .line 301
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // java.io.IOException e
        37: .line 303
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.security.krb5.PrincipalName pname
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   38     0   this  Lsun/security/krb5/internal/tools/Ktab;
            1   38     1  pname  Lsun/security/krb5/PrincipalName;
            4    9     2      e  Lsun/security/krb5/KrbException;
           12   15     2    cis  Ljava/io/BufferedReader;
           17   20     2      e  Ljava/io/IOException;
           29   32     2      e  Lsun/security/krb5/KrbException;
           34   37     2      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class sun.security.krb5.KrbException
          10    15      16  Class java.io.IOException
          20    27      28  Class sun.security.krb5.KrbException
          20    27      33  Class java.io.IOException

  void listKt();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=1
        start local 0 // sun.security.krb5.internal.tools.Ktab this
         0: .line 309
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Keytab name: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.tabName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 310
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.getEntries:()[Lsun/security/krb5/internal/ktab/KeyTabEntry;
            astore 1 /* entries */
        start local 1 // sun.security.krb5.internal.ktab.KeyTabEntry[] entries
         2: .line 311
            aload 1 /* entries */
            ifnull 70
            aload 1 /* entries */
            arraylength
            ifle 70
         3: .line 312
            aload 1 /* entries */
            arraylength
            iconst_1
            iadd
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.showTime:Z
            ifeq 4
            iconst_3
            goto 5
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.internal.ktab.KeyTabEntry[]
      StackMap stack: int
         4: iconst_2
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.internal.ktab.KeyTabEntry[]
      StackMap stack: int int
         5: multianewarray [[Ljava/lang/String; 2
            astore 2 /* output */
        start local 2 // java.lang.String[][] output
         6: .line 313
            iconst_0
            istore 3 /* column */
        start local 3 // int column
         7: .line 314
            aload 2 /* output */
            iconst_0
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
            ldc "KVNO"
            aastore
         8: .line 315
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.showTime:Z
            ifeq 9
            aload 2 /* output */
            iconst_0
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
            ldc "Timestamp"
            aastore
         9: .line 316
      StackMap locals: java.lang.String[][] int
      StackMap stack:
            aload 2 /* output */
            iconst_0
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
            ldc "Principal"
            aastore
        10: .line 317
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        11: goto 30
        12: .line 318
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* column */
        13: .line 319
            aload 2 /* output */
            iload 4 /* i */
            iconst_1
            iadd
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
            aload 1 /* entries */
            iload 4 /* i */
            aaload
            invokevirtual sun.security.krb5.internal.ktab.KeyTabEntry.getKey:()Lsun/security/krb5/EncryptionKey;
        14: .line 320
            invokevirtual sun.security.krb5.EncryptionKey.getKeyVersionNumber:()Ljava/lang/Integer;
            invokevirtual java.lang.Integer.toString:()Ljava/lang/String;
        15: .line 319
            aastore
        16: .line 321
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.showTime:Z
            ifeq 21
            aload 2 /* output */
            iload 4 /* i */
            iconst_1
            iadd
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
        17: .line 323
            iconst_3
            iconst_3
        18: .line 322
            invokestatic java.text.DateFormat.getDateTimeInstance:(II)Ljava/text/DateFormat;
        19: .line 324
            new java.util.Date
            dup
            aload 1 /* entries */
            iload 4 /* i */
            aaload
            invokevirtual sun.security.krb5.internal.ktab.KeyTabEntry.getTimeStamp:()Lsun/security/krb5/internal/KerberosTime;
            invokevirtual sun.security.krb5.internal.KerberosTime.getTime:()J
            invokespecial java.util.Date.<init>:(J)V
        20: .line 323
            invokevirtual java.text.DateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
            aastore
        21: .line 325
      StackMap locals:
      StackMap stack:
            aload 1 /* entries */
            iload 4 /* i */
            aaload
            invokevirtual sun.security.krb5.internal.ktab.KeyTabEntry.getService:()Lsun/security/krb5/PrincipalName;
            invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
            astore 5 /* princ */
        start local 5 // java.lang.String princ
        22: .line 326
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.showEType:Z
            ifeq 28
        23: .line 327
            aload 1 /* entries */
            iload 4 /* i */
            aaload
            invokevirtual sun.security.krb5.internal.ktab.KeyTabEntry.getKey:()Lsun/security/krb5/EncryptionKey;
            invokevirtual sun.security.krb5.EncryptionKey.getEType:()I
            istore 6 /* e */
        start local 6 // int e
        24: .line 328
            aload 2 /* output */
            iload 4 /* i */
            iconst_1
            iadd
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
            new java.lang.StringBuilder
            dup
            aload 5 /* princ */
            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;
            iload 6 /* e */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: .line 329
            iload 6 /* e */
            invokestatic sun.security.krb5.internal.crypto.EType.toString:(I)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;
        26: .line 328
            aastore
        end local 6 // int e
        27: .line 330
            goto 29
        28: .line 331
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* output */
            iload 4 /* i */
            iconst_1
            iadd
            aaload
            iload 3 /* column */
            iinc 3 /* column */ 1
            aload 5 /* princ */
            aastore
        end local 5 // java.lang.String princ
        29: .line 317
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        30: iload 4 /* i */
            aload 1 /* entries */
            arraylength
            if_icmplt 12
        end local 4 // int i
        31: .line 334
            iload 3 /* column */
            newarray 10
            astore 4 /* width */
        start local 4 // int[] width
        32: .line 335
            iconst_0
            istore 5 /* j */
        start local 5 // int j
        33: goto 42
        34: .line 336
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.internal.ktab.KeyTabEntry[] java.lang.String[][] int int[] int
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        35: goto 39
        36: .line 337
      StackMap locals: int
      StackMap stack:
            aload 2 /* output */
            iload 6 /* i */
            aaload
            iload 5 /* j */
            aaload
            invokevirtual java.lang.String.length:()I
            aload 4 /* width */
            iload 5 /* j */
            iaload
            if_icmple 38
        37: .line 338
            aload 4 /* width */
            iload 5 /* j */
            aload 2 /* output */
            iload 6 /* i */
            aaload
            iload 5 /* j */
            aaload
            invokevirtual java.lang.String.length:()I
            iastore
        38: .line 336
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        39: iload 6 /* i */
            aload 1 /* entries */
            arraylength
            if_icmple 36
        end local 6 // int i
        40: .line 341
            iload 5 /* j */
            ifeq 41
            aload 4 /* width */
            iload 5 /* j */
            aload 4 /* width */
            iload 5 /* j */
            iaload
            ineg
            iastore
        41: .line 335
      StackMap locals:
      StackMap stack:
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        42: iload 5 /* j */
            iload 3 /* column */
            if_icmplt 34
        end local 5 // int j
        43: .line 343
            iconst_0
            istore 5 /* j */
        start local 5 // int j
        44: goto 47
        45: .line 344
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "%"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* width */
            iload 5 /* j */
            iaload
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "s "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* output */
            iconst_0
            aaload
            iload 5 /* j */
            aaload
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        46: .line 343
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        47: iload 5 /* j */
            iload 3 /* column */
            if_icmplt 45
        end local 5 // int j
        48: .line 346
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        49: .line 347
            iconst_0
            istore 5 /* j */
        start local 5 // int j
        50: goto 57
        51: .line 348
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* k */
        start local 6 // int k
        52: goto 54
      StackMap locals: int
      StackMap stack:
        53: getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            iinc 6 /* k */ 1
      StackMap locals:
      StackMap stack:
        54: iload 6 /* k */
            aload 4 /* width */
            iload 5 /* j */
            iaload
            invokestatic java.lang.Math.abs:(I)I
            if_icmplt 53
        end local 6 // int k
        55: .line 349
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc " "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        56: .line 347
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        57: iload 5 /* j */
            iload 3 /* column */
            if_icmplt 51
        end local 5 // int j
        58: .line 351
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        59: .line 352
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        60: goto 68
        61: .line 353
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* j */
        start local 6 // int j
        62: goto 65
        63: .line 354
      StackMap locals: int
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "%"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* width */
            iload 6 /* j */
            iaload
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "s "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* output */
            iload 5 /* i */
            iconst_1
            iadd
            aaload
            iload 6 /* j */
            aaload
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        64: .line 353
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        65: iload 6 /* j */
            iload 3 /* column */
            if_icmplt 63
        end local 6 // int j
        66: .line 356
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        67: .line 352
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        68: iload 5 /* i */
            aload 1 /* entries */
            arraylength
            if_icmplt 61
        end local 5 // int i
        end local 4 // int[] width
        end local 3 // int column
        end local 2 // java.lang.String[][] output
        69: .line 358
            goto 71
        70: .line 359
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.internal.ktab.KeyTabEntry[]
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "0 entry."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        71: .line 361
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.security.krb5.internal.ktab.KeyTabEntry[] entries
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   72     0     this  Lsun/security/krb5/internal/tools/Ktab;
            2   72     1  entries  [Lsun/security/krb5/internal/ktab/KeyTabEntry;
            6   69     2   output  [[Ljava/lang/String;
            7   69     3   column  I
           11   31     4        i  I
           22   29     5    princ  Ljava/lang/String;
           24   27     6        e  I
           32   69     4    width  [I
           33   43     5        j  I
           35   40     6        i  I
           44   48     5        j  I
           50   58     5        j  I
           52   55     6        k  I
           60   69     5        i  I
           62   66     6        j  I

  void deleteEntry();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // sun.security.krb5.internal.tools.Ktab this
         0: .line 367
            aconst_null
            astore 1 /* pname */
        start local 1 // sun.security.krb5.PrincipalName pname
         1: .line 369
            new sun.security.krb5.PrincipalName
            dup
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.principal:Ljava/lang/String;
            invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;)V
            astore 1 /* pname */
         2: .line 370
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.forced:Z
            ifne 31
         3: .line 373
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            getstatic java.lang.System.in:Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
         4: .line 372
            astore 3 /* cis */
        start local 3 // java.io.BufferedReader cis
         5: .line 374
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Are you sure you want to delete service key(s) for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 375
            aload 1 /* pname */
            invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 376
            ldc " ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.etype:I
            iconst_m1
            if_icmpne 8
            ldc "all etypes"
            goto 9
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName top java.io.BufferedReader
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
         8: new java.lang.StringBuilder
            dup
            ldc "etype="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.etype:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName top java.io.BufferedReader
      StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
         9: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 377
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vDel:I
            iconst_m1
            if_icmpne 11
            ldc "all kvno"
            goto 13
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName top java.io.BufferedReader
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        11: aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vDel:I
            bipush -2
            if_icmpne 12
            ldc "old kvno"
            goto 13
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName top java.io.BufferedReader
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        12: new java.lang.StringBuilder
            dup
            ldc "kvno="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vDel:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName top java.io.BufferedReader
      StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
        13: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: .line 378
            ldc ") in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.tabName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "? (Y/[N]): "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        15: .line 374
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        16: .line 380
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.flush:()V
        17: .line 381
            aload 3 /* cis */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 2 /* answer */
        start local 2 // java.lang.String answer
        18: .line 382
            aload 2 /* answer */
            ldc "Y"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 31
        19: .line 383
            aload 2 /* answer */
            ldc "Yes"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 20
            goto 31
        20: .line 386
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName java.lang.String java.io.BufferedReader
      StackMap stack:
            iconst_0
            invokestatic java.lang.System.exit:(I)V
        end local 3 // java.io.BufferedReader cis
        end local 2 // java.lang.String answer
        21: .line 389
            goto 31
      StackMap locals: sun.security.krb5.internal.tools.Ktab sun.security.krb5.PrincipalName
      StackMap stack: sun.security.krb5.KrbException
        22: astore 2 /* e */
        start local 2 // sun.security.krb5.KrbException e
        23: .line 390
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error occurred while deleting the entry. Deletion failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 392
            aload 2 /* e */
            invokevirtual sun.security.krb5.KrbException.printStackTrace:()V
        25: .line 393
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // sun.security.krb5.KrbException e
        26: goto 31
        27: .line 394
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* e */
        start local 2 // java.io.IOException e
        28: .line 395
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error occurred while deleting the entry.  Deletion failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 397
            aload 2 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        30: .line 398
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // java.io.IOException e
        31: .line 401
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            aload 1 /* pname */
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.etype:I
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.vDel:I
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.deleteEntries:(Lsun/security/krb5/PrincipalName;II)I
            istore 2 /* count */
        start local 2 // int count
        32: .line 403
            iload 2 /* count */
            ifne 36
        33: .line 404
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "No matched entry in the keytab. Deletion fails."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        34: .line 406
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        35: .line 407
            goto 43
        36: .line 409
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.krb5.internal.tools.Ktab.table:Lsun/security/krb5/internal/ktab/KeyTab;
            invokevirtual sun.security.krb5.internal.ktab.KeyTab.save:()V
        37: .line 410
            goto 42
      StackMap locals:
      StackMap stack: java.io.IOException
        38: astore 3 /* e */
        start local 3 // java.io.IOException e
        39: .line 411
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error occurs while saving the keytab. Deletion fails."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        40: .line 413
            aload 3 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        41: .line 414
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 3 // java.io.IOException e
        42: .line 416
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Done! "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* count */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " entries removed."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 418
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int count
        end local 1 // sun.security.krb5.PrincipalName pname
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   44     0    this  Lsun/security/krb5/internal/tools/Ktab;
            1   44     1   pname  Lsun/security/krb5/PrincipalName;
           18   21     2  answer  Ljava/lang/String;
            5   21     3     cis  Ljava/io/BufferedReader;
           23   26     2       e  Lsun/security/krb5/KrbException;
           28   31     2       e  Ljava/io/IOException;
           32   44     2   count  I
           39   42     3       e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1    21      22  Class sun.security.krb5.KrbException
           1    21      27  Class java.io.IOException
          36    37      38  Class java.io.IOException

  void error(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0080) ACC_VARARGS
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // sun.security.krb5.internal.tools.Ktab this
        start local 1 // java.lang.String[] errors
         0: .line 421
            aload 1 /* errors */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 4
      StackMap locals: sun.security.krb5.internal.tools.Ktab java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* error */
        start local 2 // java.lang.String error
         2: .line 422
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Error: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* error */
            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;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 2 // java.lang.String error
         3: .line 421
            iinc 3 1
      StackMap locals:
      StackMap stack:
         4: iload 3
            iload 4
            if_icmplt 1
         5: .line 424
            aload 0 /* this */
            invokevirtual sun.security.krb5.internal.tools.Ktab.printHelp:()V
         6: .line 425
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
         7: .line 426
            return
        end local 1 // java.lang.String[] errors
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lsun/security/krb5/internal/tools/Ktab;
            0    8     1  errors  [Ljava/lang/String;
            2    3     2   error  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      errors  

  void printHelp();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.krb5.internal.tools.Ktab this
         0: .line 431
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\nUsage: ktab <commands> <options>"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 432
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
         2: .line 433
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Available commands:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 434
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
         4: .line 435
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-l [-e] [-t]\n    list the keytab name and entries. -e with etype, -t with timestamp."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 437
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-a <principal name> [<password>] [-n <kvno>] [-append]\n    add new key entries to the keytab for the given principal name with\n    optional <password>. If a <kvno> is specified, new keys' Key Version\n    Numbers equal to the value, otherwise, automatically incrementing\n    the Key Version Numbers. If -append is specified, new keys are\n    appended to the keytab, otherwise, old keys for the\n    same principal are removed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 444
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-d <principal name> [-f] [-e <etype>] [<kvno> | all | old]\n    delete key entries from the keytab for the specified principal. If\n    <kvno> is specified, delete keys whose Key Version Numbers match\n    kvno. If \"all\" is specified, delete all keys. If \"old\" is specified,\n    delete all keys except those with the highest kvno. Default action\n    is \"all\". If <etype> is specified, only keys of this encryption type\n    are deleted. <etype> should be specified as the numberic value etype\n    defined in RFC 3961, section 8. A prompt to confirm the deletion is\n    displayed unless -f is specified."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 453
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
         8: .line 454
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Common option(s):"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 455
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        10: .line 456
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-k <keytab name>\n    specify keytab name and path with prefix FILE:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 458
            return
        end local 0 // sun.security.krb5.internal.tools.Ktab this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/security/krb5/internal/tools/Ktab;
}
SourceFile: "Ktab.java"