// File: micahcc[P]polygon_skeleton/voronoi.cpp
// Function: getIntersection(float, Vector const&, Vector const&, float)
Point getIntersection(float sweep_y, const Point& p, const Point& r, float sign)
{
    // Given any point q, its distance from sweep is:
    //
    // (q.y - y_s)
    //
    // Its distance from an event p is:
    //
    // sqrt((q.x - p.x)^2 + (q.y - p.y)^2)
    //
    // the parabola equation is then:
    //
    // (q.y - y_s)^2 = (q.x - p.x)^2 + (q.y - p.y)^2
    //
    // For two event points, r and p, we can solve q.x -- the intersection
    // location must satisfy:
    //
    // sqrt( sqr(q_x - p_x) + sqr(q_y - p_y) ) ==
    // sqrt( sqr(q_x - r_x) + sqr(q_y - r_y) )
    //
    // and
    //
    // sqrt( sqr(q_x - r_x) + sqr(q_y - r_y) ) == q_y - sweep_y
    std::cerr << "<<<<Intersection of:\n<<<<" << p << "\n<<<<" << r << "\n<<<<" <<
        sweep_y << std::endl;

    // Solve for x first
    float y_s = sweep_y;
    Point q;
    if(std::abs(p.y - sweep_y) < 0.0000001) {
        // parabola around p has no width, just select point on parabola r at
        // p.x
        std::cerr << "<<<<p_y == sweep_y" << std::endl;
        q.x = p.x;
        q.y = 0.5*( sqr(q.x) - 2*q.x*r.x + sqr(r.x) + sqr(r.y) - sqr(y_s))/(r.y - y_s);
    } else if(std::abs(r.y - sweep_y) < 0.0000001) {
        // parabola around r has no width, just select point on parabola q at
        // r.x
        std::cerr << "<<<<r_y == sweep_y" << std::endl;
        q.x = r.x;
        q.y = 0.5*(p.x*p.x + p.y*p.y - 2*p.x*q.x + q.x*q.x - y_s*y_s)/(p.y - y_s);
    } else {
        if(std::abs(p.y - r.y) > 0.0000001) {
            float term1 = (p.y*r.x - p.x*r.y + (p.x - r.x)*y_s) / (p.y - r.y);
            float rad =
                sqrt(p.x*p.x + p.y*p.y - 2*p.x*r.x + r.x*r.x - 2*p.y*r.y + r.y*r.y)*
                sqrt(p.y - y_s)*sqrt(r.y - y_s)/(p.y - r.y);

            std::cerr << "<<<<"
                << sqrt(p.x*p.x + p.y*p.y - 2*p.x*r.x + r.x*r.x - 2*p.y*r.y + r.y*r.y)
                << ", " << sqrt( p.y - y_s) << ", " << sqrt(r.y - y_s)/(p.y - r.y) << std::endl;;
            std::cerr << "<<<<" << term1 << " + " << sign << " * " << rad << std::endl;
            // choose +- radical to be between
            q.x = term1 + sign*std::abs(rad);

            // use one of the parabolas to find y
            q.y = 0.5*(p.x*p.x + p.y*p.y - 2*p.x*q.x + q.x*q.x - y_s*y_s)/(p.y - y_s);
        } else {
            // special case: x-coord is exactly in-between
            q.x = (p.x + r.x)*0.5;
            q.y = 0.5*(sqr(p.x) + sqr(p.y) - 2*p.x*q.x + sqr(q.x) - sqr(y_s))/
                (p.y - y_s);
        }
    }

    assert(!std::isinf(q.x));
    assert(!std::isinf(q.y));
    assert(!std::isnan(q.x));
    assert(!std::isnan(q.y));
    std::cerr << "<<<<Solution: " << q << std::endl;
    std::cerr << "<<<<Sweep line distance0: " << (q.y - sweep_y) << "\n"
        << "<<<<Solution distance0: "
        << std::sqrt( sqr(p.x - q.x ) + sqr( p.y - q.y )) << std::endl;
    std::cerr << "<<<<Sweep line distance1: " << (q.y - sweep_y) << "\n"
        << "<<<<Solution distance1: "
        << std::sqrt( sqr(r.x - q.x ) + sqr( r.y - q.y )) << std::endl;
    return q;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movss %xmm0, -0xc(%rbp)
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movss %xmm1, -0x24(%rbp)
movq 0x2975c(%rip), %rdi     # 0x32ff0
leaq 0x19ac9(%rip), %rsi     # 0x23364
callq 0x3250
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0xa320
movq %rax, %rdi
leaq 0x19ac2(%rip), %rsi     # 0x23378
callq 0x3250
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0xa320
movq %rax, %rdi
leaq 0x19aa7(%rip), %rsi     # 0x23378
callq 0x3250
movq %rax, %rdi
movss -0xc(%rbp), %xmm0
callq 0x31b0
movq %rax, %rdi
movq 0x296d3(%rip), %rsi     # 0x32fc0
callq 0x3290
movss -0xc(%rbp), %xmm0
movss %xmm0, -0x28(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x101b0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
subss -0xc(%rbp), %xmm0
callq 0x101d0
cvtss2sd %xmm0, %xmm1
movsd 0x19924(%rip), %xmm0    # 0x23248
ucomisd %xmm1, %xmm0
jbe 0x9a19
movq 0x296bb(%rip), %rdi     # 0x32ff0
leaq 0x19a42(%rip), %rsi     # 0x2337e
callq 0x3250
movq %rax, %rdi
movq 0x29675(%rip), %rsi     # 0x32fc0
callq 0x3290
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x8(%rbp)
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movss 0x198d1(%rip), %xmm1    # 0x23244
mulss -0x8(%rbp), %xmm1
movq -0x20(%rbp), %rax
mulss (%rax), %xmm1
cvtss2sd %xmm1, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movaps %xmm0, %xmm1
movsd -0x48(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movaps %xmm0, %xmm1
movsd -0x40(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movsd -0x38(%rbp), %xmm1
subsd %xmm0, %xmm1
movsd 0x1985f(%rip), %xmm0    # 0x23250
mulsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x28(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0xa088
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
subss -0xc(%rbp), %xmm0
callq 0x101d0
cvtss2sd %xmm0, %xmm1
movsd 0x19810(%rip), %xmm0    # 0x23248
ucomisd %xmm1, %xmm0
jbe 0x9b2a
movq 0x295a7(%rip), %rdi     # 0x32ff0
leaq 0x19941(%rip), %rsi     # 0x23391
callq 0x3250
movq %rax, %rdi
movq 0x29561(%rip), %rsi     # 0x32fc0
callq 0x3290
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x8(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm1
movq -0x18(%rbp), %rax
movss (%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x18(%rbp), %rax
mulss 0x4(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x18(%rbp), %rax
movss 0x1979d(%rip), %xmm0    # 0x23244
mulss (%rax), %xmm0
movss -0x8(%rbp), %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss -0x8(%rbp), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss -0x28(%rbp), %xmm0
movss -0x28(%rbp), %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x1974e(%rip), %xmm0    # 0x23250
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x28(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0xa086
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
subss 0x4(%rax), %xmm0
callq 0x101d0
cvtss2sd %xmm0, %xmm0
movsd 0x196fb(%rip), %xmm1    # 0x23248
ucomisd %xmm1, %xmm0
jbe 0x9f9e
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
movq -0x20(%rbp), %rax
movss (%rax), %xmm2
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0x4(%rax), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
subss (%rax), %xmm0
movss -0x28(%rbp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
movq -0x20(%rbp), %rax
subss 0x4(%rax), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x18(%rbp), %rax
movss (%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
movq -0x18(%rbp), %rax
mulss 0x4(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x19648(%rip), %xmm1    # 0x23244
mulss (%rax), %xmm1
movq -0x20(%rbp), %rax
movss (%rax), %xmm2
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
movss (%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x19603(%rip), %xmm1    # 0x23244
mulss 0x4(%rax), %xmm1
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm2
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
callq 0x10210
movss %xmm0, -0x70(%rbp)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
subss -0x28(%rbp), %xmm0
callq 0x10210
movaps %xmm0, %xmm1
movss -0x70(%rbp), %xmm0
mulss %xmm1, %xmm0
movss %xmm0, -0x6c(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
subss -0x28(%rbp), %xmm0
callq 0x10210
movaps %xmm0, %xmm1
movss -0x6c(%rbp), %xmm0
mulss %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
movq -0x20(%rbp), %rax
subss 0x4(%rax), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
movq 0x29303(%rip), %rdi     # 0x32ff0
leaq 0x19685(%rip), %rsi     # 0x23379
callq 0x3250
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x18(%rbp), %rax
movss (%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
movq -0x18(%rbp), %rax
mulss 0x4(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x19511(%rip), %xmm1    # 0x23244
mulss (%rax), %xmm1
movq -0x20(%rbp), %rax
movss (%rax), %xmm2
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
movss (%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x194cc(%rip), %xmm1    # 0x23244
mulss 0x4(%rax), %xmm1
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm2
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
callq 0x10210
movq -0x68(%rbp), %rdi
callq 0x31b0
movq %rax, %rdi
leaq 0x192aa(%rip), %rsi     # 0x23077
callq 0x3250
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
subss -0x28(%rbp), %xmm0
callq 0x10210
movq -0x60(%rbp), %rdi
callq 0x31b0
movq %rax, %rdi
leaq 0x1927b(%rip), %rsi     # 0x23077
callq 0x3250
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
subss -0x28(%rbp), %xmm0
callq 0x10210
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
movq -0x20(%rbp), %rax
subss 0x4(%rax), %xmm1
divss %xmm1, %xmm0
callq 0x31b0
movq %rax, %rdi
movq 0x2917f(%rip), %rsi     # 0x32fc0
callq 0x3290
movq 0x291a3(%rip), %rdi     # 0x32ff0
leaq 0x19525(%rip), %rsi     # 0x23379
callq 0x3250
movq %rax, %rdi
movss -0x2c(%rbp), %xmm0
callq 0x31b0
movq %rax, %rdi
leaq 0x19534(%rip), %rsi     # 0x233a4
callq 0x3250
movq %rax, %rdi
movss -0x24(%rbp), %xmm0
callq 0x31b0
movq %rax, %rdi
leaq 0x1951c(%rip), %rsi     # 0x233a8
callq 0x3250
movq %rax, %rdi
movss -0x30(%rbp), %xmm0
callq 0x31b0
movq %rax, %rdi
movq 0x29118(%rip), %rsi     # 0x32fc0
callq 0x3290
movss -0x2c(%rbp), %xmm0
movss %xmm0, -0x50(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x4c(%rbp)
movss -0x30(%rbp), %xmm0
callq 0x101d0
movss -0x50(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x4c(%rbp), %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x8(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm1
movq -0x18(%rbp), %rax
movss (%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x18(%rbp), %rax
mulss 0x4(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x18(%rbp), %rax
movss 0x19329(%rip), %xmm0    # 0x23244
mulss (%rax), %xmm0
movss -0x8(%rbp), %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss -0x8(%rbp), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss -0x28(%rbp), %xmm0
movss -0x28(%rbp), %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x192da(%rip), %xmm0    # 0x23250
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x28(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0xa084
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
addss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x19296(%rip), %xmm1    # 0x23250
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x8(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movsd %xmm0, -0x88(%rbp)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movaps %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
addsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x19237(%rip), %xmm1    # 0x23244
mulss (%rax), %xmm1
mulss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movaps %xmm0, %xmm1
movsd -0x80(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movsd -0x78(%rbp), %xmm1
subsd %xmm0, %xmm1
movsd 0x191ef(%rip), %xmm0    # 0x23250
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x28(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0xa086
jmp 0xa088
movss -0x8(%rbp), %xmm0
callq 0x10230
xorb $-0x1, %al
testb $0x1, %al
jne 0xa09a
jmp 0xa09c
jmp 0xa0bb
leaq 0x19309(%rip), %rdi     # 0x233ac
leaq 0x19224(%rip), %rsi     # 0x232ce
movl $0x22a, %edx            # imm = 0x22A
leaq 0x19307(%rip), %rcx     # 0x233bd
callq 0x3170
movss -0x4(%rbp), %xmm0
callq 0x10230
xorb $-0x1, %al
testb $0x1, %al
jne 0xa0cd
jmp 0xa0cf
jmp 0xa0ee
leaq 0x19329(%rip), %rdi     # 0x233ff
leaq 0x191f1(%rip), %rsi     # 0x232ce
movl $0x22b, %edx            # imm = 0x22B
leaq 0x192d4(%rip), %rcx     # 0x233bd
callq 0x3170
movss -0x8(%rbp), %xmm0
callq 0x10260
xorb $-0x1, %al
testb $0x1, %al
jne 0xa100
jmp 0xa102
jmp 0xa121
leaq 0x19307(%rip), %rdi     # 0x23410
leaq 0x191be(%rip), %rsi     # 0x232ce
movl $0x22c, %edx            # imm = 0x22C
leaq 0x192a1(%rip), %rcx     # 0x233bd
callq 0x3170
movss -0x4(%rbp), %xmm0
callq 0x10260
xorb $-0x1, %al
testb $0x1, %al
jne 0xa133
jmp 0xa135
jmp 0xa154
leaq 0x192e5(%rip), %rdi     # 0x23421
leaq 0x1918b(%rip), %rsi     # 0x232ce
movl $0x22d, %edx            # imm = 0x22D
leaq 0x1926e(%rip), %rcx     # 0x233bd
callq 0x3170
movq 0x28e95(%rip), %rdi     # 0x32ff0
movq %rdi, -0xb0(%rbp)
leaq 0x192c9(%rip), %rsi     # 0x23432
callq 0x3250
movq %rax, %rdi
leaq -0x8(%rbp), %rsi
callq 0xa320
movq %rax, %rdi
movq 0x28e3c(%rip), %rsi     # 0x32fc0
movq %rsi, -0x90(%rbp)
callq 0x3290
movq -0xb0(%rbp), %rdi
leaq 0x192a3(%rip), %rsi     # 0x23441
callq 0x3250
movq %rax, %rdi
movss -0x4(%rbp), %xmm0
movss -0xc(%rbp), %xmm1
subss %xmm1, %xmm0
callq 0x31b0
movq %rax, %rdi
leaq 0x18f15(%rip), %rsi     # 0x230d8
movq %rsi, -0xa8(%rbp)
callq 0x3250
movq %rax, %rdi
leaq 0x19283(%rip), %rsi     # 0x2345c
callq 0x3250
movq %rax, -0xb8(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movss -0x8(%rbp), %xmm1
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movsd %xmm0, -0xc0(%rbp)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movss -0x4(%rbp), %xmm1
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movaps %xmm0, %xmm1
movsd -0xc0(%rbp), %xmm0
addsd %xmm1, %xmm0
callq 0x31f0
movq -0xb8(%rbp), %rdi
callq 0x3440
movq -0x90(%rbp), %rsi
movq %rax, %rdi
callq 0x3290
movq -0xb0(%rbp), %rdi
leaq 0x19216(%rip), %rsi     # 0x23475
callq 0x3250
movq %rax, %rdi
movss -0x4(%rbp), %xmm0
movss -0xc(%rbp), %xmm1
subss %xmm1, %xmm0
callq 0x31b0
movq -0xa8(%rbp), %rsi
movq %rax, %rdi
callq 0x3250
movq %rax, %rdi
leaq 0x191fd(%rip), %rsi     # 0x23490
callq 0x3250
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movss -0x8(%rbp), %xmm1
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movsd %xmm0, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movss -0x4(%rbp), %xmm1
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x101f0
movaps %xmm0, %xmm1
movsd -0xa0(%rbp), %xmm0
addsd %xmm1, %xmm0
callq 0x31f0
movq -0x98(%rbp), %rdi
callq 0x3440
movq -0x90(%rbp), %rsi
movq %rax, %rdi
callq 0x3290
movsd -0x8(%rbp), %xmm0
addq $0xc0, %rsp
popq %rbp
retq
nopl (%rax)