final class com.sun.marlin.MergeSort
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.marlin.MergeSort
  super_class: java.lang.Object
{
  public static final int INSERTION_SORT_THRESHOLD;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 14

  static void mergeSortNoCopy(int[], int[], int[], int[], int, int);
    descriptor: ([I[I[I[III)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=9, args_size=6
        start local 0 // int[] x
        start local 1 // int[] y
        start local 2 // int[] auxX
        start local 3 // int[] auxY
        start local 4 // int toIndex
        start local 5 // int insertionSortIndex
         0: .line 49
            iload 4 /* toIndex */
            aload 0 /* x */
            arraylength
            if_icmpgt 2
            iload 4 /* toIndex */
            aload 1 /* y */
            arraylength
            if_icmpgt 2
         1: .line 50
            iload 4 /* toIndex */
            aload 2 /* auxX */
            arraylength
            if_icmpgt 2
            iload 4 /* toIndex */
            aload 3 /* auxY */
            arraylength
            if_icmple 5
         2: .line 52
      StackMap locals:
      StackMap stack:
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            new java.lang.StringBuilder
            dup
            ldc "bad arguments: toIndex="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 53
            iload 4 /* toIndex */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 52
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 58
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            aload 1 /* y */
            aload 0 /* x */
            aload 2 /* auxX */
            aload 1 /* y */
            aload 3 /* auxY */
            iload 5 /* insertionSortIndex */
            iload 4 /* toIndex */
            invokestatic com.sun.marlin.MergeSort.mergeSort:([I[I[I[I[I[III)V
         6: .line 62
            iload 5 /* insertionSortIndex */
            ifeq 8
         7: .line 63
            aload 2 /* auxX */
            iload 5 /* insertionSortIndex */
            iconst_1
            isub
            iaload
            aload 2 /* auxX */
            iload 5 /* insertionSortIndex */
            iaload
            if_icmpgt 11
         8: .line 67
      StackMap locals:
      StackMap stack:
            aload 2 /* auxX */
            iconst_0
            aload 0 /* x */
            iconst_0
            iload 4 /* toIndex */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 68
            aload 3 /* auxY */
            iconst_0
            aload 1 /* y */
            iconst_0
            iload 4 /* toIndex */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 69
            return
        11: .line 72
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        12: iconst_0
            istore 7 /* p */
        start local 7 // int p
        13: iload 5 /* insertionSortIndex */
            istore 8 /* q */
        start local 8 // int q
        14: goto 25
        15: .line 73
      StackMap locals: int int int
      StackMap stack:
            iload 8 /* q */
            iload 4 /* toIndex */
            if_icmpge 17
            iload 7 /* p */
            iload 5 /* insertionSortIndex */
            if_icmpge 21
        16: .line 74
            aload 2 /* auxX */
            iload 7 /* p */
            iaload
            aload 2 /* auxX */
            iload 8 /* q */
            iaload
            if_icmpgt 21
        17: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            iload 6 /* i */
            aload 2 /* auxX */
            iload 7 /* p */
            iaload
            iastore
        18: .line 76
            aload 1 /* y */
            iload 6 /* i */
            aload 3 /* auxY */
            iload 7 /* p */
            iaload
            iastore
        19: .line 77
            iinc 7 /* p */ 1
        20: .line 78
            goto 24
        21: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            iload 6 /* i */
            aload 2 /* auxX */
            iload 8 /* q */
            iaload
            iastore
        22: .line 80
            aload 1 /* y */
            iload 6 /* i */
            aload 3 /* auxY */
            iload 8 /* q */
            iaload
            iastore
        23: .line 81
            iinc 8 /* q */ 1
        24: .line 72
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        25: iload 6 /* i */
            iload 4 /* toIndex */
            if_icmplt 15
        end local 8 // int q
        end local 7 // int p
        end local 6 // int i
        26: .line 84
            return
        end local 5 // int insertionSortIndex
        end local 4 // int toIndex
        end local 3 // int[] auxY
        end local 2 // int[] auxX
        end local 1 // int[] y
        end local 0 // int[] x
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   27     0                   x  [I
            0   27     1                   y  [I
            0   27     2                auxX  [I
            0   27     3                auxY  [I
            0   27     4             toIndex  I
            0   27     5  insertionSortIndex  I
           12   26     6                   i  I
           13   26     7                   p  I
           14   26     8                   q  I
    MethodParameters:
                    Name  Flags
      x                   final
      y                   final
      auxX                final
      auxY                final
      toIndex             final
      insertionSortIndex  final

  private static void mergeSort(int[], int[], int[], int[], int[], int[], int, int);
    descriptor: ([I[I[I[I[I[III)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=13, args_size=8
        start local 0 // int[] refX
        start local 1 // int[] refY
        start local 2 // int[] srcX
        start local 3 // int[] dstX
        start local 4 // int[] srcY
        start local 5 // int[] dstY
        start local 6 // int low
        start local 7 // int high
         0: .line 97
            iload 7 /* high */
            iload 6 /* low */
            isub
            istore 8 /* length */
        start local 8 // int length
         1: .line 103
            iload 8 /* length */
            bipush 14
            if_icmpgt 20
         2: .line 105
            aload 3 /* dstX */
            iload 6 /* low */
            aload 0 /* refX */
            iload 6 /* low */
            iaload
            iastore
         3: .line 106
            aload 5 /* dstY */
            iload 6 /* low */
            aload 1 /* refY */
            iload 6 /* low */
            iaload
            iastore
         4: .line 108
            iload 6 /* low */
            iconst_1
            iadd
            istore 9 /* i */
        start local 9 // int i
         5: iload 6 /* low */
            istore 10 /* j */
        start local 10 // int j
         6: goto 18
         7: .line 109
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* refX */
            iload 9 /* i */
            iaload
            istore 11 /* x */
        start local 11 // int x
         8: .line 110
            aload 1 /* refY */
            iload 9 /* i */
            iaload
            istore 12 /* y */
        start local 12 // int y
         9: .line 112
            goto 14
        10: .line 114
      StackMap locals: int int
      StackMap stack:
            aload 3 /* dstX */
            iload 10 /* j */
            iconst_1
            iadd
            aload 3 /* dstX */
            iload 10 /* j */
            iaload
            iastore
        11: .line 115
            aload 5 /* dstY */
            iload 10 /* j */
            iconst_1
            iadd
            aload 5 /* dstY */
            iload 10 /* j */
            iaload
            iastore
        12: .line 116
            iload 10 /* j */
            iinc 10 /* j */ -1
            iload 6 /* low */
            if_icmpne 14
        13: .line 117
            goto 15
        14: .line 112
      StackMap locals:
      StackMap stack:
            aload 3 /* dstX */
            iload 10 /* j */
            iaload
            iload 11 /* x */
            if_icmpgt 10
        15: .line 120
      StackMap locals:
      StackMap stack:
            aload 3 /* dstX */
            iload 10 /* j */
            iconst_1
            iadd
            iload 11 /* x */
            iastore
        16: .line 121
            aload 5 /* dstY */
            iload 10 /* j */
            iconst_1
            iadd
            iload 12 /* y */
            iastore
        17: .line 108
            iload 9 /* i */
            iinc 9 /* i */ 1
            istore 10 /* j */
        end local 12 // int y
        end local 11 // int x
      StackMap locals:
      StackMap stack:
        18: iload 9 /* i */
            iload 7 /* high */
            if_icmplt 7
        end local 10 // int j
        end local 9 // int i
        19: .line 123
            return
        20: .line 130
      StackMap locals:
      StackMap stack:
            iload 6 /* low */
            iload 7 /* high */
            iadd
            iconst_1
            ishr
            istore 9 /* mid */
        start local 9 // int mid
        21: .line 132
            aload 0 /* refX */
            aload 1 /* refY */
            aload 3 /* dstX */
            aload 2 /* srcX */
            aload 5 /* dstY */
            aload 4 /* srcY */
            iload 6 /* low */
            iload 9 /* mid */
            invokestatic com.sun.marlin.MergeSort.mergeSort:([I[I[I[I[I[III)V
        22: .line 133
            aload 0 /* refX */
            aload 1 /* refY */
            aload 3 /* dstX */
            aload 2 /* srcX */
            aload 5 /* dstY */
            aload 4 /* srcY */
            iload 9 /* mid */
            iload 7 /* high */
            invokestatic com.sun.marlin.MergeSort.mergeSort:([I[I[I[I[I[III)V
        23: .line 136
            aload 2 /* srcX */
            iload 7 /* high */
            iconst_1
            isub
            iaload
            aload 2 /* srcX */
            iload 6 /* low */
            iaload
            if_icmpgt 34
        24: .line 138
            iload 9 /* mid */
            iload 6 /* low */
            isub
            istore 10 /* left */
        start local 10 // int left
        25: .line 139
            iload 7 /* high */
            iload 9 /* mid */
            isub
            istore 11 /* right */
        start local 11 // int right
        26: .line 140
            iload 10 /* left */
            iload 11 /* right */
            if_icmpeq 27
            iconst_1
            goto 28
      StackMap locals: int int int
      StackMap stack:
        27: iconst_0
      StackMap locals:
      StackMap stack: int
        28: istore 12 /* off */
        start local 12 // int off
        29: .line 142
            aload 2 /* srcX */
            iload 6 /* low */
            aload 3 /* dstX */
            iload 9 /* mid */
            iload 12 /* off */
            iadd
            iload 10 /* left */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        30: .line 143
            aload 2 /* srcX */
            iload 9 /* mid */
            aload 3 /* dstX */
            iload 6 /* low */
            iload 11 /* right */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        31: .line 144
            aload 4 /* srcY */
            iload 6 /* low */
            aload 5 /* dstY */
            iload 9 /* mid */
            iload 12 /* off */
            iadd
            iload 10 /* left */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        32: .line 145
            aload 4 /* srcY */
            iload 9 /* mid */
            aload 5 /* dstY */
            iload 6 /* low */
            iload 11 /* right */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        33: .line 146
            return
        end local 12 // int off
        end local 11 // int right
        end local 10 // int left
        34: .line 151
      StackMap locals:
      StackMap stack:
            aload 2 /* srcX */
            iload 9 /* mid */
            iconst_1
            isub
            iaload
            aload 2 /* srcX */
            iload 9 /* mid */
            iaload
            if_icmpgt 38
        35: .line 153
            aload 2 /* srcX */
            iload 6 /* low */
            aload 3 /* dstX */
            iload 6 /* low */
            iload 8 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        36: .line 154
            aload 4 /* srcY */
            iload 6 /* low */
            aload 5 /* dstY */
            iload 6 /* low */
            iload 8 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        37: .line 155
            return
        38: .line 159
      StackMap locals:
      StackMap stack:
            iload 6 /* low */
            istore 10 /* i */
        start local 10 // int i
        39: iload 6 /* low */
            istore 11 /* p */
        start local 11 // int p
        40: iload 9 /* mid */
            istore 12 /* q */
        start local 12 // int q
        41: goto 51
        42: .line 160
      StackMap locals: int int int
      StackMap stack:
            iload 12 /* q */
            iload 7 /* high */
            if_icmpge 43
            iload 11 /* p */
            iload 9 /* mid */
            if_icmpge 47
            aload 2 /* srcX */
            iload 11 /* p */
            iaload
            aload 2 /* srcX */
            iload 12 /* q */
            iaload
            if_icmpgt 47
        43: .line 161
      StackMap locals:
      StackMap stack:
            aload 3 /* dstX */
            iload 10 /* i */
            aload 2 /* srcX */
            iload 11 /* p */
            iaload
            iastore
        44: .line 162
            aload 5 /* dstY */
            iload 10 /* i */
            aload 4 /* srcY */
            iload 11 /* p */
            iaload
            iastore
        45: .line 163
            iinc 11 /* p */ 1
        46: .line 164
            goto 50
        47: .line 165
      StackMap locals:
      StackMap stack:
            aload 3 /* dstX */
            iload 10 /* i */
            aload 2 /* srcX */
            iload 12 /* q */
            iaload
            iastore
        48: .line 166
            aload 5 /* dstY */
            iload 10 /* i */
            aload 4 /* srcY */
            iload 12 /* q */
            iaload
            iastore
        49: .line 167
            iinc 12 /* q */ 1
        50: .line 159
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        51: iload 10 /* i */
            iload 7 /* high */
            if_icmplt 42
        end local 12 // int q
        end local 11 // int p
        end local 10 // int i
        52: .line 170
            return
        end local 9 // int mid
        end local 8 // int length
        end local 7 // int high
        end local 6 // int low
        end local 5 // int[] dstY
        end local 4 // int[] srcY
        end local 3 // int[] dstX
        end local 2 // int[] srcX
        end local 1 // int[] refY
        end local 0 // int[] refX
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   53     0    refX  [I
            0   53     1    refY  [I
            0   53     2    srcX  [I
            0   53     3    dstX  [I
            0   53     4    srcY  [I
            0   53     5    dstY  [I
            0   53     6     low  I
            0   53     7    high  I
            1   53     8  length  I
            5   19     9       i  I
            6   19    10       j  I
            8   18    11       x  I
            9   18    12       y  I
           21   53     9     mid  I
           25   34    10    left  I
           26   34    11   right  I
           29   34    12     off  I
           39   52    10       i  I
           40   52    11       p  I
           41   52    12       q  I
    MethodParameters:
      Name  Flags
      refX  final
      refY  final
      srcX  final
      dstX  final
      srcY  final
      dstY  final
      low   final
      high  final

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.marlin.MergeSort this
         0: .line 172
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 173
            return
        end local 0 // com.sun.marlin.MergeSort this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/marlin/MergeSort;
}
SourceFile: "MergeSort.java"