-------------------- <Sort: void <init>()> (live-var) --------------------
[0@L1] invokespecial %this.<java.lang.Object: void <init>()>(); []
[1@L1] return; []

-------------------- <Sort: void sort(java.lang.Comparable[])> (live-var) --------------------
[0@L4] temp$0 = a.length; [a, temp$0]
[1@L4] aux = newarray java.lang.Comparable[temp$0]; [a, aux]
[2@L5] temp$1 = a.length; [a, aux, temp$1]
[3@L5] %intconst0 = 0; [%intconst0, a, aux, temp$1]
[4@L5] %intconst1 = 1; [%intconst0, %intconst1, a, aux, temp$1]
[5@L5] temp$2 = temp$1 - %intconst1; [%intconst0, a, aux, temp$2]
[6@L5] invokestatic <Sort: void mergeSort(java.lang.Comparable[],java.lang.Comparable[],int,int)>(a, aux, %intconst0, temp$2); []
[7@L5] return; []

-------------------- <Sort: void mergeSort(java.lang.Comparable[],java.lang.Comparable[],int,int)> (live-var) --------------------
[0@L9] if (hi <= lo) goto 2; [a, aux, hi, lo]
[1@L9] goto 4; [a, aux, hi, lo]
[2@L9] nop; []
[3@L10] return; []
[4@L10] nop; [a, aux, hi, lo]
[5@L11] temp$1 = hi - lo; [a, aux, hi, lo, temp$1]
[6@L11] %intconst0 = 2; [%intconst0, a, aux, hi, lo, temp$1]
[7@L11] temp$2 = temp$1 / %intconst0; [a, aux, hi, lo, temp$2]
[8@L11] mid = lo + temp$2; [a, aux, hi, lo, mid]
[9@L12] invokestatic <Sort: void mergeSort(java.lang.Comparable[],java.lang.Comparable[],int,int)>(a, aux, lo, mid); [a, aux, hi, lo, mid]
[10@L13] %intconst1 = 1; [%intconst1, a, aux, hi, lo, mid]
[11@L13] temp$4 = mid + %intconst1; [a, aux, hi, lo, mid, temp$4]
[12@L13] invokestatic <Sort: void mergeSort(java.lang.Comparable[],java.lang.Comparable[],int,int)>(a, aux, temp$4, hi); [a, aux, hi, lo, mid]
[13@L14] invokestatic <Sort: void merge(java.lang.Comparable[],java.lang.Comparable[],int,int,int)>(a, aux, lo, mid, hi); []
[14@L14] return; []

