final class com.sun.marlin.DCurve
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.marlin.DCurve
  super_class: java.lang.Object
{
  double ax;
    descriptor: D
    flags: (0x0000) 

  double ay;
    descriptor: D
    flags: (0x0000) 

  double bx;
    descriptor: D
    flags: (0x0000) 

  double by;
    descriptor: D
    flags: (0x0000) 

  double cx;
    descriptor: D
    flags: (0x0000) 

  double cy;
    descriptor: D
    flags: (0x0000) 

  double dx;
    descriptor: D
    flags: (0x0000) 

  double dy;
    descriptor: D
    flags: (0x0000) 

  double dax;
    descriptor: D
    flags: (0x0000) 

  double day;
    descriptor: D
    flags: (0x0000) 

  double dbx;
    descriptor: D
    flags: (0x0000) 

  double dby;
    descriptor: D
    flags: (0x0000) 

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 28
            ldc Lcom/sun/marlin/DCurve;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.sun.marlin.DCurve.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.marlin.DCurve this
         0: .line 33
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 34
            return
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/marlin/DCurve;

  void set(double[], int);
    descriptor: ([DI)V
    flags: (0x0000) 
    Code:
      stack=17, locals=3, args_size=3
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] points
        start local 2 // int type
         0: .line 38
            iload 2 /* type */
            bipush 8
            if_icmpne 7
         1: .line 39
            aload 0 /* this */
            aload 1 /* points */
            iconst_0
            daload
            aload 1 /* points */
            iconst_1
            daload
         2: .line 40
            aload 1 /* points */
            iconst_2
            daload
            aload 1 /* points */
            iconst_3
            daload
         3: .line 41
            aload 1 /* points */
            iconst_4
            daload
            aload 1 /* points */
            iconst_5
            daload
         4: .line 42
            aload 1 /* points */
            bipush 6
            daload
            aload 1 /* points */
            bipush 7
            daload
         5: .line 39
            invokevirtual com.sun.marlin.DCurve.set:(DDDDDDDD)V
         6: .line 43
            goto 16
      StackMap locals:
      StackMap stack:
         7: iload 2 /* type */
            iconst_4
            if_icmpne 12
         8: .line 44
            aload 0 /* this */
            aload 1 /* points */
            iconst_0
            daload
            aload 1 /* points */
            iconst_1
            daload
         9: .line 45
            aload 1 /* points */
            iconst_2
            daload
            aload 1 /* points */
            iconst_3
            daload
        10: .line 44
            invokevirtual com.sun.marlin.DCurve.set:(DDDD)V
        11: .line 46
            goto 16
        12: .line 47
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* points */
            iconst_0
            daload
            aload 1 /* points */
            iconst_1
            daload
        13: .line 48
            aload 1 /* points */
            iconst_2
            daload
            aload 1 /* points */
            iconst_3
            daload
        14: .line 49
            aload 1 /* points */
            iconst_4
            daload
            aload 1 /* points */
            iconst_5
            daload
        15: .line 47
            invokevirtual com.sun.marlin.DCurve.set:(DDDDDD)V
        16: .line 51
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int type
        end local 1 // double[] points
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Lcom/sun/marlin/DCurve;
            0   17     1  points  [D
            0   17     2    type  I
    MethodParameters:
        Name  Flags
      points  final
      type    final

  void set(double, double, double, double, double, double, double, double);
    descriptor: (DDDDDDDD)V
    flags: (0x0000) 
    Code:
      stack=6, locals=25, args_size=9
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double x1
        start local 3 // double y1
        start local 5 // double x2
        start local 7 // double y2
        start local 9 // double x3
        start local 11 // double y3
        start local 13 // double x4
        start local 15 // double y4
         0: .line 58
            ldc 3.0
            dload 9 /* x3 */
            dload 5 /* x2 */
            dsub
            dmul
            dstore 17 /* dx32 */
        start local 17 // double dx32
         1: .line 59
            ldc 3.0
            dload 11 /* y3 */
            dload 7 /* y2 */
            dsub
            dmul
            dstore 19 /* dy32 */
        start local 19 // double dy32
         2: .line 60
            ldc 3.0
            dload 5 /* x2 */
            dload 1 /* x1 */
            dsub
            dmul
            dstore 21 /* dx21 */
        start local 21 // double dx21
         3: .line 61
            ldc 3.0
            dload 7 /* y2 */
            dload 3 /* y1 */
            dsub
            dmul
            dstore 23 /* dy21 */
        start local 23 // double dy21
         4: .line 62
            aload 0 /* this */
            dload 13 /* x4 */
            dload 1 /* x1 */
            dsub
            dload 17 /* dx32 */
            dsub
            putfield com.sun.marlin.DCurve.ax:D
         5: .line 63
            aload 0 /* this */
            dload 15 /* y4 */
            dload 3 /* y1 */
            dsub
            dload 19 /* dy32 */
            dsub
            putfield com.sun.marlin.DCurve.ay:D
         6: .line 64
            aload 0 /* this */
            dload 17 /* dx32 */
            dload 21 /* dx21 */
            dsub
            putfield com.sun.marlin.DCurve.bx:D
         7: .line 65
            aload 0 /* this */
            dload 19 /* dy32 */
            dload 23 /* dy21 */
            dsub
            putfield com.sun.marlin.DCurve.by:D
         8: .line 66
            aload 0 /* this */
            dload 21 /* dx21 */
            putfield com.sun.marlin.DCurve.cx:D
         9: .line 67
            aload 0 /* this */
            dload 23 /* dy21 */
            putfield com.sun.marlin.DCurve.cy:D
        10: .line 68
            aload 0 /* this */
            dload 1 /* x1 */
            putfield com.sun.marlin.DCurve.dx:D
        11: .line 69
            aload 0 /* this */
            dload 3 /* y1 */
            putfield com.sun.marlin.DCurve.dy:D
        12: .line 70
            aload 0 /* this */
            ldc 3.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.ax:D
            dmul
            putfield com.sun.marlin.DCurve.dax:D
        13: .line 71
            aload 0 /* this */
            ldc 3.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.ay:D
            dmul
            putfield com.sun.marlin.DCurve.day:D
        14: .line 72
            aload 0 /* this */
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.bx:D
            dmul
            putfield com.sun.marlin.DCurve.dbx:D
        15: .line 73
            aload 0 /* this */
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.by:D
            dmul
            putfield com.sun.marlin.DCurve.dby:D
        16: .line 74
            return
        end local 23 // double dy21
        end local 21 // double dx21
        end local 19 // double dy32
        end local 17 // double dx32
        end local 15 // double y4
        end local 13 // double x4
        end local 11 // double y3
        end local 9 // double x3
        end local 7 // double y2
        end local 5 // double x2
        end local 3 // double y1
        end local 1 // double x1
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lcom/sun/marlin/DCurve;
            0   17     1    x1  D
            0   17     3    y1  D
            0   17     5    x2  D
            0   17     7    y2  D
            0   17     9    x3  D
            0   17    11    y3  D
            0   17    13    x4  D
            0   17    15    y4  D
            1   17    17  dx32  D
            2   17    19  dy32  D
            3   17    21  dx21  D
            4   17    23  dy21  D
    MethodParameters:
      Name  Flags
      x1    final
      y1    final
      x2    final
      y2    final
      x3    final
      y3    final
      x4    final
      y4    final

  void set(double, double, double, double, double, double);
    descriptor: (DDDDDD)V
    flags: (0x0000) 
    Code:
      stack=5, locals=17, args_size=7
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double x1
        start local 3 // double y1
        start local 5 // double x2
        start local 7 // double y2
        start local 9 // double x3
        start local 11 // double y3
         0: .line 80
            dload 5 /* x2 */
            dload 1 /* x1 */
            dsub
            dstore 13 /* dx21 */
        start local 13 // double dx21
         1: .line 81
            dload 7 /* y2 */
            dload 3 /* y1 */
            dsub
            dstore 15 /* dy21 */
        start local 15 // double dy21
         2: .line 82
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.ax:D
         3: .line 83
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.ay:D
         4: .line 84
            aload 0 /* this */
            dload 9 /* x3 */
            dload 5 /* x2 */
            dsub
            dload 13 /* dx21 */
            dsub
            putfield com.sun.marlin.DCurve.bx:D
         5: .line 85
            aload 0 /* this */
            dload 11 /* y3 */
            dload 7 /* y2 */
            dsub
            dload 15 /* dy21 */
            dsub
            putfield com.sun.marlin.DCurve.by:D
         6: .line 86
            aload 0 /* this */
            ldc 2.0
            dload 13 /* dx21 */
            dmul
            putfield com.sun.marlin.DCurve.cx:D
         7: .line 87
            aload 0 /* this */
            ldc 2.0
            dload 15 /* dy21 */
            dmul
            putfield com.sun.marlin.DCurve.cy:D
         8: .line 88
            aload 0 /* this */
            dload 1 /* x1 */
            putfield com.sun.marlin.DCurve.dx:D
         9: .line 89
            aload 0 /* this */
            dload 3 /* y1 */
            putfield com.sun.marlin.DCurve.dy:D
        10: .line 90
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.dax:D
        11: .line 91
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.day:D
        12: .line 92
            aload 0 /* this */
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.bx:D
            dmul
            putfield com.sun.marlin.DCurve.dbx:D
        13: .line 93
            aload 0 /* this */
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.by:D
            dmul
            putfield com.sun.marlin.DCurve.dby:D
        14: .line 94
            return
        end local 15 // double dy21
        end local 13 // double dx21
        end local 11 // double y3
        end local 9 // double x3
        end local 7 // double y2
        end local 5 // double x2
        end local 3 // double y1
        end local 1 // double x1
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Lcom/sun/marlin/DCurve;
            0   15     1    x1  D
            0   15     3    y1  D
            0   15     5    x2  D
            0   15     7    y2  D
            0   15     9    x3  D
            0   15    11    y3  D
            1   15    13  dx21  D
            2   15    15  dy21  D
    MethodParameters:
      Name  Flags
      x1    final
      y1    final
      x2    final
      y2    final
      x3    final
      y3    final

  void set(double, double, double, double);
    descriptor: (DDDD)V
    flags: (0x0000) 
    Code:
      stack=4, locals=13, args_size=5
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double x1
        start local 3 // double y1
        start local 5 // double x2
        start local 7 // double y2
         0: .line 99
            dload 5 /* x2 */
            dload 1 /* x1 */
            dsub
            dstore 9 /* dx21 */
        start local 9 // double dx21
         1: .line 100
            dload 7 /* y2 */
            dload 3 /* y1 */
            dsub
            dstore 11 /* dy21 */
        start local 11 // double dy21
         2: .line 101
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.ax:D
         3: .line 102
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.ay:D
         4: .line 103
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.bx:D
         5: .line 104
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.by:D
         6: .line 105
            aload 0 /* this */
            dload 9 /* dx21 */
            putfield com.sun.marlin.DCurve.cx:D
         7: .line 106
            aload 0 /* this */
            dload 11 /* dy21 */
            putfield com.sun.marlin.DCurve.cy:D
         8: .line 107
            aload 0 /* this */
            dload 1 /* x1 */
            putfield com.sun.marlin.DCurve.dx:D
         9: .line 108
            aload 0 /* this */
            dload 3 /* y1 */
            putfield com.sun.marlin.DCurve.dy:D
        10: .line 109
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.dax:D
        11: .line 110
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.day:D
        12: .line 111
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.dbx:D
        13: .line 112
            aload 0 /* this */
            dconst_0
            putfield com.sun.marlin.DCurve.dby:D
        14: .line 113
            return
        end local 11 // double dy21
        end local 9 // double dx21
        end local 7 // double y2
        end local 5 // double x2
        end local 3 // double y1
        end local 1 // double x1
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Lcom/sun/marlin/DCurve;
            0   15     1    x1  D
            0   15     3    y1  D
            0   15     5    x2  D
            0   15     7    y2  D
            1   15     9  dx21  D
            2   15    11  dy21  D
    MethodParameters:
      Name  Flags
      x1    final
      y1    final
      x2    final
      y2    final

  int dxRoots(double[], int);
    descriptor: ([DI)I
    flags: (0x0000) 
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] roots
        start local 2 // int off
         0: .line 116
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            aload 1 /* roots */
            iload 2 /* off */
            invokestatic com.sun.marlin.DHelpers.quadraticRoots:(DDD[DI)I
            ireturn
        end local 2 // int off
        end local 1 // double[] roots
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/sun/marlin/DCurve;
            0    1     1  roots  [D
            0    1     2    off  I
    MethodParameters:
       Name  Flags
      roots  final
      off    final

  int dyRoots(double[], int);
    descriptor: ([DI)I
    flags: (0x0000) 
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] roots
        start local 2 // int off
         0: .line 120
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            aload 1 /* roots */
            iload 2 /* off */
            invokestatic com.sun.marlin.DHelpers.quadraticRoots:(DDD[DI)I
            ireturn
        end local 2 // int off
        end local 1 // double[] roots
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/sun/marlin/DCurve;
            0    1     1  roots  [D
            0    1     2    off  I
    MethodParameters:
       Name  Flags
      roots  final
      off    final

  int infPoints(double[], int);
    descriptor: ([DI)I
    flags: (0x0000) 
    Code:
      stack=8, locals=9, args_size=3
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] pts
        start local 2 // int off
         0: .line 127
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            dmul
            dsub
            dstore 3 /* a */
        start local 3 // double a
         1: .line 128
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            dmul
            dsub
            dmul
            dstore 5 /* b */
        start local 5 // double b
         2: .line 129
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            dmul
            dsub
            dstore 7 /* c */
        start local 7 // double c
         3: .line 131
            dload 3 /* a */
            dload 5 /* b */
            dload 7 /* c */
            aload 1 /* pts */
            iload 2 /* off */
            invokestatic com.sun.marlin.DHelpers.quadraticRoots:(DDD[DI)I
            ireturn
        end local 7 // double c
        end local 5 // double b
        end local 3 // double a
        end local 2 // int off
        end local 1 // double[] pts
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/sun/marlin/DCurve;
            0    4     1   pts  [D
            0    4     2   off  I
            1    4     3     a  D
            2    4     5     b  D
            3    4     7     c  D
    MethodParameters:
      Name  Flags
      pts   final
      off   final

  int xPoints(double[], int, double);
    descriptor: ([DID)I
    flags: (0x0000) 
    Code:
      stack=14, locals=5, args_size=4
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] ts
        start local 2 // int off
        start local 3 // double x
         0: .line 136
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.ax:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.bx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dx:D
            dload 3 /* x */
            dsub
            aload 1 /* ts */
            iload 2 /* off */
            dconst_0
            dconst_1
            invokestatic com.sun.marlin.DHelpers.cubicRootsInAB:(DDDD[DIDD)I
            ireturn
        end local 3 // double x
        end local 2 // int off
        end local 1 // double[] ts
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/marlin/DCurve;
            0    1     1    ts  [D
            0    1     2   off  I
            0    1     3     x  D
    MethodParameters:
      Name  Flags
      ts    final
      off   final
      x     final

  int yPoints(double[], int, double);
    descriptor: ([DID)I
    flags: (0x0000) 
    Code:
      stack=14, locals=5, args_size=4
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] ts
        start local 2 // int off
        start local 3 // double y
         0: .line 141
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.ay:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.by:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dy:D
            dload 3 /* y */
            dsub
            aload 1 /* ts */
            iload 2 /* off */
            dconst_0
            dconst_1
            invokestatic com.sun.marlin.DHelpers.cubicRootsInAB:(DDDD[DIDD)I
            ireturn
        end local 3 // double y
        end local 2 // int off
        end local 1 // double[] ts
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/marlin/DCurve;
            0    1     1    ts  [D
            0    1     2   off  I
            0    1     3     y  D
    MethodParameters:
      Name  Flags
      ts    final
      off   final
      y     final

  private int perpendiculardfddf(double[], int);
    descriptor: ([DI)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=14, locals=11, args_size=3
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] pts
        start local 2 // int off
         0: .line 148
            getstatic com.sun.marlin.DCurve.$assertionsDisabled:Z
            ifne 1
            aload 1 /* pts */
            arraylength
            iload 2 /* off */
            iconst_4
            iadd
            if_icmpge 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 153
      StackMap locals:
      StackMap stack:
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            dmul
            dadd
            dmul
            dstore 3 /* a */
        start local 3 // double a
         2: .line 154
            ldc 3.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            dmul
            dadd
            dmul
            dstore 5 /* b */
        start local 5 // double b
         3: .line 155
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            dmul
            dadd
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            dmul
            dadd
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            dmul
            dadd
            dstore 7 /* c */
        start local 7 // double c
         4: .line 156
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            dmul
            dadd
            dstore 9 /* d */
        start local 9 // double d
         5: .line 158
            dload 3 /* a */
            dload 5 /* b */
            dload 7 /* c */
            dload 9 /* d */
            aload 1 /* pts */
            iload 2 /* off */
            dconst_0
            dconst_1
            invokestatic com.sun.marlin.DHelpers.cubicRootsInAB:(DDDD[DIDD)I
            ireturn
        end local 9 // double d
        end local 7 // double c
        end local 5 // double b
        end local 3 // double a
        end local 2 // int off
        end local 1 // double[] pts
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/sun/marlin/DCurve;
            0    6     1   pts  [D
            0    6     2   off  I
            2    6     3     a  D
            3    6     5     b  D
            4    6     7     c  D
            5    6     9     d  D
    MethodParameters:
      Name  Flags
      pts   final
      off   final

  int rootsOfROCMinusW(double[], int, double, double);
    descriptor: ([DIDD)I
    flags: (0x0000) 
    Code:
      stack=11, locals=18, args_size=5
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double[] roots
        start local 2 // int off
        start local 3 // double w2
        start local 5 // double err
         0: .line 176
            getstatic com.sun.marlin.DCurve.$assertionsDisabled:Z
            ifne 2
            iload 2 /* off */
            bipush 6
            if_icmpgt 1
            aload 1 /* roots */
            arraylength
            bipush 10
            if_icmpge 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 178
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            istore 7 /* ret */
        start local 7 // int ret
         3: .line 179
            iload 2 /* off */
            aload 0 /* this */
            aload 1 /* roots */
            iload 2 /* off */
            invokevirtual com.sun.marlin.DCurve.perpendiculardfddf:([DI)I
            iadd
            istore 8 /* end */
        start local 8 // int end
         4: .line 180
            aload 1 /* roots */
            iload 8 /* end */
            dconst_1
            dastore
         5: .line 182
            dconst_0
            dstore 9 /* t0 */
        start local 9 // double t0
         6: aload 0 /* this */
            dload 9 /* t0 */
            invokevirtual com.sun.marlin.DCurve.ROCsq:(D)D
            dload 3 /* w2 */
            dsub
            dstore 11 /* ft0 */
        start local 11 // double ft0
         7: .line 184
            iload 2 /* off */
            istore 13 /* i */
        start local 13 // int i
         8: goto 19
         9: .line 185
      StackMap locals: com.sun.marlin.DCurve double[] int double double int int double double int
      StackMap stack:
            aload 1 /* roots */
            iload 13 /* i */
            daload
            dstore 14 /* t1 */
        start local 14 // double t1
        10: aload 0 /* this */
            dload 14 /* t1 */
            invokevirtual com.sun.marlin.DCurve.ROCsq:(D)D
            dload 3 /* w2 */
            dsub
            dstore 16 /* ft1 */
        start local 16 // double ft1
        11: .line 186
            dload 11 /* ft0 */
            dconst_0
            dcmpl
            ifne 14
        12: .line 187
            aload 1 /* roots */
            iload 7 /* ret */
            iinc 7 /* ret */ 1
            dload 9 /* t0 */
            dastore
        13: .line 188
            goto 16
      StackMap locals: double double
      StackMap stack:
        14: dload 16 /* ft1 */
            dload 11 /* ft0 */
            dmul
            dconst_0
            dcmpg
            ifge 16
        15: .line 191
            aload 1 /* roots */
            iload 7 /* ret */
            iinc 7 /* ret */ 1
            aload 0 /* this */
            dload 9 /* t0 */
            dload 14 /* t1 */
            dload 3 /* w2 */
            dload 5 /* err */
            invokevirtual com.sun.marlin.DCurve.falsePositionROCsqMinusX:(DDDD)D
            dastore
        16: .line 193
      StackMap locals:
      StackMap stack:
            dload 14 /* t1 */
            dstore 9 /* t0 */
        17: .line 194
            dload 16 /* ft1 */
            dstore 11 /* ft0 */
        end local 16 // double ft1
        end local 14 // double t1
        18: .line 184
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 13 /* i */
            iload 8 /* end */
            if_icmple 9
        end local 13 // int i
        20: .line 197
            iload 7 /* ret */
            iload 2 /* off */
            isub
            ireturn
        end local 11 // double ft0
        end local 9 // double t0
        end local 8 // int end
        end local 7 // int ret
        end local 5 // double err
        end local 3 // double w2
        end local 2 // int off
        end local 1 // double[] roots
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   21     0   this  Lcom/sun/marlin/DCurve;
            0   21     1  roots  [D
            0   21     2    off  I
            0   21     3     w2  D
            0   21     5    err  D
            3   21     7    ret  I
            4   21     8    end  I
            6   21     9     t0  D
            7   21    11    ft0  D
            8   20    13      i  I
           10   18    14     t1  D
           11   18    16    ft1  D
    MethodParameters:
       Name  Flags
      roots  final
      off    final
      w2     final
      err    final

  private static double eliminateInf(double);
    descriptor: (D)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // double x
         0: .line 201
            dload 0 /* x */
            ldc Infinity
            dcmpl
            ifne 1
            ldc 1.7976931348623157E308
            goto 3
         1: .line 202
      StackMap locals:
      StackMap stack:
            dload 0 /* x */
            ldc -Infinity
            dcmpl
            ifne 2
            ldc 4.9E-324
            goto 3
      StackMap locals:
      StackMap stack:
         2: dload 0 /* x */
         3: .line 201
      StackMap locals:
      StackMap stack: double
            dreturn
        end local 0 // double x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     x  D
    MethodParameters:
      Name  Flags
      x     final

  private double falsePositionROCsqMinusX(double, double, double, double);
    descriptor: (DDDD)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=23, args_size=5
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double t0
        start local 3 // double t1
        start local 5 // double w2
        start local 7 // double err
         0: .line 216
            iconst_0
            istore 9 /* side */
        start local 9 // int side
         1: .line 217
            dload 3 /* t1 */
            dstore 10 /* t */
        start local 10 // double t
         2: aload 0 /* this */
            dload 10 /* t */
            invokevirtual com.sun.marlin.DCurve.ROCsq:(D)D
            dload 5 /* w2 */
            dsub
            invokestatic com.sun.marlin.DCurve.eliminateInf:(D)D
            dstore 12 /* ft */
        start local 12 // double ft
         3: .line 218
            dload 1 /* t0 */
            dstore 14 /* s */
        start local 14 // double s
         4: aload 0 /* this */
            dload 14 /* s */
            invokevirtual com.sun.marlin.DCurve.ROCsq:(D)D
            dload 5 /* w2 */
            dsub
            invokestatic com.sun.marlin.DCurve.eliminateInf:(D)D
            dstore 16 /* fs */
        start local 16 // double fs
         5: .line 219
            dload 14 /* s */
            dstore 18 /* r */
        start local 18 // double r
         6: .line 221
            iconst_0
            istore 22 /* i */
        start local 22 // int i
         7: goto 26
         8: .line 222
      StackMap locals: com.sun.marlin.DCurve double double double double int double double double double double top top int
      StackMap stack:
            dload 16 /* fs */
            dload 10 /* t */
            dmul
            dload 12 /* ft */
            dload 14 /* s */
            dmul
            dsub
            dload 16 /* fs */
            dload 12 /* ft */
            dsub
            ddiv
            dstore 18 /* r */
         9: .line 223
            aload 0 /* this */
            dload 18 /* r */
            invokevirtual com.sun.marlin.DCurve.ROCsq:(D)D
            dload 5 /* w2 */
            dsub
            dstore 20 /* fr */
        start local 20 // double fr
        10: .line 224
            dload 20 /* fr */
            dload 12 /* ft */
            invokestatic com.sun.marlin.DCurve.sameSign:(DD)Z
            ifeq 18
        11: .line 225
            dload 20 /* fr */
            dstore 12 /* ft */
            dload 18 /* r */
            dstore 10 /* t */
        12: .line 226
            iload 9 /* side */
            ifge 16
        13: .line 227
            dload 16 /* fs */
            iconst_1
            iload 9 /* side */
            ineg
            ishl
            i2d
            ddiv
            dstore 16 /* fs */
        14: .line 228
            iinc 9 /* side */ -1
        15: .line 229
            goto 25
        16: .line 230
      StackMap locals: com.sun.marlin.DCurve double double double double int double double double double double double int
      StackMap stack:
            iconst_m1
            istore 9 /* side */
        17: .line 232
            goto 25
      StackMap locals:
      StackMap stack:
        18: dload 20 /* fr */
            dload 16 /* fs */
            dmul
            dconst_0
            dcmpl
            ifle 27
        19: .line 233
            dload 20 /* fr */
            dstore 16 /* fs */
            dload 18 /* r */
            dstore 14 /* s */
        20: .line 234
            iload 9 /* side */
            ifle 24
        21: .line 235
            dload 12 /* ft */
            iconst_1
            iload 9 /* side */
            ishl
            i2d
            ddiv
            dstore 12 /* ft */
        22: .line 236
            iinc 9 /* side */ 1
        23: .line 237
            goto 25
        24: .line 238
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 9 /* side */
        25: .line 221
      StackMap locals:
      StackMap stack:
            iinc 22 /* i */ 1
        end local 20 // double fr
      StackMap locals: com.sun.marlin.DCurve double double double double int double double double double double top top int
      StackMap stack:
        26: iload 22 /* i */
            bipush 100
            if_icmpge 27
            dload 10 /* t */
            dload 14 /* s */
            dsub
            invokestatic java.lang.Math.abs:(D)D
            dload 7 /* err */
            dload 10 /* t */
            dload 14 /* s */
            dadd
            invokestatic java.lang.Math.abs:(D)D
            dmul
            dcmpl
            ifgt 8
        end local 22 // int i
        27: .line 244
      StackMap locals: com.sun.marlin.DCurve double double double double int double double double double double
      StackMap stack:
            dload 18 /* r */
            dreturn
        end local 18 // double r
        end local 16 // double fs
        end local 14 // double s
        end local 12 // double ft
        end local 10 // double t
        end local 9 // int side
        end local 7 // double err
        end local 5 // double w2
        end local 3 // double t1
        end local 1 // double t0
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   28     0  this  Lcom/sun/marlin/DCurve;
            0   28     1    t0  D
            0   28     3    t1  D
            0   28     5    w2  D
            0   28     7   err  D
            1   28     9  side  I
            2   28    10     t  D
            3   28    12    ft  D
            4   28    14     s  D
            5   28    16    fs  D
            6   28    18     r  D
           10   26    20    fr  D
            7   27    22     i  I
    MethodParameters:
      Name  Flags
      t0    final
      t1    final
      w2    final
      err   final

  private static boolean sameSign(double, double);
    descriptor: (DD)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // double x
        start local 2 // double y
         0: .line 249
            dload 0 /* x */
            dconst_0
            dcmpg
            ifge 1
            dload 2 /* y */
            dconst_0
            dcmpg
            iflt 3
      StackMap locals:
      StackMap stack:
         1: dload 0 /* x */
            dconst_0
            dcmpl
            ifle 2
            dload 2 /* y */
            dconst_0
            dcmpl
            ifgt 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 2 // double y
        end local 0 // double x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     x  D
            0    4     2     y  D
    MethodParameters:
      Name  Flags
      x     final
      y     final

  private double ROCsq(double);
    descriptor: (D)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=17, args_size=2
        start local 0 // com.sun.marlin.DCurve this
        start local 1 // double t
         0: .line 255
            dload 1 /* t */
            dload 1 /* t */
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            dadd
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cx:D
            dadd
            dstore 3 /* dx */
        start local 3 // double dx
         1: .line 256
            dload 1 /* t */
            dload 1 /* t */
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            dadd
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.cy:D
            dadd
            dstore 5 /* dy */
        start local 5 // double dy
         2: .line 257
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dax:D
            dmul
            dload 1 /* t */
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dbx:D
            dadd
            dstore 7 /* ddx */
        start local 7 // double ddx
         3: .line 258
            ldc 2.0
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.day:D
            dmul
            dload 1 /* t */
            dmul
            aload 0 /* this */
            getfield com.sun.marlin.DCurve.dby:D
            dadd
            dstore 9 /* ddy */
        start local 9 // double ddy
         4: .line 259
            dload 3 /* dx */
            dload 3 /* dx */
            dmul
            dload 5 /* dy */
            dload 5 /* dy */
            dmul
            dadd
            dstore 11 /* dx2dy2 */
        start local 11 // double dx2dy2
         5: .line 260
            dload 7 /* ddx */
            dload 7 /* ddx */
            dmul
            dload 9 /* ddy */
            dload 9 /* ddy */
            dmul
            dadd
            dstore 13 /* ddx2ddy2 */
        start local 13 // double ddx2ddy2
         6: .line 261
            dload 7 /* ddx */
            dload 3 /* dx */
            dmul
            dload 9 /* ddy */
            dload 5 /* dy */
            dmul
            dadd
            dstore 15 /* ddxdxddydy */
        start local 15 // double ddxdxddydy
         7: .line 262
            dload 11 /* dx2dy2 */
            dload 11 /* dx2dy2 */
            dload 11 /* dx2dy2 */
            dmul
            dload 11 /* dx2dy2 */
            dload 13 /* ddx2ddy2 */
            dmul
            dload 15 /* ddxdxddydy */
            dload 15 /* ddxdxddydy */
            dmul
            dsub
            ddiv
            dmul
            dreturn
        end local 15 // double ddxdxddydy
        end local 13 // double ddx2ddy2
        end local 11 // double dx2dy2
        end local 9 // double ddy
        end local 7 // double ddx
        end local 5 // double dy
        end local 3 // double dx
        end local 1 // double t
        end local 0 // com.sun.marlin.DCurve this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/sun/marlin/DCurve;
            0    8     1           t  D
            1    8     3          dx  D
            2    8     5          dy  D
            3    8     7         ddx  D
            4    8     9         ddy  D
            5    8    11      dx2dy2  D
            6    8    13    ddx2ddy2  D
            7    8    15  ddxdxddydy  D
    MethodParameters:
      Name  Flags
      t     final
}
SourceFile: "DCurve.java"