public class org.hsqldb.lib.ArrayCounter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hsqldb.lib.ArrayCounter
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hsqldb.lib.ArrayCounter this
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.hsqldb.lib.ArrayCounter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hsqldb/lib/ArrayCounter;

  public static int[] countSegments(int[], int, int, int, int, int);
    descriptor: ([IIIIII)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=6
        start local 0 // int[] array
        start local 1 // int elementCount
        start local 2 // int segments
        start local 3 // int interval
        start local 4 // int start
        start local 5 // int limit
         0: .line 62
            iload 2 /* segments */
            newarray 10
            astore 6 /* counts */
        start local 6 // int[] counts
         1: .line 66
            iload 3 /* interval */
            ifgt 3
         2: .line 67
            aload 6 /* counts */
            areturn
         3: .line 70
      StackMap locals: int[]
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
         4: goto 11
         5: .line 71
      StackMap locals: int[] int int int int int int[] top top int
      StackMap stack:
            aload 0 /* array */
            iload 9 /* i */
            iaload
            istore 8 /* element */
        start local 8 // int element
         6: .line 73
            iload 8 /* element */
            iload 4 /* start */
            if_icmplt 10
            iload 8 /* element */
            iload 5 /* limit */
            if_icmplt 8
         7: .line 74
            goto 10
         8: .line 77
      StackMap locals: int[] int int int int int int[] top int int
      StackMap stack:
            iload 8 /* element */
            iload 4 /* start */
            isub
            iload 3 /* interval */
            idiv
            istore 7 /* index */
        start local 7 // int index
         9: .line 79
            aload 6 /* counts */
            iload 7 /* index */
            dup2
            iaload
            iconst_1
            iadd
            iastore
        end local 7 // int index
        10: .line 70
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
        end local 8 // int element
      StackMap locals: int[] int int int int int int[] top top int
      StackMap stack:
        11: iload 9 /* i */
            iload 1 /* elementCount */
            if_icmplt 5
        end local 9 // int i
        12: .line 82
            aload 6 /* counts */
            areturn
        end local 6 // int[] counts
        end local 5 // int limit
        end local 4 // int start
        end local 3 // int interval
        end local 2 // int segments
        end local 1 // int elementCount
        end local 0 // int[] array
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0         array  [I
            0   13     1  elementCount  I
            0   13     2      segments  I
            0   13     3      interval  I
            0   13     4         start  I
            0   13     5         limit  I
            1   13     6        counts  [I
            9   10     7         index  I
            6   11     8       element  I
            4   12     9             i  I
    MethodParameters:
              Name  Flags
      array         
      elementCount  
      segments      
      interval      
      start         
      limit         

  public static int rank(int[], int, int, int, int, int);
    descriptor: ([IIIIII)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=6
        start local 0 // int[] array
        start local 1 // int elements
        start local 2 // int target
        start local 3 // int start
        start local 4 // int limit
        start local 5 // int margin
         0: .line 104
            iconst_0
            istore 6 /* elementCount */
        start local 6 // int elementCount
         1: .line 105
            iload 4 /* limit */
            istore 7 /* currentLimit */
        start local 7 // int currentLimit
         2: .line 108
      StackMap locals: int int
      StackMap stack:
            sipush 256
            iload 3 /* start */
            iload 7 /* currentLimit */
            invokestatic org.hsqldb.lib.ArrayCounter.calcInterval:(III)I
            istore 8 /* interval */
        start local 8 // int interval
         3: .line 109
            aload 0 /* array */
            iload 1 /* elements */
            sipush 256
            iload 8 /* interval */
         4: .line 110
            iload 3 /* start */
            iload 7 /* currentLimit */
         5: .line 109
            invokestatic org.hsqldb.lib.ArrayCounter.countSegments:([IIIIII)[I
            astore 9 /* counts */
        start local 9 // int[] counts
         6: .line 112
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         7: goto 12
         8: .line 113
      StackMap locals: int int[] int
      StackMap stack:
            iload 6 /* elementCount */
            aload 9 /* counts */
            iload 10 /* i */
            iaload
            iadd
            iload 2 /* target */
            if_icmpge 13
         9: .line 114
            iload 6 /* elementCount */
            aload 9 /* counts */
            iload 10 /* i */
            iaload
            iadd
            istore 6 /* elementCount */
        10: .line 115
            iload 3 /* start */
            iload 8 /* interval */
            iadd
            istore 3 /* start */
        11: .line 112
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 10 /* i */
            aload 9 /* counts */
            arraylength
            if_icmplt 8
        end local 10 // int i
        13: .line 121
      StackMap locals:
      StackMap stack:
            iload 6 /* elementCount */
            iload 5 /* margin */
            iadd
            iload 2 /* target */
            if_icmplt 15
        14: .line 122
            iload 3 /* start */
            ireturn
        15: .line 125
      StackMap locals:
      StackMap stack:
            iload 8 /* interval */
            iconst_1
            if_icmpgt 17
        16: .line 126
            iload 3 /* start */
            ireturn
        17: .line 129
      StackMap locals:
      StackMap stack:
            iload 3 /* start */
            iload 8 /* interval */
            iadd
            iload 4 /* limit */
            if_icmpge 18
            iload 3 /* start */
            iload 8 /* interval */
            iadd
            goto 19
        18: .line 130
      StackMap locals:
      StackMap stack:
            iload 4 /* limit */
        19: .line 129
      StackMap locals:
      StackMap stack: int
            istore 7 /* currentLimit */
        end local 9 // int[] counts
        end local 8 // int interval
        20: .line 107
            goto 2
        end local 7 // int currentLimit
        end local 6 // int elementCount
        end local 5 // int margin
        end local 4 // int limit
        end local 3 // int start
        end local 2 // int target
        end local 1 // int elements
        end local 0 // int[] array
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   21     0         array  [I
            0   21     1      elements  I
            0   21     2        target  I
            0   21     3         start  I
            0   21     4         limit  I
            0   21     5        margin  I
            1   21     6  elementCount  I
            2   21     7  currentLimit  I
            3   20     8      interval  I
            6   20     9        counts  [I
            7   13    10             i  I
    MethodParameters:
          Name  Flags
      array     
      elements  
      target    
      start     
      limit     
      margin    

  static int calcInterval(int, int, int);
    descriptor: (III)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // int segments
        start local 1 // int start
        start local 2 // int limit
         0: .line 141
            iload 2 /* limit */
            iload 1 /* start */
            isub
            istore 3 /* range */
        start local 3 // int range
         1: .line 143
            iload 3 /* range */
            ifgt 3
         2: .line 144
            iconst_0
            ireturn
         3: .line 147
      StackMap locals: int
      StackMap stack:
            iload 3 /* range */
            iload 0 /* segments */
            irem
            ifne 4
            iconst_0
            goto 5
         4: .line 148
      StackMap locals:
      StackMap stack:
            iconst_1
         5: .line 147
      StackMap locals:
      StackMap stack: int
            istore 4 /* partSegment */
        start local 4 // int partSegment
         6: .line 150
            iload 3 /* range */
            iload 0 /* segments */
            idiv
            iload 4 /* partSegment */
            iadd
            ireturn
        end local 4 // int partSegment
        end local 3 // int range
        end local 2 // int limit
        end local 1 // int start
        end local 0 // int segments
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0     segments  I
            0    7     1        start  I
            0    7     2        limit  I
            1    7     3        range  I
            6    7     4  partSegment  I
    MethodParameters:
          Name  Flags
      segments  
      start     
      limit     
}
SourceFile: "ArrayCounter.java"