-------------------- <Sort: void merge(java.lang.Comparable[],java.lang.Comparable[],int,int,int)> (live-var) --------------------
[0@L18] k = lo; [%intconst0, a, aux, hi, k, lo, mid]
[1@L18] nop; [%intconst0, a, aux, hi, k, lo, mid]
[2@L18] if (k <= hi) goto 4; [%intconst0, a, aux, hi, k, lo, mid]
[3@L18] goto 11; [%intconst0, a, aux, hi, lo, mid]
[4@L18] nop; [a, aux, hi, k, lo, mid]
[5@L19] temp$4 = a[k]; [a, aux, hi, k, lo, mid, temp$4]
[6@L19] aux[k] = temp$4; [a, aux, hi, k, lo, mid]
[7@L19] nop; [a, aux, hi, k, lo, mid]
[8@L18] %intconst0 = 1; [%intconst0, a, aux, hi, k, lo, mid]
[9@L18] k = k + %intconst0; [%intconst0, a, aux, hi, k, lo, mid]
[10@L18] goto 1; [%intconst0, a, aux, hi, k, lo, mid]
[11@L18] nop; [%intconst0, a, aux, hi, lo, mid]
[12@L21] i = lo; [%intconst0, a, aux, hi, i, lo, mid]
[13@L21] j = mid + %intconst0; [%intconst0, a, aux, hi, i, j, lo, mid]
[14@L22] k = lo; [%intconst0, a, aux, hi, i, j, k, mid]
[15@L22] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[16@L22] if (k <= hi) goto 18; [%intconst0, a, aux, hi, i, j, k, mid]
[17@L22] goto 60; []
[18@L22] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[19@L23] if (i > mid) goto 21; [%intconst0, a, aux, hi, i, j, k, mid]
[20@L23] goto 27; [%intconst0, a, aux, hi, i, j, k, mid]
[21@L23] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[22@L24] temp$11 = j; [%intconst0, a, aux, hi, i, k, mid, temp$11]
[23@L24] j = temp$11 + %intconst0; [%intconst0, a, aux, hi, i, j, k, mid, temp$11]
[24@L24] temp$14 = aux[temp$11]; [%intconst0, a, aux, hi, i, j, k, mid, temp$14]
[25@L24] a[k] = temp$14; [%intconst0, a, aux, hi, i, j, k, mid]
[26@L23] goto 56; [%intconst0, a, aux, hi, i, j, k, mid]
[27@L23] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[28@L25] if (j > hi) goto 30; [%intconst0, a, aux, hi, i, j, k, mid]
[29@L25] goto 36; [%intconst0, a, aux, hi, i, j, k, mid]
[30@L25] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[31@L26] temp$18 = i; [%intconst0, a, aux, hi, j, k, mid, temp$18]
[32@L26] i = temp$18 + %intconst0; [%intconst0, a, aux, hi, i, j, k, mid, temp$18]
[33@L26] temp$21 = aux[temp$18]; [%intconst0, a, aux, hi, i, j, k, mid, temp$21]
[34@L26] a[k] = temp$21; [%intconst0, a, aux, hi, i, j, k, mid]
[35@L25] goto 55; [%intconst0, a, aux, hi, i, j, k, mid]
[36@L25] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[37@L27] temp$24 = aux[j]; [%intconst0, a, aux, hi, i, j, k, mid, temp$24]
[38@L27] temp$27 = aux[i]; [%intconst0, a, aux, hi, i, j, k, mid, temp$24, temp$27]
[39@L27] temp$28 = invokestatic <Sort: boolean less(java.lang.Comparable,java.lang.Comparable)>(temp$24, temp$27); [%intconst0, a, aux, hi, i, j, k, mid, temp$28]
[40@L27] %intconst1 = 0; [%intconst0, %intconst1, a, aux, hi, i, j, k, mid, temp$28]
[41@L27] if (temp$28 == %intconst1) goto 49; [%intconst0, a, aux, hi, i, j, k, mid]
[42@L27] goto 43; [%intconst0, a, aux, hi, i, j, k, mid]
[43@L27] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[44@L28] temp$32 = j; [%intconst0, a, aux, hi, i, k, mid, temp$32]
[45@L28] j = temp$32 + %intconst0; [%intconst0, a, aux, hi, i, j, k, mid, temp$32]
[46@L28] temp$35 = aux[temp$32]; [%intconst0, a, aux, hi, i, j, k, mid, temp$35]
[47@L28] a[k] = temp$35; [%intconst0, a, aux, hi, i, j, k, mid]
[48@L27] goto 54; [%intconst0, a, aux, hi, i, j, k, mid]
[49@L27] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[50@L30] temp$39 = i; [%intconst0, a, aux, hi, j, k, mid, temp$39]
[51@L30] i = temp$39 + %intconst0; [%intconst0, a, aux, hi, i, j, k, mid, temp$39]
[52@L30] temp$42 = aux[temp$39]; [%intconst0, a, aux, hi, i, j, k, mid, temp$42]
[53@L30] a[k] = temp$42; [%intconst0, a, aux, hi, i, j, k, mid]
[54@L30] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[55@L30] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[56@L30] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[57@L30] nop; [%intconst0, a, aux, hi, i, j, k, mid]
[58@L22] k = k + %intconst0; [%intconst0, a, aux, hi, i, j, k, mid]
[59@L22] goto 15; [%intconst0, a, aux, hi, i, j, k, mid]
[60@L22] nop; []
[61@L22] return; []

-------------------- <Sort: boolean less(java.lang.Comparable,java.lang.Comparable)> (live-var) --------------------
[0@L35] temp$0 = invokeinterface v.<java.lang.Comparable: int compareTo(java.lang.Object)>(w); [temp$0]
[1@L35] %intconst0 = 0; [%intconst0, temp$0]
[2@L35] if (temp$0 < %intconst0) goto 7; []
[3@L35] goto 4; []
[4@L35] nop; []
[5@L35] temp$1 = 0; [temp$1]
[6@L35] goto 9; [temp$1]
[7@L35] nop; []
[8@L35] temp$1 = 1; [temp$1]
[9@L35] nop; [temp$1]
[10@L35] return temp$1; []

