class sun.font.CMap$CMapFormat4 extends sun.font.CMap
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.font.CMap$CMapFormat4
  super_class: sun.font.CMap
{
  int segCount;
    descriptor: I
    flags: (0x0000) 

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

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

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

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

  short[] idDelta;
    descriptor: [S
    flags: (0x0000) 

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

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

  void <init>(java.nio.ByteBuffer, int, char[]);
    descriptor: (Ljava/nio/ByteBuffer;I[C)V
    flags: (0x0000) 
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // sun.font.CMap$CMapFormat4 this
        start local 1 // java.nio.ByteBuffer bbuffer
        start local 2 // int offset
        start local 3 // char[] xlat
         0: .line 471
            aload 0 /* this */
            invokespecial sun.font.CMap.<init>:()V
         1: .line 473
            aload 0 /* this */
            aload 3 /* xlat */
            putfield sun.font.CMap$CMapFormat4.xlat:[C
         2: .line 475
            aload 1 /* bbuffer */
            iload 2 /* offset */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
            pop
         3: .line 476
            aload 1 /* bbuffer */
            invokevirtual java.nio.ByteBuffer.asCharBuffer:()Ljava/nio/CharBuffer;
            astore 4 /* buffer */
        start local 4 // java.nio.CharBuffer buffer
         4: .line 477
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            pop
         5: .line 478
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            istore 5 /* subtableLength */
        start local 5 // int subtableLength
         6: .line 487
            iload 2 /* offset */
            iload 5 /* subtableLength */
            iadd
            aload 1 /* bbuffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            if_icmple 8
         7: .line 488
            aload 1 /* bbuffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            iload 2 /* offset */
            isub
            istore 5 /* subtableLength */
         8: .line 490
      StackMap locals: sun.font.CMap$CMapFormat4 java.nio.ByteBuffer int char[] java.nio.CharBuffer int
      StackMap stack:
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            pop
         9: .line 491
            aload 0 /* this */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            iconst_2
            idiv
            putfield sun.font.CMap$CMapFormat4.segCount:I
        10: .line 492
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            pop
        11: .line 493
            aload 0 /* this */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            putfield sun.font.CMap$CMapFormat4.entrySelector:I
        12: .line 494
            aload 0 /* this */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            iconst_2
            idiv
            putfield sun.font.CMap$CMapFormat4.rangeShift:I
        13: .line 495
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            newarray 5
            putfield sun.font.CMap$CMapFormat4.startCount:[C
        14: .line 496
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            newarray 5
            putfield sun.font.CMap$CMapFormat4.endCount:[C
        15: .line 497
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            newarray 9
            putfield sun.font.CMap$CMapFormat4.idDelta:[S
        16: .line 498
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            newarray 5
            putfield sun.font.CMap$CMapFormat4.idRangeOffset:[C
        17: .line 500
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        18: goto 21
        19: .line 501
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.endCount:[C
            iload 6 /* i */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            castore
        20: .line 500
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 6 /* i */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            if_icmplt 19
        end local 6 // int i
        22: .line 503
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            pop
        23: .line 504
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        24: goto 27
        25: .line 505
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.startCount:[C
            iload 6 /* i */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            castore
        26: .line 504
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 6 /* i */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            if_icmplt 25
        end local 6 // int i
        28: .line 508
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        29: goto 32
        30: .line 509
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.idDelta:[S
            iload 6 /* i */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            i2s
            sastore
        31: .line 508
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 6 /* i */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            if_icmplt 30
        end local 6 // int i
        33: .line 512
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        34: goto 38
        35: .line 513
      StackMap locals:
      StackMap stack:
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            istore 7 /* ctmp */
        start local 7 // char ctmp
        36: .line 514
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.idRangeOffset:[C
            iload 6 /* i */
            iload 7 /* ctmp */
            iconst_1
            ishr
            ldc 65535
            iand
            i2c
            castore
        end local 7 // char ctmp
        37: .line 512
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        38: iload 6 /* i */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            if_icmplt 35
        end local 6 // int i
        39: .line 519
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            bipush 8
            imul
            bipush 16
            iadd
            iconst_2
            idiv
            istore 6 /* pos */
        start local 6 // int pos
        40: .line 520
            aload 4 /* buffer */
            iload 6 /* pos */
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/CharBuffer;
            pop
        41: .line 521
            iload 5 /* subtableLength */
            iconst_2
            idiv
            iload 6 /* pos */
            isub
            istore 7 /* numGlyphIds */
        start local 7 // int numGlyphIds
        42: .line 522
            aload 0 /* this */
            iload 7 /* numGlyphIds */
            newarray 5
            putfield sun.font.CMap$CMapFormat4.glyphIds:[C
        43: .line 523
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        44: goto 47
        45: .line 524
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.glyphIds:[C
            iload 8 /* i */
            aload 4 /* buffer */
            invokevirtual java.nio.CharBuffer.get:()C
            castore
        46: .line 523
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        47: iload 8 /* i */
            iload 7 /* numGlyphIds */
            if_icmplt 45
        end local 8 // int i
        48: .line 542
            return
        end local 7 // int numGlyphIds
        end local 6 // int pos
        end local 5 // int subtableLength
        end local 4 // java.nio.CharBuffer buffer
        end local 3 // char[] xlat
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer bbuffer
        end local 0 // sun.font.CMap$CMapFormat4 this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   49     0            this  Lsun/font/CMap$CMapFormat4;
            0   49     1         bbuffer  Ljava/nio/ByteBuffer;
            0   49     2          offset  I
            0   49     3            xlat  [C
            4   49     4          buffer  Ljava/nio/CharBuffer;
            6   49     5  subtableLength  I
           18   22     6               i  I
           24   28     6               i  I
           29   33     6               i  I
           34   39     6               i  I
           36   37     7            ctmp  C
           40   49     6             pos  I
           42   49     7     numGlyphIds  I
           44   48     8               i  I
    MethodParameters:
         Name  Flags
      bbuffer  
      offset   
      xlat     

  char getGlyph(int);
    descriptor: (I)C
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // sun.font.CMap$CMapFormat4 this
        start local 1 // int charCode
         0: .line 546
            iload 1 /* charCode */
            istore 2 /* origCharCode */
        start local 2 // int origCharCode
         1: .line 547
            iconst_0
            istore 3 /* index */
        start local 3 // int index
         2: .line 548
            iconst_0
            istore 4 /* glyphCode */
        start local 4 // char glyphCode
         3: .line 550
            aload 0 /* this */
            iload 1 /* charCode */
            iconst_1
            invokevirtual sun.font.CMap$CMapFormat4.getControlCodeGlyph:(IZ)I
            istore 5 /* controlGlyph */
        start local 5 // int controlGlyph
         4: .line 551
            iload 5 /* controlGlyph */
            iflt 6
         5: .line 552
            iload 5 /* controlGlyph */
            i2c
            ireturn
         6: .line 562
      StackMap locals: sun.font.CMap$CMapFormat4 int int int int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.xlat:[C
            ifnull 8
         7: .line 563
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.xlat:[C
            iload 1 /* charCode */
            caload
            istore 1 /* charCode */
         8: .line 584
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* left */
        start local 6 // int left
         9: aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.startCount:[C
            arraylength
            istore 7 /* right */
        start local 7 // int right
        10: .line 585
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.startCount:[C
            arraylength
            iconst_1
            ishr
            istore 3 /* index */
        11: .line 586
            goto 17
        12: .line 587
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.endCount:[C
            iload 3 /* index */
            caload
            iload 1 /* charCode */
            if_icmpge 15
        13: .line 588
            iload 3 /* index */
            iconst_1
            iadd
            istore 6 /* left */
        14: .line 589
            goto 16
        15: .line 590
      StackMap locals:
      StackMap stack:
            iload 3 /* index */
            istore 7 /* right */
        16: .line 592
      StackMap locals:
      StackMap stack:
            iload 6 /* left */
            iload 7 /* right */
            iadd
            iconst_1
            ishr
            istore 3 /* index */
        17: .line 586
      StackMap locals:
      StackMap stack:
            iload 6 /* left */
            iload 7 /* right */
            if_icmplt 12
        18: .line 595
            iload 1 /* charCode */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.startCount:[C
            iload 3 /* index */
            caload
            if_icmplt 29
            iload 1 /* charCode */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.endCount:[C
            iload 3 /* index */
            caload
            if_icmpgt 29
        19: .line 596
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.idRangeOffset:[C
            iload 3 /* index */
            caload
            istore 8 /* rangeOffset */
        start local 8 // int rangeOffset
        20: .line 598
            iload 8 /* rangeOffset */
            ifne 23
        21: .line 599
            iload 1 /* charCode */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.idDelta:[S
            iload 3 /* index */
            saload
            iadd
            i2c
            istore 4 /* glyphCode */
        22: .line 600
            goto 29
        23: .line 610
      StackMap locals: int
      StackMap stack:
            iload 8 /* rangeOffset */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.segCount:I
            isub
            iload 3 /* index */
            iadd
        24: .line 611
            iload 1 /* charCode */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.startCount:[C
            iload 3 /* index */
            caload
            isub
        25: .line 610
            iadd
            istore 9 /* glyphIDIndex */
        start local 9 // int glyphIDIndex
        26: .line 612
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.glyphIds:[C
            iload 9 /* glyphIDIndex */
            caload
            istore 4 /* glyphCode */
        27: .line 613
            iload 4 /* glyphCode */
            ifeq 29
        28: .line 614
            iload 4 /* glyphCode */
            aload 0 /* this */
            getfield sun.font.CMap$CMapFormat4.idDelta:[S
            iload 3 /* index */
            saload
            iadd
            i2c
            istore 4 /* glyphCode */
        end local 9 // int glyphIDIndex
        end local 8 // int rangeOffset
        29: .line 618
      StackMap locals:
      StackMap stack:
            iload 4 /* glyphCode */
            ifne 31
        30: .line 619
            aload 0 /* this */
            iload 2 /* origCharCode */
            invokevirtual sun.font.CMap$CMapFormat4.getFormatCharGlyph:(I)C
            istore 4 /* glyphCode */
        31: .line 621
      StackMap locals:
      StackMap stack:
            iload 4 /* glyphCode */
            ireturn
        end local 7 // int right
        end local 6 // int left
        end local 5 // int controlGlyph
        end local 4 // char glyphCode
        end local 3 // int index
        end local 2 // int origCharCode
        end local 1 // int charCode
        end local 0 // sun.font.CMap$CMapFormat4 this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   32     0          this  Lsun/font/CMap$CMapFormat4;
            0   32     1      charCode  I
            1   32     2  origCharCode  I
            2   32     3         index  I
            3   32     4     glyphCode  C
            4   32     5  controlGlyph  I
            9   32     6          left  I
           10   32     7         right  I
           20   29     8   rangeOffset  I
           26   29     9  glyphIDIndex  I
    MethodParameters:
          Name  Flags
      charCode  
}
SourceFile: "CMap.java"
NestHost: sun.font.CMap
InnerClasses:
  CMapFormat4 = sun.font.CMap$CMapFormat4 of sun.font.CMap