// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/Geometry.h
// Function: ReciprocalCurve::Interpolate(double const&, double const&, double const&, double const&, double const&, double const&)
void Interpolate(const double &x1, const double &y1, const double &x2,
                   const double &y2, const double &x3, const double &y3) {
    Assert(((x1 - x2) / (y2 - y1) - (x1 - x3) / (y3 - y1)) != 0);
    Assert((y1 - y2) != 0);

    mA = ((x1 * y1 - x2 * y2) / (y2 - y1) - (x1 * y1 - x3 * y3) / (y3 - y1)) /
         ((x1 - x2) / (y2 - y1) - (x1 - x3) / (y3 - y1));
    mC = (mA * (x1 - x2) - (x1 * y1 - x2 * y2)) / (y1 - y2);
    mB = (y1 - mA) * (x1 + mC);
    mB = (y2 - mA) * (x2 + mC);
    mB = (y3 - mA) * (x3 + mC);
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm0
movq -0x18(%rbp), %rcx
movsd (%rcx), %xmm2
movq -0x20(%rbp), %rcx
movsd (%rcx), %xmm1
movq -0x28(%rbp), %rcx
mulsd (%rcx), %xmm1
movq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x28(%rbp), %rcx
movsd (%rcx), %xmm1
movq -0x18(%rbp), %rcx
subsd (%rcx), %xmm1
divsd %xmm1, %xmm0
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm1
movq -0x18(%rbp), %rcx
movsd (%rcx), %xmm3
movq -0x30(%rbp), %rcx
movsd (%rcx), %xmm2
movq 0x10(%rbp), %rcx
mulsd (%rcx), %xmm2
movq %xmm2, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movq 0x10(%rbp), %rcx
movsd (%rcx), %xmm2
movq -0x18(%rbp), %rcx
subsd (%rcx), %xmm2
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm1
movq -0x20(%rbp), %rcx
subsd (%rcx), %xmm1
movq -0x28(%rbp), %rcx
movsd (%rcx), %xmm2
movq -0x18(%rbp), %rcx
subsd (%rcx), %xmm2
divsd %xmm2, %xmm1
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm2
movq -0x30(%rbp), %rcx
subsd (%rcx), %xmm2
movq 0x10(%rbp), %rcx
movsd (%rcx), %xmm3
movq -0x18(%rbp), %rcx
subsd (%rcx), %xmm3
divsd %xmm3, %xmm2
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movsd (%rax), %xmm0
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm2
movq -0x20(%rbp), %rcx
subsd (%rcx), %xmm2
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm1
movq -0x18(%rbp), %rcx
movsd (%rcx), %xmm4
movq -0x20(%rbp), %rcx
movsd (%rcx), %xmm3
movq -0x28(%rbp), %rcx
mulsd (%rcx), %xmm3
movq %xmm3, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm3
mulsd %xmm4, %xmm1
addsd %xmm3, %xmm1
movq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x18(%rbp), %rcx
movsd (%rcx), %xmm1
movq -0x28(%rbp), %rcx
subsd (%rcx), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rax)
movq -0x18(%rbp), %rcx
movsd (%rcx), %xmm0
subsd (%rax), %xmm0
movq -0x10(%rbp), %rcx
movsd (%rcx), %xmm1
addsd 0x10(%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
movq -0x28(%rbp), %rcx
movsd (%rcx), %xmm0
subsd (%rax), %xmm0
movq -0x20(%rbp), %rcx
movsd (%rcx), %xmm1
addsd 0x10(%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
movq 0x10(%rbp), %rcx
movsd (%rcx), %xmm0
subsd (%rax), %xmm0
movq -0x30(%rbp), %rcx
movsd (%rcx), %xmm1
addsd 0x10(%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop