public class sun.misc.UCDecoder extends sun.misc.CharacterDecoder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.misc.UCDecoder
  super_class: sun.misc.CharacterDecoder
{
  private static final byte[] map_array;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private int sequence;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private byte[] tmp;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private sun.misc.CRC16 crc;
    descriptor: Lsun/misc/CRC16;
    flags: (0x0002) ACC_PRIVATE

  private java.io.ByteArrayOutputStream lineAndSeq;
    descriptor: Ljava/io/ByteArrayOutputStream;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 98
            bipush 64
            newarray 8
            dup
            iconst_0
         1: .line 100
            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
         2: .line 101
            bipush 56
            bastore
            dup
            bipush 9
            bipush 57
            bastore
            dup
            bipush 10
            bipush 65
            bastore
            dup
            bipush 11
            bipush 66
            bastore
            dup
            bipush 12
            bipush 67
            bastore
            dup
            bipush 13
            bipush 68
            bastore
            dup
            bipush 14
            bipush 69
            bastore
            dup
            bipush 15
            bipush 70
            bastore
            dup
            bipush 16
         3: .line 102
            bipush 71
            bastore
            dup
            bipush 17
            bipush 72
            bastore
            dup
            bipush 18
            bipush 73
            bastore
            dup
            bipush 19
            bipush 74
            bastore
            dup
            bipush 20
            bipush 75
            bastore
            dup
            bipush 21
            bipush 76
            bastore
            dup
            bipush 22
            bipush 77
            bastore
            dup
            bipush 23
            bipush 78
            bastore
            dup
            bipush 24
         4: .line 103
            bipush 79
            bastore
            dup
            bipush 25
            bipush 80
            bastore
            dup
            bipush 26
            bipush 81
            bastore
            dup
            bipush 27
            bipush 82
            bastore
            dup
            bipush 28
            bipush 83
            bastore
            dup
            bipush 29
            bipush 84
            bastore
            dup
            bipush 30
            bipush 85
            bastore
            dup
            bipush 31
            bipush 86
            bastore
            dup
            bipush 32
         5: .line 104
            bipush 87
            bastore
            dup
            bipush 33
            bipush 88
            bastore
            dup
            bipush 34
            bipush 89
            bastore
            dup
            bipush 35
            bipush 90
            bastore
            dup
            bipush 36
            bipush 97
            bastore
            dup
            bipush 37
            bipush 98
            bastore
            dup
            bipush 38
            bipush 99
            bastore
            dup
            bipush 39
            bipush 100
            bastore
            dup
            bipush 40
         6: .line 105
            bipush 101
            bastore
            dup
            bipush 41
            bipush 102
            bastore
            dup
            bipush 42
            bipush 103
            bastore
            dup
            bipush 43
            bipush 104
            bastore
            dup
            bipush 44
            bipush 105
            bastore
            dup
            bipush 45
            bipush 106
            bastore
            dup
            bipush 46
            bipush 107
            bastore
            dup
            bipush 47
            bipush 108
            bastore
            dup
            bipush 48
         7: .line 106
            bipush 109
            bastore
            dup
            bipush 49
            bipush 110
            bastore
            dup
            bipush 50
            bipush 111
            bastore
            dup
            bipush 51
            bipush 112
            bastore
            dup
            bipush 52
            bipush 113
            bastore
            dup
            bipush 53
            bipush 114
            bastore
            dup
            bipush 54
            bipush 115
            bastore
            dup
            bipush 55
            bipush 116
            bastore
            dup
            bipush 56
         8: .line 107
            bipush 117
            bastore
            dup
            bipush 57
            bipush 118
            bastore
            dup
            bipush 58
            bipush 119
            bastore
            dup
            bipush 59
            bipush 120
            bastore
            dup
            bipush 60
            bipush 121
            bastore
            dup
            bipush 61
            bipush 122
            bastore
            dup
            bipush 62
            bipush 40
            bastore
            dup
            bipush 63
            bipush 41
            bastore
         9: .line 98
            putstatic sun.misc.UCDecoder.map_array:[B
        10: .line 108
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.misc.UCDecoder this
         0: .line 85
            aload 0 /* this */
            invokespecial sun.misc.CharacterDecoder.<init>:()V
         1: .line 111
            aload 0 /* this */
            iconst_2
            newarray 8
            putfield sun.misc.UCDecoder.tmp:[B
         2: .line 112
            aload 0 /* this */
            new sun.misc.CRC16
            dup
            invokespecial sun.misc.CRC16.<init>:()V
            putfield sun.misc.UCDecoder.crc:Lsun/misc/CRC16;
         3: .line 165
            aload 0 /* this */
            new java.io.ByteArrayOutputStream
            dup
            iconst_2
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            putfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
         4: .line 85
            return
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/misc/UCDecoder;

  protected int bytesPerAtom();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.misc.UCDecoder this
         0: .line 89
            iconst_2
            ireturn
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/misc/UCDecoder;

  protected int bytesPerLine();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.misc.UCDecoder this
         0: .line 94
            bipush 48
            ireturn
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/misc/UCDecoder;

  protected void decodeAtom(java.io.PushbackInputStream, java.io.OutputStream, int);
    descriptor: (Ljava/io/PushbackInputStream;Ljava/io/OutputStream;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=15, args_size=4
        start local 0 // sun.misc.UCDecoder this
        start local 1 // java.io.PushbackInputStream inStream
        start local 2 // java.io.OutputStream outStream
        start local 3 // int l
         0: .line 120
            iconst_m1
            istore 9 /* a */
        start local 9 // byte a
         1: iconst_m1
            istore 10 /* b */
        start local 10 // byte b
         2: iconst_m1
            istore 11 /* c */
        start local 11 // byte c
         3: .line 122
            iconst_3
            newarray 8
            astore 14 /* tmp */
        start local 14 // byte[] tmp
         4: .line 124
            aload 1 /* inStream */
            aload 14 /* tmp */
            invokevirtual java.io.PushbackInputStream.read:([B)I
            istore 4 /* i */
        start local 4 // int i
         5: .line 125
            iload 4 /* i */
            iconst_3
            if_icmpeq 7
         6: .line 126
            new sun.misc.CEStreamExhausted
            dup
            invokespecial sun.misc.CEStreamExhausted.<init>:()V
            athrow
         7: .line 128
      StackMap locals: sun.misc.UCDecoder java.io.PushbackInputStream java.io.OutputStream int int top top top top int int int top top byte[]
      StackMap stack:
            iconst_0
            istore 4 /* i */
            goto 15
         8: .line 129
      StackMap locals:
      StackMap stack:
            aload 14 /* tmp */
            iconst_0
            baload
            getstatic sun.misc.UCDecoder.map_array:[B
            iload 4 /* i */
            baload
            if_icmpne 10
         9: .line 130
            iload 4 /* i */
            i2b
            istore 9 /* a */
        10: .line 132
      StackMap locals:
      StackMap stack:
            aload 14 /* tmp */
            iconst_1
            baload
            getstatic sun.misc.UCDecoder.map_array:[B
            iload 4 /* i */
            baload
            if_icmpne 12
        11: .line 133
            iload 4 /* i */
            i2b
            istore 10 /* b */
        12: .line 135
      StackMap locals:
      StackMap stack:
            aload 14 /* tmp */
            iconst_2
            baload
            getstatic sun.misc.UCDecoder.map_array:[B
            iload 4 /* i */
            baload
            if_icmpne 14
        13: .line 136
            iload 4 /* i */
            i2b
            istore 11 /* c */
        14: .line 128
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 4 /* i */
            bipush 64
            if_icmpge 16
            iload 9 /* a */
            iconst_m1
            if_icmpeq 8
            iload 10 /* b */
            iconst_m1
            if_icmpeq 8
            iload 11 /* c */
            iconst_m1
            if_icmpeq 8
        16: .line 139
      StackMap locals:
      StackMap stack:
            iload 9 /* a */
            bipush 56
            iand
            iconst_2
            ishl
            iload 10 /* b */
            bipush 31
            iand
            iadd
            i2b
            istore 12 /* high_byte */
        start local 12 // byte high_byte
        17: .line 140
            iload 9 /* a */
            bipush 7
            iand
            iconst_5
            ishl
            iload 11 /* c */
            bipush 31
            iand
            iadd
            i2b
            istore 13 /* low_byte */
        start local 13 // byte low_byte
        18: .line 141
            iconst_0
            istore 5 /* p1 */
        start local 5 // int p1
        19: .line 142
            iconst_0
            istore 6 /* p2 */
        start local 6 // int p2
        20: .line 143
            iconst_1
            istore 4 /* i */
            goto 26
        21: .line 144
      StackMap locals: sun.misc.UCDecoder java.io.PushbackInputStream java.io.OutputStream int int int int top top int int int int int byte[]
      StackMap stack:
            iload 12 /* high_byte */
            iload 4 /* i */
            iand
            ifeq 23
        22: .line 145
            iinc 5 /* p1 */ 1
        23: .line 146
      StackMap locals:
      StackMap stack:
            iload 13 /* low_byte */
            iload 4 /* i */
            iand
            ifeq 25
        24: .line 147
            iinc 6 /* p2 */ 1
        25: .line 143
      StackMap locals:
      StackMap stack:
            iload 4 /* i */
            iconst_2
            imul
            istore 4 /* i */
      StackMap locals:
      StackMap stack:
        26: iload 4 /* i */
            sipush 256
            if_icmplt 21
        27: .line 149
            iload 10 /* b */
            bipush 32
            iand
            bipush 32
            idiv
            istore 7 /* np1 */
        start local 7 // int np1
        28: .line 150
            iload 11 /* c */
            bipush 32
            iand
            bipush 32
            idiv
            istore 8 /* np2 */
        start local 8 // int np2
        29: .line 151
            iload 5 /* p1 */
            iconst_1
            iand
            iload 7 /* np1 */
            if_icmpeq 31
        30: .line 152
            new sun.misc.CEFormatException
            dup
            ldc "UCDecoder: High byte parity error."
            invokespecial sun.misc.CEFormatException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 154
      StackMap locals: sun.misc.UCDecoder java.io.PushbackInputStream java.io.OutputStream int int int int int int int int int int int byte[]
      StackMap stack:
            iload 6 /* p2 */
            iconst_1
            iand
            iload 8 /* np2 */
            if_icmpeq 33
        32: .line 155
            new sun.misc.CEFormatException
            dup
            ldc "UCDecoder: Low byte parity error."
            invokespecial sun.misc.CEFormatException.<init>:(Ljava/lang/String;)V
            athrow
        33: .line 157
      StackMap locals:
      StackMap stack:
            aload 2 /* outStream */
            iload 12 /* high_byte */
            invokevirtual java.io.OutputStream.write:(I)V
        34: .line 158
            aload 0 /* this */
            getfield sun.misc.UCDecoder.crc:Lsun/misc/CRC16;
            iload 12 /* high_byte */
            invokevirtual sun.misc.CRC16.update:(B)V
        35: .line 159
            iload 3 /* l */
            iconst_2
            if_icmpne 38
        36: .line 160
            aload 2 /* outStream */
            iload 13 /* low_byte */
            invokevirtual java.io.OutputStream.write:(I)V
        37: .line 161
            aload 0 /* this */
            getfield sun.misc.UCDecoder.crc:Lsun/misc/CRC16;
            iload 13 /* low_byte */
            invokevirtual sun.misc.CRC16.update:(B)V
        38: .line 163
      StackMap locals:
      StackMap stack:
            return
        end local 14 // byte[] tmp
        end local 13 // byte low_byte
        end local 12 // byte high_byte
        end local 11 // byte c
        end local 10 // byte b
        end local 9 // byte a
        end local 8 // int np2
        end local 7 // int np1
        end local 6 // int p2
        end local 5 // int p1
        end local 4 // int i
        end local 3 // int l
        end local 2 // java.io.OutputStream outStream
        end local 1 // java.io.PushbackInputStream inStream
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   39     0       this  Lsun/misc/UCDecoder;
            0   39     1   inStream  Ljava/io/PushbackInputStream;
            0   39     2  outStream  Ljava/io/OutputStream;
            0   39     3          l  I
            5   39     4          i  I
           19   39     5         p1  I
           20   39     6         p2  I
           28   39     7        np1  I
           29   39     8        np2  I
            1   39     9          a  B
            2   39    10          b  B
            3   39    11          c  B
           17   39    12  high_byte  B
           18   39    13   low_byte  B
            4   39    14        tmp  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      inStream   
      outStream  
      l          

  protected void decodeBufferPrefix(java.io.PushbackInputStream, java.io.OutputStream);
    descriptor: (Ljava/io/PushbackInputStream;Ljava/io/OutputStream;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.misc.UCDecoder this
        start local 1 // java.io.PushbackInputStream inStream
        start local 2 // java.io.OutputStream outStream
         0: .line 171
            aload 0 /* this */
            iconst_0
            putfield sun.misc.UCDecoder.sequence:I
         1: .line 172
            return
        end local 2 // java.io.OutputStream outStream
        end local 1 // java.io.PushbackInputStream inStream
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lsun/misc/UCDecoder;
            0    2     1   inStream  Ljava/io/PushbackInputStream;
            0    2     2  outStream  Ljava/io/OutputStream;
    MethodParameters:
           Name  Flags
      inStream   
      outStream  

  protected int decodeLinePrefix(java.io.PushbackInputStream, java.io.OutputStream);
    descriptor: (Ljava/io/PushbackInputStream;Ljava/io/OutputStream;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // sun.misc.UCDecoder this
        start local 1 // java.io.PushbackInputStream inStream
        start local 2 // java.io.OutputStream outStream
         0: .line 190
            aload 0 /* this */
            getfield sun.misc.UCDecoder.crc:Lsun/misc/CRC16;
            iconst_0
            putfield sun.misc.CRC16.value:I
         1: .line 192
      StackMap locals:
      StackMap stack:
            aload 1 /* inStream */
            aload 0 /* this */
            getfield sun.misc.UCDecoder.tmp:[B
            iconst_0
            iconst_1
            invokevirtual java.io.PushbackInputStream.read:([BII)I
            istore 6 /* c */
        start local 6 // int c
         2: .line 193
            iload 6 /* c */
            iconst_m1
            if_icmpne 4
         3: .line 194
            new sun.misc.CEStreamExhausted
            dup
            invokespecial sun.misc.CEStreamExhausted.<init>:()V
            athrow
         4: .line 196
      StackMap locals: sun.misc.UCDecoder java.io.PushbackInputStream java.io.OutputStream top top top int
      StackMap stack:
            aload 0 /* this */
            getfield sun.misc.UCDecoder.tmp:[B
            iconst_0
            baload
            bipush 42
            if_icmpne 1
         5: .line 200
            aload 0 /* this */
            getfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         6: .line 201
            aload 0 /* this */
            aload 1 /* inStream */
            aload 0 /* this */
            getfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
            iconst_2
            invokevirtual sun.misc.UCDecoder.decodeAtom:(Ljava/io/PushbackInputStream;Ljava/io/OutputStream;I)V
         7: .line 202
            aload 0 /* this */
            getfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            astore 5 /* xtmp */
        start local 5 // byte[] xtmp
         8: .line 203
            aload 5 /* xtmp */
            iconst_0
            baload
            sipush 255
            iand
            istore 3 /* nLen */
        start local 3 // int nLen
         9: .line 204
            aload 5 /* xtmp */
            iconst_1
            baload
            sipush 255
            iand
            istore 4 /* nSeq */
        start local 4 // int nSeq
        10: .line 205
            iload 4 /* nSeq */
            aload 0 /* this */
            getfield sun.misc.UCDecoder.sequence:I
            if_icmpeq 12
        11: .line 206
            new sun.misc.CEFormatException
            dup
            ldc "UCDecoder: Out of sequence line."
            invokespecial sun.misc.CEFormatException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 208
      StackMap locals: sun.misc.UCDecoder java.io.PushbackInputStream java.io.OutputStream int int byte[] int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.misc.UCDecoder.sequence:I
            iconst_1
            iadd
            sipush 255
            iand
            putfield sun.misc.UCDecoder.sequence:I
        13: .line 209
            iload 3 /* nLen */
            ireturn
        end local 6 // int c
        end local 5 // byte[] xtmp
        end local 4 // int nSeq
        end local 3 // int nLen
        end local 2 // java.io.OutputStream outStream
        end local 1 // java.io.PushbackInputStream inStream
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lsun/misc/UCDecoder;
            0   14     1   inStream  Ljava/io/PushbackInputStream;
            0   14     2  outStream  Ljava/io/OutputStream;
            9   14     3       nLen  I
           10   14     4       nSeq  I
            8   14     5       xtmp  [B
            2   14     6          c  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      inStream   
      outStream  

  protected void decodeLineSuffix(java.io.PushbackInputStream, java.io.OutputStream);
    descriptor: (Ljava/io/PushbackInputStream;Ljava/io/OutputStream;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // sun.misc.UCDecoder this
        start local 1 // java.io.PushbackInputStream inStream
        start local 2 // java.io.OutputStream outStream
         0: .line 221
            aload 0 /* this */
            getfield sun.misc.UCDecoder.crc:Lsun/misc/CRC16;
            getfield sun.misc.CRC16.value:I
            istore 3 /* lineCRC */
        start local 3 // int lineCRC
         1: .line 225
            aload 0 /* this */
            getfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         2: .line 226
            aload 0 /* this */
            aload 1 /* inStream */
            aload 0 /* this */
            getfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
            iconst_2
            invokevirtual sun.misc.UCDecoder.decodeAtom:(Ljava/io/PushbackInputStream;Ljava/io/OutputStream;I)V
         3: .line 227
            aload 0 /* this */
            getfield sun.misc.UCDecoder.lineAndSeq:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            astore 5 /* tmp */
        start local 5 // byte[] tmp
         4: .line 228
            aload 5 /* tmp */
            iconst_0
            baload
            bipush 8
            ishl
            ldc 65280
            iand
            aload 5 /* tmp */
            iconst_1
            baload
            sipush 255
            iand
            iadd
            istore 4 /* readCRC */
        start local 4 // int readCRC
         5: .line 229
            iload 4 /* readCRC */
            iload 3 /* lineCRC */
            if_icmpeq 7
         6: .line 230
            new sun.misc.CEFormatException
            dup
            ldc "UCDecoder: CRC check failed."
            invokespecial sun.misc.CEFormatException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 232
      StackMap locals: int int byte[]
      StackMap stack:
            return
        end local 5 // byte[] tmp
        end local 4 // int readCRC
        end local 3 // int lineCRC
        end local 2 // java.io.OutputStream outStream
        end local 1 // java.io.PushbackInputStream inStream
        end local 0 // sun.misc.UCDecoder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/misc/UCDecoder;
            0    8     1   inStream  Ljava/io/PushbackInputStream;
            0    8     2  outStream  Ljava/io/OutputStream;
            1    8     3    lineCRC  I
            5    8     4    readCRC  I
            4    8     5        tmp  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      inStream   
      outStream  
}
SourceFile: "UCDecoder.java"