// File: micahcc[P]polygon_skeleton/voronoi.cpp
// Function: Voronoi::Implementation::compute(std::vector<Vector, std::allocator<Vector>> const&)
void Voronoi::Implementation::compute(const std::vector<Point>& points)
{
    m_points = &points;
    for(const auto& pt : points) {
        m_min_x = std::min<double>(pt.x, m_min_x);
        m_max_x = std::max<double>(pt.x, m_max_x);
        m_min_y = std::min<double>(pt.y, m_min_y);
        m_max_y = std::max<double>(pt.y, m_max_y);
    }

    std::cerr << "Sorting points" << std::endl;
    // Sort by decreasing y
    std::vector<size_t> ordered(points.size());
    for(size_t ii = 0; ii < points.size(); ii++) ordered[ii] = ii;
    std::sort(ordered.begin(), ordered.end(),
            [&](size_t ii, size_t jj) { return points[ii].y > points[jj].y; });

    // stop when circle event's centers are after this
    double last_y = points[ordered.back()].y;

    std::cerr << "Ordered points: " << std::endl;
    for(size_t ii : ordered) {
        std::cerr << points[ii] << std::endl;
    }
    std::cerr << std::endl;

    // Travel downward so at each step take
    size_t ii = 0;
    double prev_sweep = NAN;
    double sweep = NAN;
    while(!m_events.empty() || ii < ordered.size()) {
        std::cerr << "Remaining Points: " << (ordered.size() - ii) << std::endl;
        std::cerr << "Remaining Events: " << m_events.size() << std::endl;

        if(m_events.empty()) {
            std::cerr << "Events Empty, processing next point" << std::endl;
            sweep = points[ordered[ii]].y;
            draw_state(m_beach, m_events, prev_sweep, sweep);
            prev_sweep = sweep;
            processPoint(points[ordered[ii]]);
            ii++;
        } else if(ii == ordered.size()) {
            std::cerr << "Points Done, processing next event" << std::endl;
            auto evt = m_events.back(); // greater y's first (decreasing y)
            std::cerr << evt.circle.center.y << std::endl;
            sweep = evt.circle.center.y - evt.circle.radius;
            draw_state(m_beach, m_events, prev_sweep, sweep);
            prev_sweep = sweep;
            m_events.pop_back();
            processEvent(evt);
        } else {
            auto evt = m_events.back(); // greater y's first (decreasing y)
            std::cerr << "Next point: " << points[ordered[ii]].y
                << ", Next Event: " << evt.circle.center.y - evt.circle.radius
                << std::endl;
            if(points[ordered[ii]].y > evt.circle.center.y - evt.circle.radius) {
                sweep = points[ordered[ii]].y;
                draw_state(m_beach, m_events, prev_sweep, sweep);
                prev_sweep = sweep;
                processPoint(points[ordered[ii]]);
                ii++;
            } else {
                sweep = evt.circle.center.y - evt.circle.radius;
                draw_state(m_beach, m_events, prev_sweep, sweep);
                    prev_sweep = sweep;
                m_events.pop_back();
                processEvent(evt);
            }
        }

        std::cerr << "Final Beach: " << std::endl;
        for(const auto& inter: m_beach) {
            std::cerr << "(" << inter.pt_left << ", " << inter.pt_right << ")";
            if(inter.pt_left) std::cerr << "Point 0: " << *inter.pt_left << " ";
            if(inter.pt_right) std::cerr << "Point 1: " << *inter.pt_right << " ";
            std::cerr << std::endl;
        }

        std::cerr << "Final Events: " << std::endl;
        for(const auto& evt: m_events) {
            std::cerr << "at " << (evt.circle.center.y - evt.circle.radius)
                << "( "
                << evt.left_int.pt_left << ", "
                << evt.left_int.pt_right << ")"
                << " -- "
                << evt.right_int.pt_left << ", ("
                << evt.right_int.pt_right << ")"
                << std::endl;
        }

        for(const auto& tup_node: m_nodes) {
            assert(tup_node.second != nullptr);
            std::cerr << tup_node.second->x << ", "
                << tup_node.second->y << std::endl;
        }
    }

    //return voronoi;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x380, %rsp            # imm = 0x380
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, 0xe0(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x116d0
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x11700
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x11730
testb $0x1, %al
jne 0xd3b1
jmp 0xd49c
leaq -0x20(%rbp), %rdi
callq 0x11770
movq -0x1a8(%rbp), %rsi
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
addq $0x70, %rsi
leaq -0x38(%rbp), %rdi
callq 0x11790
movq -0x1a8(%rbp), %rsi
movsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsi)
movq -0x30(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
addq $0x78, %rsi
leaq -0x40(%rbp), %rdi
callq 0x117d0
movq -0x1a8(%rbp), %rsi
movsd (%rax), %xmm0
movsd %xmm0, 0x78(%rsi)
movq -0x30(%rbp), %rax
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
addq $0x80, %rsi
leaq -0x48(%rbp), %rdi
callq 0x11790
movq -0x1a8(%rbp), %rsi
movsd (%rax), %xmm0
movsd %xmm0, 0x80(%rsi)
movq -0x30(%rbp), %rax
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
addq $0x88, %rsi
leaq -0x50(%rbp), %rdi
callq 0x117d0
movq %rax, %rcx
movq -0x1a8(%rbp), %rax
movsd (%rcx), %xmm0
movsd %xmm0, 0x88(%rax)
leaq -0x20(%rbp), %rdi
callq 0x11810
jmp 0xd39b
movq 0x25b4d(%rip), %rdi     # 0x32ff0
leaq 0x16402(%rip), %rsi     # 0x238ac
callq 0x3250
movq %rax, %rdi
movq 0x25b07(%rip), %rsi     # 0x32fc0
callq 0x3290
movq -0x10(%rbp), %rdi
callq 0x11830
movq %rax, -0x1b8(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x11850
movq -0x1b8(%rbp), %rsi
movq -0x1b0(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x11870
jmp 0xd4f7
leaq -0x69(%rbp), %rdi
callq 0x118e0
movq $0x0, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x11830
movq %rax, %rcx
movq -0x1c0(%rbp), %rax
cmpq %rcx, %rax
jae 0xd587
movq -0x88(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq -0x88(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x1c8(%rbp), %rcx
movq %rcx, (%rax)
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0xd50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x69(%rbp), %rdi
callq 0x118e0
jmp 0xe318
leaq -0x68(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x11920
movq -0x1d0(%rbp), %rdi
movq %rax, -0x90(%rbp)
callq 0x11950
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq -0xa0(%rbp), %rdx
callq 0xe330
jmp 0xd5d8
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x119a0
movq -0x1e0(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xa8(%rbp)
movq 0x259dd(%rip), %rdi     # 0x32ff0
leaq 0x162a1(%rip), %rsi     # 0x238bb
callq 0x3250
movq %rax, -0x1d8(%rbp)
jmp 0xd628
movq -0x1d8(%rbp), %rdi
movq 0x2598a(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd63d
leaq -0x68(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x11920
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x11950
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x119e0
testb $0x1, %al
jne 0xd687
jmp 0xd704
leaq -0xb8(%rbp), %rdi
callq 0x11a20
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
movq -0x10(%rbp), %rdi
movq -0xc8(%rbp), %rsi
callq 0x11980
movq %rax, %rsi
movq 0x25939(%rip), %rdi     # 0x32ff0
callq 0xa320
movq %rax, -0x1e8(%rbp)
jmp 0xd6c5
movq -0x1e8(%rbp), %rdi
movq 0x258ed(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd6da
jmp 0xd6dc
leaq -0xb8(%rbp), %rdi
callq 0x11a40
jmp 0xd66e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x11cb0
jmp 0xe318
movq 0x258e5(%rip), %rdi     # 0x32ff0
movq 0x258ae(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd719
movq $0x0, -0xd0(%rbp)
movsd 0x15b34(%rip), %xmm0    # 0x23260
movsd %xmm0, -0xd8(%rbp)
movsd 0x15b24(%rip), %xmm0    # 0x23260
movsd %xmm0, -0xe0(%rbp)
movq -0x1a8(%rbp), %rdi
addq $0x40, %rdi
callq 0x11a60
movb %al, -0x1e9(%rbp)
jmp 0xd75c
movb -0x1e9(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x1ea(%rbp)
jne 0xd771
jmp 0xd79e
movq -0xd0(%rbp), %rax
movq %rax, -0x1f8(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x11a80
movq %rax, %rcx
movq -0x1f8(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0x1ea(%rbp)
movb -0x1ea(%rbp), %al
testb $0x1, %al
jne 0xd7ad
jmp 0xe306
movq 0x2583c(%rip), %rdi     # 0x32ff0
leaq 0x16111(%rip), %rsi     # 0x238cc
callq 0x3250
movq %rax, -0x200(%rbp)
jmp 0xd7c9
leaq -0x68(%rbp), %rdi
callq 0x11a80
movq -0x200(%rbp), %rdi
movq %rax, %rsi
movq -0xd0(%rbp), %rax
subq %rax, %rsi
callq 0x3060
movq %rax, -0x208(%rbp)
jmp 0xd7f4
movq -0x208(%rbp), %rdi
movq 0x257be(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd809
movq 0x257e0(%rip), %rdi     # 0x32ff0
leaq 0x160c8(%rip), %rsi     # 0x238df
callq 0x3250
movq %rax, -0x210(%rbp)
jmp 0xd825
movq -0x1a8(%rbp), %rdi
addq $0x40, %rdi
callq 0x11aa0
movq %rax, -0x218(%rbp)
jmp 0xd83e
movq -0x218(%rbp), %rsi
movq -0x210(%rbp), %rdi
callq 0x3060
movq %rax, -0x220(%rbp)
jmp 0xd85a
movq -0x220(%rbp), %rdi
movq 0x25758(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd86f
movq -0x1a8(%rbp), %rdi
addq $0x40, %rdi
callq 0x11a60
movb %al, -0x221(%rbp)
jmp 0xd887
movb -0x221(%rbp), %al
testb $0x1, %al
jne 0xd896
jmp 0xd98d
movq 0x25753(%rip), %rdi     # 0x32ff0
leaq 0x1604e(%rip), %rsi     # 0x238f2
callq 0x3250
movq %rax, -0x230(%rbp)
jmp 0xd8b2
movq -0x230(%rbp), %rdi
movq 0x25700(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd8c7
movq -0x10(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0xd0(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x238(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movq -0x1a8(%rbp), %rsi
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xe0(%rbp)
movq %rsi, %rdi
addq $0x10, %rdi
addq $0x40, %rsi
movsd -0xd8(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm1
callq 0x11ac0
jmp 0xd92b
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0xd0(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x240(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movq -0x1a8(%rbp), %rdi
movq %rax, %rsi
callq 0xcc60
jmp 0xd976
movq -0xd0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd0(%rbp)
jmp 0xdd6d
movq -0xd0(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x11a80
movq %rax, %rcx
movq -0x248(%rbp), %rax
cmpq %rcx, %rax
jne 0xdadf
movq 0x25632(%rip), %rdi     # 0x32ff0
leaq 0x15f51(%rip), %rsi     # 0x23916
callq 0x3250
movq %rax, -0x250(%rbp)
jmp 0xd9d3
movq -0x250(%rbp), %rdi
movq 0x255df(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xd9e8
movq -0x1a8(%rbp), %rdi
addq $0x40, %rdi
callq 0x11b40
movq %rax, -0x258(%rbp)
jmp 0xda01
movq -0x258(%rbp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movaps %xmm2, -0xf0(%rbp)
movaps %xmm1, -0x100(%rbp)
movaps %xmm0, -0x110(%rbp)
movss -0xec(%rbp), %xmm0
movq 0x255b9(%rip), %rdi     # 0x32ff0
callq 0x31b0
movq %rax, -0x260(%rbp)
jmp 0xda45
movq -0x260(%rbp), %rdi
movq 0x2556d(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xda5a
movq -0x1a8(%rbp), %rsi
movss -0xec(%rbp), %xmm0
movss -0xe8(%rbp), %xmm1
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xe0(%rbp)
movq %rsi, %rdi
addq $0x10, %rdi
addq $0x40, %rsi
movsd -0xd8(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm1
callq 0x11ac0
jmp 0xdaa3
movq -0x1a8(%rbp), %rdi
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
addq $0x40, %rdi
callq 0x11b80
jmp 0xdac5
movq -0x1a8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xa910
jmp 0xdada
jmp 0xdd6b
movq -0x1a8(%rbp), %rdi
addq $0x40, %rdi
callq 0x11b40
movq %rax, -0x268(%rbp)
jmp 0xdaf8
movq -0x268(%rbp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movaps %xmm2, -0x120(%rbp)
movaps %xmm1, -0x130(%rbp)
movaps %xmm0, -0x140(%rbp)
movq 0x254ca(%rip), %rdi     # 0x32ff0
leaq 0x15e0c(%rip), %rsi     # 0x23939
callq 0x3250
movq %rax, -0x270(%rbp)
jmp 0xdb3b
movq -0x10(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0xd0(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x280(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movq -0x270(%rbp), %rdi
movss 0x4(%rax), %xmm0
callq 0x31b0
movq %rax, -0x278(%rbp)
jmp 0xdb7f
movq -0x278(%rbp), %rdi
leaq 0x15db9(%rip), %rsi     # 0x23946
callq 0x3250
movq %rax, -0x288(%rbp)
jmp 0xdb9b
movq -0x288(%rbp), %rdi
movss -0x11c(%rbp), %xmm0
movss -0x118(%rbp), %xmm1
subss %xmm1, %xmm0
callq 0x31b0
movq %rax, -0x290(%rbp)
jmp 0xdbc4
movq -0x290(%rbp), %rdi
movq 0x253ee(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xdbd9
movq -0x10(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0xd0(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x298(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movss 0x4(%rax), %xmm0
movss -0x11c(%rbp), %xmm1
subss -0x118(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jbe 0xdce7
movq -0x10(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0xd0(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x2a0(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movq -0x1a8(%rbp), %rsi
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xe0(%rbp)
movq %rsi, %rdi
addq $0x10, %rdi
addq $0x40, %rsi
movsd -0xd8(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm1
callq 0x11ac0
jmp 0xdc85
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0xd0(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x11900
movq -0x2a8(%rbp), %rdi
movq (%rax), %rsi
callq 0x11980
movq -0x1a8(%rbp), %rdi
movq %rax, %rsi
callq 0xcc60
jmp 0xdcd0
movq -0xd0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd0(%rbp)
jmp 0xdd69
movq -0x1a8(%rbp), %rsi
movss -0x11c(%rbp), %xmm0
movss -0x118(%rbp), %xmm1
subss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xe0(%rbp)
movq %rsi, %rdi
addq $0x10, %rdi
addq $0x40, %rsi
movsd -0xd8(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm1
callq 0x11ac0
jmp 0xdd30
movq -0x1a8(%rbp), %rdi
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
addq $0x40, %rdi
callq 0x11b80
jmp 0xdd52
movq -0x1a8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xa910
jmp 0xdd67
jmp 0xdd69
jmp 0xdd6b
jmp 0xdd6d
movq 0x2527c(%rip), %rdi     # 0x32ff0
leaq 0x15bda(%rip), %rsi     # 0x23955
callq 0x3250
movq %rax, -0x2b0(%rbp)
jmp 0xdd89
movq -0x2b0(%rbp), %rdi
movq 0x25229(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xdd9e
movq -0x1a8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rdi
callq 0x102a0
movq %rax, -0x150(%rbp)
movq -0x148(%rbp), %rdi
callq 0x10300
movq %rax, -0x158(%rbp)
leaq -0x150(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x102d0
testb $0x1, %al
jne 0xddf2
jmp 0xdf79
leaq -0x150(%rbp), %rdi
callq 0x10970
movq %rax, -0x160(%rbp)
movq 0x251e4(%rip), %rdi     # 0x32ff0
leaq 0x15b64(%rip), %rsi     # 0x23977
callq 0x3250
movq %rax, -0x2b8(%rbp)
jmp 0xde21
movq -0x2b8(%rbp), %rdi
movq -0x160(%rbp), %rax
movq (%rax), %rsi
callq 0x31e0
movq %rax, -0x2c0(%rbp)
jmp 0xde40
movq -0x2c0(%rbp), %rdi
leaq 0x15229(%rip), %rsi     # 0x23077
callq 0x3250
movq %rax, -0x2c8(%rbp)
jmp 0xde5c
movq -0x2c8(%rbp), %rdi
movq -0x160(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x31e0
movq %rax, -0x2d0(%rbp)
jmp 0xde7c
movq -0x2d0(%rbp), %rdi
leaq 0x15b2f(%rip), %rsi     # 0x239b9
callq 0x3250
jmp 0xde91
movq -0x160(%rbp), %rax
cmpq $0x0, (%rax)
je 0xdef0
movq 0x2514b(%rip), %rdi     # 0x32ff0
leaq 0x15c5a(%rip), %rsi     # 0x23b06
callq 0x3250
movq %rax, -0x2d8(%rbp)
jmp 0xdeba
movq -0x2d8(%rbp), %rdi
movq -0x160(%rbp), %rax
movq (%rax), %rsi
callq 0xa320
movq %rax, -0x2e0(%rbp)
jmp 0xded9
movq -0x2e0(%rbp), %rdi
leaq 0x15251(%rip), %rsi     # 0x23138
callq 0x3250
jmp 0xdeee
jmp 0xdef0
movq -0x160(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xdf51
movq 0x250eb(%rip), %rdi     # 0x32ff0
leaq 0x15c0c(%rip), %rsi     # 0x23b18
callq 0x3250
movq %rax, -0x2e8(%rbp)
jmp 0xdf1a
movq -0x2e8(%rbp), %rdi
movq -0x160(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xa320
movq %rax, -0x2f0(%rbp)
jmp 0xdf3a
movq -0x2f0(%rbp), %rdi
leaq 0x151f0(%rip), %rsi     # 0x23138
callq 0x3250
jmp 0xdf4f
jmp 0xdf51
movq 0x25098(%rip), %rdi     # 0x32ff0
movq 0x25061(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xdf66
jmp 0xdf68
leaq -0x150(%rbp), %rdi
callq 0x109c0
jmp 0xddd6
movq 0x25070(%rip), %rdi     # 0x32ff0
leaq 0x159dc(%rip), %rsi     # 0x23963
callq 0x3250
movq %rax, -0x2f8(%rbp)
jmp 0xdf95
movq -0x2f8(%rbp), %rdi
movq 0x2501d(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xdfaa
movq -0x1a8(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
callq 0x11bd0
movq %rax, -0x300(%rbp)
jmp 0xdfd1
movq -0x300(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x168(%rbp), %rdi
callq 0x11c00
movq %rax, -0x308(%rbp)
jmp 0xdff4
movq -0x308(%rbp), %rax
movq %rax, -0x178(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x11c30
testb $0x1, %al
jne 0xe01e
jmp 0xe1c6
leaq -0x170(%rbp), %rdi
callq 0x11c60
movq %rax, -0x180(%rbp)
movq 0x24fb8(%rip), %rdi     # 0x32ff0
leaq 0x154f7(%rip), %rsi     # 0x23536
callq 0x3250
movq %rax, -0x310(%rbp)
jmp 0xe04d
movq -0x310(%rbp), %rdi
movq -0x180(%rbp), %rax
movss 0x24(%rax), %xmm0
movss 0x28(%rax), %xmm1
subss %xmm1, %xmm0
callq 0x31b0
movq %rax, -0x318(%rbp)
jmp 0xe077
movq -0x318(%rbp), %rdi
leaq 0x158ed(%rip), %rsi     # 0x23972
callq 0x3250
movq %rax, -0x320(%rbp)
jmp 0xe093
movq -0x320(%rbp), %rdi
movq -0x180(%rbp), %rax
movq (%rax), %rsi
callq 0x31e0
movq %rax, -0x328(%rbp)
jmp 0xe0b2
movq -0x328(%rbp), %rdi
leaq 0x14fb7(%rip), %rsi     # 0x23077
callq 0x3250
movq %rax, -0x330(%rbp)
jmp 0xe0ce
movq -0x330(%rbp), %rdi
movq -0x180(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x31e0
movq %rax, -0x338(%rbp)
jmp 0xe0ee
movq -0x338(%rbp), %rdi
leaq 0x158bd(%rip), %rsi     # 0x239b9
callq 0x3250
movq %rax, -0x340(%rbp)
jmp 0xe10a
movq -0x340(%rbp), %rdi
leaq 0x1542a(%rip), %rsi     # 0x23542
callq 0x3250
movq %rax, -0x348(%rbp)
jmp 0xe126
movq -0x348(%rbp), %rdi
movq -0x180(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x31e0
movq %rax, -0x350(%rbp)
jmp 0xe146
movq -0x350(%rbp), %rdi
leaq 0x15821(%rip), %rsi     # 0x23975
callq 0x3250
movq %rax, -0x358(%rbp)
jmp 0xe162
movq -0x358(%rbp), %rdi
movq -0x180(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x31e0
movq %rax, -0x360(%rbp)
jmp 0xe182
movq -0x360(%rbp), %rdi
leaq 0x15829(%rip), %rsi     # 0x239b9
callq 0x3250
movq %rax, -0x368(%rbp)
jmp 0xe19e
movq -0x368(%rbp), %rdi
movq 0x24e14(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xe1b3
jmp 0xe1b5
leaq -0x170(%rbp), %rdi
callq 0x11c80
jmp 0xe002
movq -0x1a8(%rbp), %rax
addq $0x90, %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
callq 0x11340
movq %rax, -0x190(%rbp)
movq -0x188(%rbp), %rdi
callq 0x11370
movq %rax, -0x198(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x113a0
testb $0x1, %al
jne 0xe21c
jmp 0xe301
leaq -0x190(%rbp), %rdi
callq 0x113d0
movq %rax, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rdi
addq $0x18, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x11400
testb $0x1, %al
jne 0xe249
jmp 0xe24b
jmp 0xe26a
leaq 0x154c9(%rip), %rdi     # 0x2371b
leaq 0x15075(%rip), %rsi     # 0x232ce
movl $0x3c4, %edx            # imm = 0x3C4
leaq 0x15714(%rip), %rcx     # 0x23979
callq 0x3170
movq -0x1a0(%rbp), %rdi
addq $0x18, %rdi
callq 0x11430
movss (%rax), %xmm0
movq 0x24d6b(%rip), %rdi     # 0x32ff0
callq 0x31b0
movq %rax, -0x370(%rbp)
jmp 0xe293
movq -0x370(%rbp), %rdi
leaq 0x14dd6(%rip), %rsi     # 0x23077
callq 0x3250
movq %rax, -0x378(%rbp)
jmp 0xe2af
movq -0x1a0(%rbp), %rdi
addq $0x18, %rdi
callq 0x11430
movq -0x378(%rbp), %rdi
movss 0x4(%rax), %xmm0
callq 0x31b0
movq %rax, -0x380(%rbp)
jmp 0xe2d9
movq -0x380(%rbp), %rdi
movq 0x24cd9(%rip), %rsi     # 0x32fc0
callq 0x3290
jmp 0xe2ee
jmp 0xe2f0
leaq -0x190(%rbp), %rdi
callq 0x11450
jmp 0xe200
jmp 0xd744
leaq -0x68(%rbp), %rdi
callq 0x11cb0
addq $0x380, %rsp            # imm = 0x380
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x3400
nopw %cs:(%rax,%rax)