public class org.apache.tomcat.util.buf.Utf8Decoder extends java.nio.charset.CharsetDecoder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.buf.Utf8Decoder
  super_class: java.nio.charset.CharsetDecoder
{
  private static final int[] remainingBytes;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int[] remainingNumbers;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int[] lowerEncodingLimit;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 46
            sipush 128
            newarray 10
            dup
            iconst_0
         1: .line 48
            iconst_m1
            iastore
            dup
            iconst_1
            iconst_m1
            iastore
            dup
            iconst_2
            iconst_m1
            iastore
            dup
            iconst_3
            iconst_m1
            iastore
            dup
            iconst_4
            iconst_m1
            iastore
            dup
            iconst_5
            iconst_m1
            iastore
            dup
            bipush 6
            iconst_m1
            iastore
            dup
            bipush 7
            iconst_m1
            iastore
            dup
            bipush 8
            iconst_m1
            iastore
            dup
            bipush 9
            iconst_m1
            iastore
            dup
            bipush 10
            iconst_m1
            iastore
            dup
            bipush 11
            iconst_m1
            iastore
            dup
            bipush 12
            iconst_m1
            iastore
            dup
            bipush 13
            iconst_m1
            iastore
            dup
            bipush 14
            iconst_m1
            iastore
            dup
            bipush 15
            iconst_m1
            iastore
            dup
            bipush 16
         2: .line 49
            iconst_m1
            iastore
            dup
            bipush 17
            iconst_m1
            iastore
            dup
            bipush 18
            iconst_m1
            iastore
            dup
            bipush 19
            iconst_m1
            iastore
            dup
            bipush 20
            iconst_m1
            iastore
            dup
            bipush 21
            iconst_m1
            iastore
            dup
            bipush 22
            iconst_m1
            iastore
            dup
            bipush 23
            iconst_m1
            iastore
            dup
            bipush 24
            iconst_m1
            iastore
            dup
            bipush 25
            iconst_m1
            iastore
            dup
            bipush 26
            iconst_m1
            iastore
            dup
            bipush 27
            iconst_m1
            iastore
            dup
            bipush 28
            iconst_m1
            iastore
            dup
            bipush 29
            iconst_m1
            iastore
            dup
            bipush 30
            iconst_m1
            iastore
            dup
            bipush 31
            iconst_m1
            iastore
            dup
            bipush 32
         3: .line 50
            iconst_m1
            iastore
            dup
            bipush 33
            iconst_m1
            iastore
            dup
            bipush 34
            iconst_m1
            iastore
            dup
            bipush 35
            iconst_m1
            iastore
            dup
            bipush 36
            iconst_m1
            iastore
            dup
            bipush 37
            iconst_m1
            iastore
            dup
            bipush 38
            iconst_m1
            iastore
            dup
            bipush 39
            iconst_m1
            iastore
            dup
            bipush 40
            iconst_m1
            iastore
            dup
            bipush 41
            iconst_m1
            iastore
            dup
            bipush 42
            iconst_m1
            iastore
            dup
            bipush 43
            iconst_m1
            iastore
            dup
            bipush 44
            iconst_m1
            iastore
            dup
            bipush 45
            iconst_m1
            iastore
            dup
            bipush 46
            iconst_m1
            iastore
            dup
            bipush 47
            iconst_m1
            iastore
            dup
            bipush 48
         4: .line 51
            iconst_m1
            iastore
            dup
            bipush 49
            iconst_m1
            iastore
            dup
            bipush 50
            iconst_m1
            iastore
            dup
            bipush 51
            iconst_m1
            iastore
            dup
            bipush 52
            iconst_m1
            iastore
            dup
            bipush 53
            iconst_m1
            iastore
            dup
            bipush 54
            iconst_m1
            iastore
            dup
            bipush 55
            iconst_m1
            iastore
            dup
            bipush 56
            iconst_m1
            iastore
            dup
            bipush 57
            iconst_m1
            iastore
            dup
            bipush 58
            iconst_m1
            iastore
            dup
            bipush 59
            iconst_m1
            iastore
            dup
            bipush 60
            iconst_m1
            iastore
            dup
            bipush 61
            iconst_m1
            iastore
            dup
            bipush 62
            iconst_m1
            iastore
            dup
            bipush 63
            iconst_m1
            iastore
            dup
            bipush 64
         5: .line 53
            iconst_m1
            iastore
            dup
            bipush 65
            iconst_m1
            iastore
            dup
            bipush 66
            iconst_1
            iastore
            dup
            bipush 67
            iconst_1
            iastore
            dup
            bipush 68
            iconst_1
            iastore
            dup
            bipush 69
            iconst_1
            iastore
            dup
            bipush 70
            iconst_1
            iastore
            dup
            bipush 71
            iconst_1
            iastore
            dup
            bipush 72
            iconst_1
            iastore
            dup
            bipush 73
            iconst_1
            iastore
            dup
            bipush 74
            iconst_1
            iastore
            dup
            bipush 75
            iconst_1
            iastore
            dup
            bipush 76
            iconst_1
            iastore
            dup
            bipush 77
            iconst_1
            iastore
            dup
            bipush 78
            iconst_1
            iastore
            dup
            bipush 79
            iconst_1
            iastore
            dup
            bipush 80
         6: .line 54
            iconst_1
            iastore
            dup
            bipush 81
            iconst_1
            iastore
            dup
            bipush 82
            iconst_1
            iastore
            dup
            bipush 83
            iconst_1
            iastore
            dup
            bipush 84
            iconst_1
            iastore
            dup
            bipush 85
            iconst_1
            iastore
            dup
            bipush 86
            iconst_1
            iastore
            dup
            bipush 87
            iconst_1
            iastore
            dup
            bipush 88
            iconst_1
            iastore
            dup
            bipush 89
            iconst_1
            iastore
            dup
            bipush 90
            iconst_1
            iastore
            dup
            bipush 91
            iconst_1
            iastore
            dup
            bipush 92
            iconst_1
            iastore
            dup
            bipush 93
            iconst_1
            iastore
            dup
            bipush 94
            iconst_1
            iastore
            dup
            bipush 95
            iconst_1
            iastore
            dup
            bipush 96
         7: .line 56
            iconst_2
            iastore
            dup
            bipush 97
            iconst_2
            iastore
            dup
            bipush 98
            iconst_2
            iastore
            dup
            bipush 99
            iconst_2
            iastore
            dup
            bipush 100
            iconst_2
            iastore
            dup
            bipush 101
            iconst_2
            iastore
            dup
            bipush 102
            iconst_2
            iastore
            dup
            bipush 103
            iconst_2
            iastore
            dup
            bipush 104
            iconst_2
            iastore
            dup
            bipush 105
            iconst_2
            iastore
            dup
            bipush 106
            iconst_2
            iastore
            dup
            bipush 107
            iconst_2
            iastore
            dup
            bipush 108
            iconst_2
            iastore
            dup
            bipush 109
            iconst_2
            iastore
            dup
            bipush 110
            iconst_2
            iastore
            dup
            bipush 111
            iconst_2
            iastore
            dup
            bipush 112
         8: .line 58
            iconst_3
            iastore
            dup
            bipush 113
            iconst_3
            iastore
            dup
            bipush 114
            iconst_3
            iastore
            dup
            bipush 115
            iconst_3
            iastore
            dup
            bipush 116
            iconst_3
            iastore
            dup
            bipush 117
            iconst_m1
            iastore
            dup
            bipush 118
            iconst_m1
            iastore
            dup
            bipush 119
            iconst_m1
            iastore
            dup
            bipush 120
         9: .line 60
            iconst_m1
            iastore
            dup
            bipush 121
            iconst_m1
            iastore
            dup
            bipush 122
            iconst_m1
            iastore
            dup
            bipush 123
            iconst_m1
            iastore
            dup
            bipush 124
            iconst_m1
            iastore
            dup
            bipush 125
            iconst_m1
            iastore
            dup
            bipush 126
            iconst_m1
            iastore
            dup
            bipush 127
            iconst_m1
            iastore
        10: .line 46
            putstatic org.apache.tomcat.util.buf.Utf8Decoder.remainingBytes:[I
        11: .line 61
            iconst_4
            newarray 10
            dup
            iconst_1
        12: .line 62
            sipush 4224
            iastore
            dup
            iconst_2
        13: .line 63
            ldc 401536
            iastore
            dup
            iconst_3
        14: .line 64
            ldc 29892736
            iastore
        15: .line 61
            putstatic org.apache.tomcat.util.buf.Utf8Decoder.remainingNumbers:[I
        16: .line 67
            iconst_4
            newarray 10
            dup
            iconst_0
            iconst_m1
            iastore
            dup
            iconst_1
            sipush 128
            iastore
            dup
            iconst_2
            sipush 2048
            iastore
            dup
            iconst_3
            ldc 65536
            iastore
            putstatic org.apache.tomcat.util.buf.Utf8Decoder.lowerEncodingLimit:[I
            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 // org.apache.tomcat.util.buf.Utf8Decoder this
         0: .line 71
            aload 0 /* this */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            fconst_1
            fconst_1
            invokespecial java.nio.charset.CharsetDecoder.<init>:(Ljava/nio/charset/Charset;FF)V
         1: .line 72
            return
        end local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tomcat/util/buf/Utf8Decoder;

  protected java.nio.charset.CoderResult decodeLoop(java.nio.ByteBuffer, java.nio.CharBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
        start local 1 // java.nio.ByteBuffer in
        start local 2 // java.nio.CharBuffer out
         0: .line 77
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 2
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.hasArray:()Z
            ifeq 2
         1: .line 78
            aload 0 /* this */
            aload 1 /* in */
            aload 2 /* out */
            invokevirtual org.apache.tomcat.util.buf.Utf8Decoder.decodeHasArray:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
            areturn
         2: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* in */
            aload 2 /* out */
            invokevirtual org.apache.tomcat.util.buf.Utf8Decoder.decodeNotHasArray:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
            areturn
        end local 2 // java.nio.CharBuffer out
        end local 1 // java.nio.ByteBuffer in
        end local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/buf/Utf8Decoder;
            0    3     1    in  Ljava/nio/ByteBuffer;
            0    3     2   out  Ljava/nio/CharBuffer;
    MethodParameters:
      Name  Flags
      in    
      out   

  private java.nio.charset.CoderResult decodeNotHasArray(java.nio.ByteBuffer, java.nio.CharBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=12, args_size=3
        start local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
        start local 1 // java.nio.ByteBuffer in
        start local 2 // java.nio.CharBuffer out
         0: .line 85
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.remaining:()I
            istore 3 /* outRemaining */
        start local 3 // int outRemaining
         1: .line 86
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* pos */
        start local 4 // int pos
         2: .line 87
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* limit */
        start local 5 // int limit
         3: .line 89
            goto 56
         4: .line 90
      StackMap locals: int int int
      StackMap stack:
            iload 3 /* outRemaining */
            ifne 8
         5: .line 91
            getstatic java.nio.charset.CoderResult.OVERFLOW:Ljava/nio/charset/CoderResult;
            astore 11
         6: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         7: .line 91
            aload 11
            areturn
         8: .line 93
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.get:()B
            istore 6 /* jchar */
        start local 6 // int jchar
         9: .line 94
            iload 6 /* jchar */
            ifge 36
        10: .line 95
            iload 6 /* jchar */
            bipush 127
            iand
            istore 6 /* jchar */
        11: .line 96
            getstatic org.apache.tomcat.util.buf.Utf8Decoder.remainingBytes:[I
            iload 6 /* jchar */
            iaload
            istore 7 /* tail */
        start local 7 // int tail
        12: .line 97
            iload 7 /* tail */
            iconst_m1
            if_icmpne 16
        13: .line 98
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            astore 11
        14: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        15: .line 98
            aload 11
            areturn
        16: .line 100
      StackMap locals: int int
      StackMap stack:
            iload 5 /* limit */
            iload 4 /* pos */
            isub
            iconst_1
            iload 7 /* tail */
            iadd
            if_icmpge 20
        17: .line 103
            getstatic java.nio.charset.CoderResult.UNDERFLOW:Ljava/nio/charset/CoderResult;
            astore 11
        18: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        19: .line 103
            aload 11
            areturn
        20: .line 106
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        21: goto 29
        22: .line 107
      StackMap locals: org.apache.tomcat.util.buf.Utf8Decoder java.nio.ByteBuffer java.nio.CharBuffer int int int int int top int
      StackMap stack:
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.get:()B
            sipush 255
            iand
            istore 8 /* nextByte */
        start local 8 // int nextByte
        23: .line 108
            iload 8 /* nextByte */
            sipush 192
            iand
            sipush 128
            if_icmpeq 27
        24: .line 109
            iconst_1
            iload 9 /* i */
            iadd
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            astore 11
        25: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        26: .line 109
            aload 11
            areturn
        27: .line 111
      StackMap locals: org.apache.tomcat.util.buf.Utf8Decoder java.nio.ByteBuffer java.nio.CharBuffer int int int int int int int
      StackMap stack:
            iload 6 /* jchar */
            bipush 6
            ishl
            iload 8 /* nextByte */
            iadd
            istore 6 /* jchar */
        28: .line 106
            iinc 9 /* i */ 1
        end local 8 // int nextByte
      StackMap locals: org.apache.tomcat.util.buf.Utf8Decoder java.nio.ByteBuffer java.nio.CharBuffer int int int int int top int
      StackMap stack:
        29: iload 9 /* i */
            iload 7 /* tail */
            if_icmplt 22
        end local 9 // int i
        30: .line 113
            iload 6 /* jchar */
            getstatic org.apache.tomcat.util.buf.Utf8Decoder.remainingNumbers:[I
            iload 7 /* tail */
            iaload
            isub
            istore 6 /* jchar */
        31: .line 114
            iload 6 /* jchar */
            getstatic org.apache.tomcat.util.buf.Utf8Decoder.lowerEncodingLimit:[I
            iload 7 /* tail */
            iaload
            if_icmpge 35
        32: .line 116
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            astore 11
        33: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        34: .line 116
            aload 11
            areturn
        35: .line 118
      StackMap locals: org.apache.tomcat.util.buf.Utf8Decoder java.nio.ByteBuffer java.nio.CharBuffer int int int int int
      StackMap stack:
            iload 4 /* pos */
            iload 7 /* tail */
            iadd
            istore 4 /* pos */
        end local 7 // int tail
        36: .line 121
      StackMap locals:
      StackMap stack:
            iload 6 /* jchar */
            ldc 55296
            if_icmplt 40
            iload 6 /* jchar */
            ldc 57343
            if_icmpgt 40
        37: .line 122
            iconst_3
            invokestatic java.nio.charset.CoderResult.unmappableForLength:(I)Ljava/nio/charset/CoderResult;
            astore 11
        38: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        39: .line 122
            aload 11
            areturn
        40: .line 125
      StackMap locals:
      StackMap stack:
            iload 6 /* jchar */
            ldc 1114111
            if_icmple 44
        41: .line 126
            iconst_4
            invokestatic java.nio.charset.CoderResult.unmappableForLength:(I)Ljava/nio/charset/CoderResult;
            astore 11
        42: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        43: .line 126
            aload 11
            areturn
        44: .line 128
      StackMap locals:
      StackMap stack:
            iload 6 /* jchar */
            ldc 65535
            if_icmpgt 48
        45: .line 129
            aload 2 /* out */
            iload 6 /* jchar */
            i2c
            invokevirtual java.nio.CharBuffer.put:(C)Ljava/nio/CharBuffer;
            pop
        46: .line 130
            iinc 3 /* outRemaining */ -1
        47: .line 131
            goto 55
        48: .line 132
      StackMap locals:
      StackMap stack:
            iload 3 /* outRemaining */
            iconst_2
            if_icmpge 52
        49: .line 133
            getstatic java.nio.charset.CoderResult.OVERFLOW:Ljava/nio/charset/CoderResult;
            astore 11
        50: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        51: .line 133
            aload 11
            areturn
        52: .line 135
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iload 6 /* jchar */
            bipush 10
            ishr
            ldc 55232
            iadd
            i2c
            invokevirtual java.nio.CharBuffer.put:(C)Ljava/nio/CharBuffer;
            pop
        53: .line 136
            aload 2 /* out */
            iload 6 /* jchar */
            sipush 1023
            iand
            ldc 56320
            iadd
            i2c
            invokevirtual java.nio.CharBuffer.put:(C)Ljava/nio/CharBuffer;
            pop
        54: .line 137
            iinc 3 /* outRemaining */ -2
        55: .line 139
      StackMap locals:
      StackMap stack:
            iinc 4 /* pos */ 1
        end local 6 // int jchar
        56: .line 89
      StackMap locals:
      StackMap stack:
            iload 4 /* pos */
            iload 5 /* limit */
            if_icmplt 4
        57: .line 141
            getstatic java.nio.charset.CoderResult.UNDERFLOW:Ljava/nio/charset/CoderResult;
            astore 11
        58: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        59: .line 141
            aload 11
            areturn
        60: .line 142
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        61: .line 143
            aload 1 /* in */
            iload 4 /* pos */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        62: .line 144
            aload 10
            athrow
        end local 5 // int limit
        end local 4 // int pos
        end local 3 // int outRemaining
        end local 2 // java.nio.CharBuffer out
        end local 1 // java.nio.ByteBuffer in
        end local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   63     0          this  Lorg/apache/tomcat/util/buf/Utf8Decoder;
            0   63     1            in  Ljava/nio/ByteBuffer;
            0   63     2           out  Ljava/nio/CharBuffer;
            1   63     3  outRemaining  I
            2   63     4           pos  I
            3   63     5         limit  I
            9   56     6         jchar  I
           12   36     7          tail  I
           23   29     8      nextByte  I
           21   30     9             i  I
      Exception table:
        from    to  target  type
           3     6      60  any
           8    14      60  any
          16    18      60  any
          20    25      60  any
          27    33      60  any
          35    38      60  any
          40    42      60  any
          44    50      60  any
          52    58      60  any
    MethodParameters:
      Name  Flags
      in    
      out   

  private java.nio.charset.CoderResult decodeHasArray(java.nio.ByteBuffer, java.nio.CharBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=16, args_size=3
        start local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
        start local 1 // java.nio.ByteBuffer in
        start local 2 // java.nio.CharBuffer out
         0: .line 149
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.remaining:()I
            istore 3 /* outRemaining */
        start local 3 // int outRemaining
         1: .line 150
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* pos */
        start local 4 // int pos
         2: .line 151
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* limit */
        start local 5 // int limit
         3: .line 152
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 6 /* bArr */
        start local 6 // byte[] bArr
         4: .line 153
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.array:()[C
            astore 7 /* cArr */
        start local 7 // char[] cArr
         5: .line 154
            iload 5 /* limit */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iadd
            istore 8 /* inIndexLimit */
        start local 8 // int inIndexLimit
         6: .line 155
            iload 4 /* pos */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            iadd
            istore 9 /* inIndex */
        start local 9 // int inIndex
         7: .line 156
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.position:()I
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            iadd
            istore 10 /* outIndex */
        start local 10 // int outIndex
         8: .line 159
            goto 103
         9: .line 160
      StackMap locals: org.apache.tomcat.util.buf.Utf8Decoder java.nio.ByteBuffer java.nio.CharBuffer int int int byte[] char[] int int int
      StackMap stack:
            aload 6 /* bArr */
            iload 9 /* inIndex */
            baload
            istore 11 /* jchar */
        start local 11 // int jchar
        10: .line 161
            iload 11 /* jchar */
            ifge 86
        11: .line 162
            iload 11 /* jchar */
            bipush 127
            iand
            istore 11 /* jchar */
        12: .line 164
            getstatic org.apache.tomcat.util.buf.Utf8Decoder.remainingBytes:[I
            iload 11 /* jchar */
            iaload
            istore 12 /* tail */
        start local 12 // int tail
        13: .line 165
            iload 12 /* tail */
            iconst_m1
            if_icmpne 17
        14: .line 166
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        15: .line 167
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        16: .line 168
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        17: .line 173
      StackMap locals: int int
      StackMap stack:
            iload 8 /* inIndexLimit */
            iload 9 /* inIndex */
            isub
            iconst_1
            isub
            istore 13 /* tailAvailable */
        start local 13 // int tailAvailable
        18: .line 174
            iload 13 /* tailAvailable */
            ifle 58
        19: .line 176
            iload 11 /* jchar */
            bipush 65
            if_icmple 24
            iload 11 /* jchar */
            bipush 96
            if_icmpge 24
        20: .line 177
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 192
            iand
            sipush 128
            if_icmpeq 24
        21: .line 178
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        22: .line 179
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        23: .line 180
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        24: .line 183
      StackMap locals: int
      StackMap stack:
            iload 11 /* jchar */
            bipush 96
            if_icmpne 28
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 224
            iand
            sipush 160
            if_icmpeq 28
        25: .line 184
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        26: .line 185
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        27: .line 186
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        28: .line 189
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            bipush 96
            if_icmple 33
            iload 11 /* jchar */
            bipush 109
            if_icmpge 33
        29: .line 190
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 192
            iand
            sipush 128
            if_icmpeq 33
        30: .line 191
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        31: .line 192
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        32: .line 193
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        33: .line 196
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            bipush 109
            if_icmpne 37
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 224
            iand
            sipush 128
            if_icmpeq 37
        34: .line 197
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        35: .line 198
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        36: .line 199
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        37: .line 202
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            bipush 109
            if_icmple 42
            iload 11 /* jchar */
            bipush 112
            if_icmpge 42
        38: .line 203
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 192
            iand
            sipush 128
            if_icmpeq 42
        39: .line 204
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        40: .line 205
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        41: .line 206
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        42: .line 209
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            bipush 112
            if_icmpne 48
        43: .line 210
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 255
            iand
            sipush 144
            if_icmplt 45
        44: .line 211
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 255
            iand
            sipush 191
            if_icmple 48
        45: .line 212
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        46: .line 213
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        47: .line 214
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        48: .line 217
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            bipush 112
            if_icmple 53
            iload 11 /* jchar */
            bipush 116
            if_icmpge 53
        49: .line 218
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 192
            iand
            sipush 128
            if_icmpeq 53
        50: .line 219
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        51: .line 220
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        52: .line 221
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        53: .line 224
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            bipush 116
            if_icmpne 58
        54: .line 225
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_1
            iadd
            baload
            sipush 240
            iand
            sipush 128
            if_icmpeq 58
        55: .line 226
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        56: .line 227
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        57: .line 228
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        58: .line 232
      StackMap locals:
      StackMap stack:
            iload 13 /* tailAvailable */
            iconst_1
            if_icmple 63
            iload 12 /* tail */
            iconst_1
            if_icmple 63
        59: .line 233
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_2
            iadd
            baload
            sipush 192
            iand
            sipush 128
            if_icmpeq 63
        60: .line 234
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        61: .line 235
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        62: .line 236
            iconst_2
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        63: .line 240
      StackMap locals:
      StackMap stack:
            iload 13 /* tailAvailable */
            iconst_2
            if_icmple 68
            iload 12 /* tail */
            iconst_2
            if_icmple 68
        64: .line 241
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iconst_3
            iadd
            baload
            sipush 192
            iand
            sipush 128
            if_icmpeq 68
        65: .line 242
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        66: .line 243
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        67: .line 244
            iconst_3
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        68: .line 247
      StackMap locals:
      StackMap stack:
            iload 13 /* tailAvailable */
            iload 12 /* tail */
            if_icmpge 70
        69: .line 248
            goto 104
        70: .line 250
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 14 /* i */
        start local 14 // int i
        71: goto 79
        72: .line 251
      StackMap locals: int
      StackMap stack:
            aload 6 /* bArr */
            iload 9 /* inIndex */
            iload 14 /* i */
            iadd
            iconst_1
            iadd
            baload
            sipush 255
            iand
            istore 15 /* nextByte */
        start local 15 // int nextByte
        73: .line 252
            iload 15 /* nextByte */
            sipush 192
            iand
            sipush 128
            if_icmpeq 77
        74: .line 253
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        75: .line 254
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        76: .line 255
            iconst_1
            iload 14 /* i */
            iadd
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        77: .line 257
      StackMap locals: int
      StackMap stack:
            iload 11 /* jchar */
            bipush 6
            ishl
            iload 15 /* nextByte */
            iadd
            istore 11 /* jchar */
        end local 15 // int nextByte
        78: .line 250
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
        79: iload 14 /* i */
            iload 12 /* tail */
            if_icmplt 72
        end local 14 // int i
        80: .line 259
            iload 11 /* jchar */
            getstatic org.apache.tomcat.util.buf.Utf8Decoder.remainingNumbers:[I
            iload 12 /* tail */
            iaload
            isub
            istore 11 /* jchar */
        81: .line 260
            iload 11 /* jchar */
            getstatic org.apache.tomcat.util.buf.Utf8Decoder.lowerEncodingLimit:[I
            iload 12 /* tail */
            iaload
            if_icmpge 85
        82: .line 262
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        83: .line 263
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        84: .line 264
            iconst_1
            invokestatic java.nio.charset.CoderResult.malformedForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        85: .line 266
      StackMap locals:
      StackMap stack:
            iload 9 /* inIndex */
            iload 12 /* tail */
            iadd
            istore 9 /* inIndex */
        end local 13 // int tailAvailable
        end local 12 // int tail
        86: .line 269
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            ldc 55296
            if_icmplt 88
            iload 11 /* jchar */
            ldc 57343
            if_icmpgt 88
        87: .line 270
            iconst_3
            invokestatic java.nio.charset.CoderResult.unmappableForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        88: .line 273
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            ldc 1114111
            if_icmple 90
        89: .line 274
            iconst_4
            invokestatic java.nio.charset.CoderResult.unmappableForLength:(I)Ljava/nio/charset/CoderResult;
            areturn
        90: .line 276
      StackMap locals:
      StackMap stack:
            iload 11 /* jchar */
            ldc 65535
            if_icmpgt 94
        91: .line 277
            aload 7 /* cArr */
            iload 10 /* outIndex */
            iinc 10 /* outIndex */ 1
            iload 11 /* jchar */
            i2c
            castore
        92: .line 278
            iinc 3 /* outRemaining */ -1
        93: .line 279
            goto 102
        94: .line 280
      StackMap locals:
      StackMap stack:
            iload 3 /* outRemaining */
            iconst_2
            if_icmpge 99
        95: .line 283
            iinc 9 /* inIndex */ -3
        96: .line 284
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        97: .line 285
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        98: .line 286
            getstatic java.nio.charset.CoderResult.OVERFLOW:Ljava/nio/charset/CoderResult;
            areturn
        99: .line 288
      StackMap locals:
      StackMap stack:
            aload 7 /* cArr */
            iload 10 /* outIndex */
            iinc 10 /* outIndex */ 1
            iload 11 /* jchar */
            bipush 10
            ishr
            ldc 55232
            iadd
            i2c
            castore
       100: .line 289
            aload 7 /* cArr */
            iload 10 /* outIndex */
            iinc 10 /* outIndex */ 1
            iload 11 /* jchar */
            sipush 1023
            iand
            ldc 56320
            iadd
            i2c
            castore
       101: .line 290
            iinc 3 /* outRemaining */ -2
        end local 11 // int jchar
       102: .line 159
      StackMap locals:
      StackMap stack:
            iinc 9 /* inIndex */ 1
      StackMap locals:
      StackMap stack:
       103: iload 9 /* inIndex */
            iload 8 /* inIndexLimit */
            if_icmpge 104
            iload 3 /* outRemaining */
            ifgt 9
       104: .line 293
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            iload 9 /* inIndex */
            aload 1 /* in */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
       105: .line 294
            aload 2 /* out */
            iload 10 /* outIndex */
            aload 2 /* out */
            invokevirtual java.nio.CharBuffer.arrayOffset:()I
            isub
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
       106: .line 295
            iload 3 /* outRemaining */
            ifne 108
            iload 9 /* inIndex */
            iload 8 /* inIndexLimit */
            if_icmpge 108
       107: .line 296
            getstatic java.nio.charset.CoderResult.OVERFLOW:Ljava/nio/charset/CoderResult;
            goto 109
       108: .line 297
      StackMap locals:
      StackMap stack:
            getstatic java.nio.charset.CoderResult.UNDERFLOW:Ljava/nio/charset/CoderResult;
       109: .line 295
      StackMap locals:
      StackMap stack: java.nio.charset.CoderResult
            areturn
        end local 10 // int outIndex
        end local 9 // int inIndex
        end local 8 // int inIndexLimit
        end local 7 // char[] cArr
        end local 6 // byte[] bArr
        end local 5 // int limit
        end local 4 // int pos
        end local 3 // int outRemaining
        end local 2 // java.nio.CharBuffer out
        end local 1 // java.nio.ByteBuffer in
        end local 0 // org.apache.tomcat.util.buf.Utf8Decoder this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0  110     0           this  Lorg/apache/tomcat/util/buf/Utf8Decoder;
            0  110     1             in  Ljava/nio/ByteBuffer;
            0  110     2            out  Ljava/nio/CharBuffer;
            1  110     3   outRemaining  I
            2  110     4            pos  I
            3  110     5          limit  I
            4  110     6           bArr  [B
            5  110     7           cArr  [C
            6  110     8   inIndexLimit  I
            7  110     9        inIndex  I
            8  110    10       outIndex  I
           10  102    11          jchar  I
           13   86    12           tail  I
           18   86    13  tailAvailable  I
           71   80    14              i  I
           73   78    15       nextByte  I
    MethodParameters:
      Name  Flags
      in    
      out   
}
SourceFile: "Utf8Decoder.java"