public class org.bouncycastle.util.encoders.HexEncoder implements org.bouncycastle.util.encoders.Encoder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.util.encoders.HexEncoder
  super_class: java.lang.Object
{
  protected final byte[] encodingTable;
    descriptor: [B
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final byte[] decodingTable;
    descriptor: [B
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected void initialiseDecodingTable();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.bouncycastle.util.encoders.HexEncoder this
         0: .line 25
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 4
         2: .line 27
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            iload 1 /* i */
            iconst_m1
            bastore
         3: .line 25
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 1 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            arraylength
            if_icmplt 2
        end local 1 // int i
         5: .line 30
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         6: goto 9
         7: .line 32
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.encodingTable:[B
            iload 1 /* i */
            baload
            iload 1 /* i */
            i2b
            bastore
         8: .line 30
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 1 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.encodingTable:[B
            arraylength
            if_icmplt 7
        end local 1 // int i
        10: .line 35
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 65
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 97
            baload
            bastore
        11: .line 36
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 66
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 98
            baload
            bastore
        12: .line 37
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 67
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 99
            baload
            bastore
        13: .line 38
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 68
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 100
            baload
            bastore
        14: .line 39
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 69
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 101
            baload
            bastore
        15: .line 40
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 70
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            bipush 102
            baload
            bastore
        16: .line 41
            return
        end local 0 // org.bouncycastle.util.encoders.HexEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/bouncycastle/util/encoders/HexEncoder;
            1    5     1     i  I
            6   10     1     i  I

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.bouncycastle.util.encoders.HexEncoder this
         0: .line 43
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 12
            aload 0 /* this */
         2: .line 13
            bipush 16
            newarray 8
            dup
            iconst_0
         3: .line 14
            bipush 48
            bastore
            dup
            iconst_1
            bipush 49
            bastore
            dup
            iconst_2
            bipush 50
            bastore
            dup
            iconst_3
            bipush 51
            bastore
            dup
            iconst_4
            bipush 52
            bastore
            dup
            iconst_5
            bipush 53
            bastore
            dup
            bipush 6
            bipush 54
            bastore
            dup
            bipush 7
            bipush 55
            bastore
            dup
            bipush 8
         4: .line 15
            bipush 56
            bastore
            dup
            bipush 9
            bipush 57
            bastore
            dup
            bipush 10
            bipush 97
            bastore
            dup
            bipush 11
            bipush 98
            bastore
            dup
            bipush 12
            bipush 99
            bastore
            dup
            bipush 13
            bipush 100
            bastore
            dup
            bipush 14
            bipush 101
            bastore
            dup
            bipush 15
            bipush 102
            bastore
            putfield org.bouncycastle.util.encoders.HexEncoder.encodingTable:[B
         5: .line 21
            aload 0 /* this */
            sipush 128
            newarray 8
            putfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
         6: .line 45
            aload 0 /* this */
            invokevirtual org.bouncycastle.util.encoders.HexEncoder.initialiseDecodingTable:()V
         7: .line 46
            return
        end local 0 // org.bouncycastle.util.encoders.HexEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/bouncycastle/util/encoders/HexEncoder;

  public int encode(byte[], int, int, java.io.OutputStream);
    descriptor: ([BIILjava/io/OutputStream;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // org.bouncycastle.util.encoders.HexEncoder this
        start local 1 // byte[] data
        start local 2 // int off
        start local 3 // int length
        start local 4 // java.io.OutputStream out
         0: .line 60
            iload 2 /* off */
            istore 5 /* i */
        start local 5 // int i
         1: goto 6
         2: .line 62
      StackMap locals: int
      StackMap stack:
            aload 1 /* data */
            iload 5 /* i */
            baload
            sipush 255
            iand
            istore 6 /* v */
        start local 6 // int v
         3: .line 64
            aload 4 /* out */
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.encodingTable:[B
            iload 6 /* v */
            iconst_4
            iushr
            baload
            invokevirtual java.io.OutputStream.write:(I)V
         4: .line 65
            aload 4 /* out */
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.encodingTable:[B
            iload 6 /* v */
            bipush 15
            iand
            baload
            invokevirtual java.io.OutputStream.write:(I)V
        end local 6 // int v
         5: .line 60
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 5 /* i */
            iload 2 /* off */
            iload 3 /* length */
            iadd
            if_icmplt 2
        end local 5 // int i
         7: .line 68
            iload 3 /* length */
            iconst_2
            imul
            ireturn
        end local 4 // java.io.OutputStream out
        end local 3 // int length
        end local 2 // int off
        end local 1 // byte[] data
        end local 0 // org.bouncycastle.util.encoders.HexEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lorg/bouncycastle/util/encoders/HexEncoder;
            0    8     1    data  [B
            0    8     2     off  I
            0    8     3  length  I
            0    8     4     out  Ljava/io/OutputStream;
            1    7     5       i  I
            3    5     6       v  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      data    
      off     
      length  
      out     

  private static boolean ignore(char);
    descriptor: (C)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // char c
         0: .line 74
            iload 0 /* c */
            bipush 10
            if_icmpeq 1
            iload 0 /* c */
            bipush 13
            if_icmpeq 1
            iload 0 /* c */
            bipush 9
            if_icmpeq 1
            iload 0 /* c */
            bipush 32
            if_icmpeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // char c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     c  C
    MethodParameters:
      Name  Flags
      c     

  public int decode(byte[], int, int, java.io.OutputStream);
    descriptor: ([BIILjava/io/OutputStream;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=10, args_size=5
        start local 0 // org.bouncycastle.util.encoders.HexEncoder this
        start local 1 // byte[] data
        start local 2 // int off
        start local 3 // int length
        start local 4 // java.io.OutputStream out
         0: .line 91
            iconst_0
            istore 7 /* outLen */
        start local 7 // int outLen
         1: .line 93
            iload 2 /* off */
            iload 3 /* length */
            iadd
            istore 8 /* end */
        start local 8 // int end
         2: .line 95
            goto 6
         3: .line 97
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder byte[] int int java.io.OutputStream top top int int
      StackMap stack:
            aload 1 /* data */
            iload 8 /* end */
            iconst_1
            isub
            baload
            i2c
            invokestatic org.bouncycastle.util.encoders.HexEncoder.ignore:(C)Z
            ifne 5
         4: .line 99
            goto 7
         5: .line 102
      StackMap locals:
      StackMap stack:
            iinc 8 /* end */ -1
         6: .line 95
      StackMap locals:
      StackMap stack:
            iload 8 /* end */
            iload 2 /* off */
            if_icmpgt 3
         7: .line 105
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            istore 9 /* i */
        start local 9 // int i
         8: .line 106
            goto 20
         9: .line 110
      StackMap locals: int
      StackMap stack:
            iinc 9 /* i */ 1
        10: .line 108
      StackMap locals:
      StackMap stack:
            iload 9 /* i */
            iload 8 /* end */
            if_icmpge 11
            aload 1 /* data */
            iload 9 /* i */
            baload
            i2c
            invokestatic org.bouncycastle.util.encoders.HexEncoder.ignore:(C)Z
            ifne 9
        11: .line 113
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            aload 1 /* data */
            iload 9 /* i */
            iinc 9 /* i */ 1
            baload
            baload
            istore 5 /* b1 */
        start local 5 // byte b1
        12: .line 115
            goto 14
        13: .line 117
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder byte[] int int java.io.OutputStream int top int int int
      StackMap stack:
            iinc 9 /* i */ 1
        14: .line 115
      StackMap locals:
      StackMap stack:
            iload 9 /* i */
            iload 8 /* end */
            if_icmpge 15
            aload 1 /* data */
            iload 9 /* i */
            baload
            i2c
            invokestatic org.bouncycastle.util.encoders.HexEncoder.ignore:(C)Z
            ifne 13
        15: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            aload 1 /* data */
            iload 9 /* i */
            iinc 9 /* i */ 1
            baload
            baload
            istore 6 /* b2 */
        start local 6 // byte b2
        16: .line 122
            iload 5 /* b1 */
            iload 6 /* b2 */
            ior
            ifge 18
        17: .line 124
            new java.io.IOException
            dup
            ldc "invalid characters encountered in Hex data"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 127
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder byte[] int int java.io.OutputStream int int int int int
      StackMap stack:
            aload 4 /* out */
            iload 5 /* b1 */
            iconst_4
            ishl
            iload 6 /* b2 */
            ior
            invokevirtual java.io.OutputStream.write:(I)V
        19: .line 129
            iinc 7 /* outLen */ 1
        end local 6 // byte b2
        end local 5 // byte b1
        20: .line 106
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder byte[] int int java.io.OutputStream top top int int int
      StackMap stack:
            iload 9 /* i */
            iload 8 /* end */
            if_icmplt 10
        21: .line 132
            iload 7 /* outLen */
            ireturn
        end local 9 // int i
        end local 8 // int end
        end local 7 // int outLen
        end local 4 // java.io.OutputStream out
        end local 3 // int length
        end local 2 // int off
        end local 1 // byte[] data
        end local 0 // org.bouncycastle.util.encoders.HexEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    this  Lorg/bouncycastle/util/encoders/HexEncoder;
            0   22     1    data  [B
            0   22     2     off  I
            0   22     3  length  I
            0   22     4     out  Ljava/io/OutputStream;
           12   20     5      b1  B
           16   20     6      b2  B
            1   22     7  outLen  I
            2   22     8     end  I
            8   22     9       i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      data    
      off     
      length  
      out     

  public int decode(java.lang.String, java.io.OutputStream);
    descriptor: (Ljava/lang/String;Ljava/io/OutputStream;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.bouncycastle.util.encoders.HexEncoder this
        start local 1 // java.lang.String data
        start local 2 // java.io.OutputStream out
         0: .line 147
            iconst_0
            istore 5 /* length */
        start local 5 // int length
         1: .line 149
            aload 1 /* data */
            invokevirtual java.lang.String.length:()I
            istore 6 /* end */
        start local 6 // int end
         2: .line 151
            goto 6
         3: .line 153
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder java.lang.String java.io.OutputStream top top int int
      StackMap stack:
            aload 1 /* data */
            iload 6 /* end */
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic org.bouncycastle.util.encoders.HexEncoder.ignore:(C)Z
            ifne 5
         4: .line 155
            goto 7
         5: .line 158
      StackMap locals:
      StackMap stack:
            iinc 6 /* end */ -1
         6: .line 151
      StackMap locals:
      StackMap stack:
            iload 6 /* end */
            ifgt 3
         7: .line 161
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         8: .line 162
            goto 20
         9: .line 166
      StackMap locals: int
      StackMap stack:
            iinc 7 /* i */ 1
        10: .line 164
      StackMap locals:
      StackMap stack:
            iload 7 /* i */
            iload 6 /* end */
            if_icmpge 11
            aload 1 /* data */
            iload 7 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic org.bouncycastle.util.encoders.HexEncoder.ignore:(C)Z
            ifne 9
        11: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            aload 1 /* data */
            iload 7 /* i */
            iinc 7 /* i */ 1
            invokevirtual java.lang.String.charAt:(I)C
            baload
            istore 3 /* b1 */
        start local 3 // byte b1
        12: .line 171
            goto 14
        13: .line 173
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder java.lang.String java.io.OutputStream int top int int int
      StackMap stack:
            iinc 7 /* i */ 1
        14: .line 171
      StackMap locals:
      StackMap stack:
            iload 7 /* i */
            iload 6 /* end */
            if_icmpge 15
            aload 1 /* data */
            iload 7 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic org.bouncycastle.util.encoders.HexEncoder.ignore:(C)Z
            ifne 13
        15: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.util.encoders.HexEncoder.decodingTable:[B
            aload 1 /* data */
            iload 7 /* i */
            iinc 7 /* i */ 1
            invokevirtual java.lang.String.charAt:(I)C
            baload
            istore 4 /* b2 */
        start local 4 // byte b2
        16: .line 178
            iload 3 /* b1 */
            iload 4 /* b2 */
            ior
            ifge 18
        17: .line 180
            new java.io.IOException
            dup
            ldc "invalid characters encountered in Hex string"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 183
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder java.lang.String java.io.OutputStream int int int int int
      StackMap stack:
            aload 2 /* out */
            iload 3 /* b1 */
            iconst_4
            ishl
            iload 4 /* b2 */
            ior
            invokevirtual java.io.OutputStream.write:(I)V
        19: .line 185
            iinc 5 /* length */ 1
        end local 4 // byte b2
        end local 3 // byte b1
        20: .line 162
      StackMap locals: org.bouncycastle.util.encoders.HexEncoder java.lang.String java.io.OutputStream top top int int int
      StackMap stack:
            iload 7 /* i */
            iload 6 /* end */
            if_icmplt 10
        21: .line 188
            iload 5 /* length */
            ireturn
        end local 7 // int i
        end local 6 // int end
        end local 5 // int length
        end local 2 // java.io.OutputStream out
        end local 1 // java.lang.String data
        end local 0 // org.bouncycastle.util.encoders.HexEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    this  Lorg/bouncycastle/util/encoders/HexEncoder;
            0   22     1    data  Ljava/lang/String;
            0   22     2     out  Ljava/io/OutputStream;
           12   20     3      b1  B
           16   20     4      b2  B
            1   22     5  length  I
            2   22     6     end  I
            8   22     7       i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  
      out   
}
SourceFile: "HexEncoder.java"