// File: sundale[P]gcode/rs274ngc/interp_convert.cc
// Function: Interp::convert_arc_comp2(int, block_struct*, setup_struct*, double, double, double, double, double, double, double, double, double, double, double)
int Interp::convert_arc_comp2(int move,  //!< either G_2 (cw arc) or G_3 (ccw arc)          
                              block_pointer block,       //!< pointer to a block of RS274/NGC instructions  
                              setup_pointer settings,    //!< pointer to machine settings                   
                              double end_x,      //!< x-value at end of programmed (then actual) arc
                              double end_y,      //!< y-value at end of programmed (then actual) arc
                              double end_z,      //!< z-value at end of arc 
                              double offset_x, double offset_y,
                              double AA_end,     //!< a-value at end of arc
                              double BB_end,     //!< b-value at end of arc
                              double CC_end,     //!< c-value at end of arc
                              double u, double v, double w) //!< uvw at end of arc
{
    double alpha;                 /* direction of tangent to start of arc */
    double arc_radius;
    double beta;                  /* angle between two tangents above */
    double centerx, centery;              /* center of arc */
    double delta;                 /* direction of radius from start of arc to center of arc */
    double gamma;                 /* direction of perpendicular to arc at end */
    double midx, midy;
    int side;
    double small = TOLERANCE_CONCAVE_CORNER;      /* angle for testing corners */
    double opx, opy, opz;
    double theta;                 /* direction of tangent to last cut */
    double tolerance;
    double tool_radius;
    int turn;                     /* number of full or partial circles CCW */
    int plane = settings->plane;
    double cx, cy, cz;
    double new_end_x, new_end_y;

    /* find basic arc data: center_x, center_y, and turn */

    comp_get_programmed(settings, &opx, &opy, &opz);
    comp_get_current(settings, &cx, &cy, &cz);

    tolerance = (settings->length_units == CANON_UNITS_INCHES) ?
        TOLERANCE_INCH : TOLERANCE_MM;

    if (block->r_flag) {
        CHP(arc_data_r(move, plane, opx, opy, end_x, end_y,
                       block->r_number, &centerx, &centery, &turn, tolerance));
    } else {
        CHP(arc_data_ijk(move, plane,
                         opx, opy, end_x, end_y,
                         (settings->ijk_distance_mode == MODE_ABSOLUTE),
                         offset_x, offset_y,
                         &centerx, &centery, &turn, tolerance));
    }

    inverse_time_rate_arc(opx, opy, opz, centerx, centery,
                          turn, end_x, end_y, end_z, block, settings);

    side = settings->cutter_comp_side;
    tool_radius = settings->cutter_comp_radius;   /* always is positive */
    arc_radius = hypot((centerx - end_x), (centery - end_y));
    theta = atan2(cy - opy, cx - opx);
    theta = (side == LEFT) ? (theta - M_PI_2l) : (theta + M_PI_2l);
    delta = atan2(centery - opy, centerx - opx);
    alpha = (move == G_3) ? (delta - M_PI_2l) : (delta + M_PI_2l);
    beta = (side == LEFT) ? (theta - alpha) : (alpha - theta);

    // normalize beta -90 to +270?
    beta = (beta > (1.5 * M_PIl)) ? (beta - (2 * M_PIl)) : (beta < -M_PI_2l) ? (beta + (2 * M_PIl)) : beta;

    if (((side == LEFT) && (move == G_3)) || ((side == RIGHT) && (move == G_2))) {
        // we are cutting inside the arc
        gamma = atan2((centery - end_y), (centerx - end_x));
        CHKS((arc_radius <= tool_radius),
            NCE_TOOL_RADIUS_NOT_LESS_THAN_ARC_RADIUS_WITH_COMP);
    } else {
        gamma = atan2((end_y - centery), (end_x - centerx));
        delta = (delta + M_PIl);
    }

    // move arc endpoint to the compensated position
    new_end_x = end_x + tool_radius * cos(gamma);
    new_end_y = end_y + tool_radius * sin(gamma);

    if (beta < -small || 
        beta > M_PIl + small ||
        // special detection for convex corner on tangent arc->arc (like atop the middle of "m" shape)
        // or tangent line->arc (atop "h" shape)
        (fabs(beta - M_PIl) < small && !TOOL_INSIDE_ARC(side, turn))
        ) {
        // concave
        if (qc().front().type != QARC_FEED) {
            // line->arc
            double cy = arc_radius * sin(beta - M_PI_2l);
            double toward_nominal;
            double dist_from_center;
            double angle_from_center;
          
            if TOOL_INSIDE_ARC(side, turn) {
                // tool is inside the arc
                dist_from_center = arc_radius - tool_radius;
                toward_nominal = cy + tool_radius;
                double l = toward_nominal / dist_from_center;
                CHKS((l > 1.0 || l < -1.0), _("Arc move in concave corner cannot be reached by the tool without gouging"));
                if(turn == 1) {
                    angle_from_center = theta + asin(l);
                } else {
                    angle_from_center = theta - asin(l);
                }
            } else {
                dist_from_center = arc_radius + tool_radius; 
                toward_nominal = cy - tool_radius;
                double l = toward_nominal / dist_from_center;
                CHKS((l > 1.0 || l < -1.0), _("Arc move in concave corner cannot be reached by the tool without gouging"));
                if(turn == 1) {
                    angle_from_center = theta + M_PIl - asin(l);
                } else {
                    angle_from_center = theta + M_PIl + asin(l);
                }
            }          
          
            midx = centerx + dist_from_center * cos(angle_from_center);
            midy = centery + dist_from_center * sin(angle_from_center);

            CHP(move_endpoint_and_flush(settings, midx, midy));
        } else {
            // arc->arc
            struct arc_feed &prev = qc().front().data.arc_feed;
            double oldrad = hypot(prev.center2 - prev.end2, prev.center1 - prev.end1);
            double newrad;
            if TOOL_INSIDE_ARC(side, turn) {
                newrad = arc_radius - tool_radius;
            } else {
                newrad = arc_radius + tool_radius;
            }
              
            double arc_cc, pullback, cc_dir, a;
            arc_cc = hypot(prev.center2 - centery, prev.center1 - centerx);

            CHKS((oldrad == 0 || arc_cc == 0), _("Arc to arc motion is invalid because the arcs have the same center"));
            a = (SQ(oldrad) + SQ(arc_cc) - SQ(newrad)) / (2 * oldrad * arc_cc);
            
            CHKS((a > 1.0 || a < -1.0), (_("Arc to arc motion makes a corner the compensated tool can't fit in without gouging")));
            pullback = acos(a);
            cc_dir = atan2(centery - prev.center2, centerx - prev.center1);

            double dir;
            if TOOL_INSIDE_ARC(side, prev.turn) {
                if(turn == 1) 
                    dir = cc_dir + pullback;
                else
                    dir = cc_dir - pullback;
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x350, %rsp            # imm = 0x350
movsd 0x20(%rbp), %xmm8
movsd 0x18(%rbp), %xmm8
movsd 0x10(%rbp), %xmm8
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movsd %xmm0, -0x30(%rbp)
movsd %xmm1, -0x38(%rbp)
movsd %xmm2, -0x40(%rbp)
movsd %xmm3, -0x48(%rbp)
movsd %xmm4, -0x50(%rbp)
movsd %xmm5, -0x58(%rbp)
movsd %xmm6, -0x60(%rbp)
movsd %xmm7, -0x68(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x208(%rbp)
movsd 0x5e0d1(%rip), %xmm0    # 0x78e28
movsd %xmm0, -0xc0(%rbp)
movq -0x28(%rbp), %rax
movl 0xc67c(%rax), %eax
movl %eax, -0xf8(%rbp)
movq -0x28(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
leaq -0xd0(%rbp), %rcx
leaq -0xd8(%rbp), %r8
callq 0x11360
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq -0x100(%rbp), %rdx
leaq -0x108(%rbp), %rcx
leaq -0x110(%rbp), %r8
callq 0x12360
movq -0x28(%rbp), %rax
movl 0x1690(%rax), %eax
movsd 0x5e054(%rip), %xmm0    # 0x78e18
movsd 0x5e054(%rip), %xmm1    # 0x78e20
movsd %xmm1, -0x200(%rbp)
cmpl $0x1, %eax
movsd %xmm0, -0x1f8(%rbp)
je 0x1adf1
movsd -0x200(%rbp), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movsd -0x1f8(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x229(%rax)
je 0x1af46
jmp 0x1ae14
movq -0x208(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0xf8(%rbp), %edx
movsd -0xc8(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
movsd -0x38(%rbp), %xmm3
movq -0x20(%rbp), %rax
movsd 0x230(%rax), %xmm4
movsd -0xe8(%rbp), %xmm5
leaq -0x88(%rbp), %rcx
leaq -0x90(%rbp), %r8
leaq -0xf4(%rbp), %r9
callq 0x11400
movl %eax, -0x124(%rbp)
cmpl $0x0, -0x124(%rbp)
je 0x1af3f
jmp 0x1ae81
movq 0x6c0d8(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x1af31
movq 0x6c0c4(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6c0b6(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5e9d3(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6c090(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6c082(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6c06a(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6c05a(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6c04d(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6c03f(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x124(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x1c601
jmp 0x1af41
jmp 0x1b08c
jmp 0x1af48
movq -0x208(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0xf8(%rbp), %edx
movsd -0xc8(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
movsd -0x38(%rbp), %xmm3
movq -0x28(%rbp), %rax
cmpl $0x0, 0x66c(%rax)
sete %al
andb $0x1, %al
movzbl %al, %ecx
movsd -0x48(%rbp), %xmm4
movsd -0x50(%rbp), %xmm5
movsd -0xe8(%rbp), %xmm6
leaq -0x88(%rbp), %r8
leaq -0x90(%rbp), %r9
leaq -0xf4(%rbp), %rax
movq %rax, (%rsp)
callq 0x11570
movl %eax, -0x128(%rbp)
cmpl $0x0, -0x128(%rbp)
je 0x1b088
jmp 0x1afca
movq 0x6bf8f(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x1b07a
movq 0x6bf7b(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6bf6d(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5e88a(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6bf47(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6bf39(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6bf21(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6bf11(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6bf04(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6bef6(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x128(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x1c601
jmp 0x1b08a
jmp 0x1b08c
movq -0x208(%rbp), %rdi
movsd -0xc8(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0xd8(%rbp), %xmm2
movsd -0x88(%rbp), %xmm3
movsd -0x90(%rbp), %xmm4
movl -0xf4(%rbp), %esi
movsd -0x30(%rbp), %xmm5
movsd -0x38(%rbp), %xmm6
movsd -0x40(%rbp), %xmm7
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x113c0
movq -0x28(%rbp), %rax
movl 0x624(%rax), %eax
movl %eax, -0xb4(%rbp)
movq -0x28(%rbp), %rax
movsd 0x618(%rax), %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0x88(%rbp), %xmm0
subsd -0x30(%rbp), %xmm0
movsd -0x90(%rbp), %xmm1
subsd -0x38(%rbp), %xmm1
callq 0x10460
movsd %xmm0, -0x78(%rbp)
movsd -0x108(%rbp), %xmm0
subsd -0xd0(%rbp), %xmm0
movsd -0x100(%rbp), %xmm1
subsd -0xc8(%rbp), %xmm1
callq 0x101d0
movsd %xmm0, -0xe0(%rbp)
cmpl $0x2, -0xb4(%rbp)
jne 0x1b171
fldl -0xe0(%rbp)
fldt 0x5bed9(%rip)           # 0x77040
faddp %st, %st(1)
fstpt -0x214(%rbp)
jmp 0x1b185
fldl -0xe0(%rbp)
fldt 0x5beb3(%rip)           # 0x77030
faddp %st, %st(1)
fstpt -0x214(%rbp)
fldt -0x214(%rbp)
fstpl -0x1b0(%rbp)
movsd -0x1b0(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0x90(%rbp), %xmm0
subsd -0xd0(%rbp), %xmm0
movsd -0x88(%rbp), %xmm1
subsd -0xc8(%rbp), %xmm1
callq 0x101d0
movsd %xmm0, -0x98(%rbp)
cmpl $0x1e, -0x14(%rbp)
jne 0x1b1ea
fldl -0x98(%rbp)
fldt 0x5be60(%rip)           # 0x77040
faddp %st, %st(1)
fstpt -0x220(%rbp)
jmp 0x1b1fe
fldl -0x98(%rbp)
fldt 0x5be3a(%rip)           # 0x77030
faddp %st, %st(1)
fstpt -0x220(%rbp)
fldt -0x220(%rbp)
fstpl -0x1b8(%rbp)
movsd -0x1b8(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
cmpl $0x2, -0xb4(%rbp)
jne 0x1b237
movsd -0xe0(%rbp), %xmm0
subsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x228(%rbp)
jmp 0x1b24c
movsd -0x70(%rbp), %xmm0
subsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0x228(%rbp)
movsd -0x228(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
fldl -0x80(%rbp)
fldt 0x5dc2e(%rip)           # 0x78e90
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
jbe 0x1b27f
jmp 0x1b26c
fldl -0x80(%rbp)
fldt 0x5dc3b(%rip)           # 0x78eb0
faddp %st, %st(1)
fstpt -0x234(%rbp)
jmp 0x1b2b8
fldl -0x80(%rbp)
fldt 0x5bdb8(%rip)           # 0x77040
fucompi %st(1), %st
fstp %st(0)
jbe 0x1b2a3
jmp 0x1b290
fldl -0x80(%rbp)
fldt 0x5dc07(%rip)           # 0x78ea0
faddp %st, %st(1)
fstpt -0x240(%rbp)
jmp 0x1b2ac
fldl -0x80(%rbp)
fstpt -0x240(%rbp)
fldt -0x240(%rbp)
fstpt -0x234(%rbp)
fldt -0x234(%rbp)
fstpl -0x1c0(%rbp)
movsd -0x1c0(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
cmpl $0x2, -0xb4(%rbp)
jne 0x1b2e0
cmpl $0x1e, -0x14(%rbp)
je 0x1b2f7
cmpl $0x1, -0xb4(%rbp)
jne 0x1b411
cmpl $0x14, -0x14(%rbp)
jne 0x1b411
movsd -0x90(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
movsd -0x88(%rbp), %xmm1
subsd -0x30(%rbp), %xmm1
callq 0x101d0
movsd %xmm0, -0xa0(%rbp)
movsd -0x78(%rbp), %xmm1
movsd -0xf0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x1b40d
jmp 0x1b337
leaq 0x5be33(%rip), %rdi     # 0x77171
callq 0x10380
movq -0x208(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x10df0
movq 0x6bc05(%rip), %rax     # 0x86f60
movl $0x0, 0xd670(%rax)
movq 0x6bbf4(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6bbe6(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5e503(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6bbc0(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6bbb2(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6bb9a(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6bb8a(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6bb7d(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6bb6f(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x1c601
jmp 0x1b40f
jmp 0x1b464
movsd -0x38(%rbp), %xmm0
movsd -0x90(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x88(%rbp), %xmm2
subsd %xmm2, %xmm1
callq 0x101d0
movsd %xmm0, -0xa0(%rbp)
fldl -0x98(%rbp)
fldt 0x5da74(%rip)           # 0x78ec0
faddp %st, %st(1)
fstpl -0x1c8(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x260(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x258(%rbp)
movsd -0xa0(%rbp), %xmm0
callq 0x12160
movsd -0x260(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x258(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x250(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x248(%rbp)
movsd -0xa0(%rbp), %xmm0
callq 0x10330
movsd -0x250(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x248(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movsd -0x80(%rbp), %xmm1
movsd -0xc0(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
ucomisd %xmm1, %xmm0
ja 0x1b596
fldl -0x80(%rbp)
fldl -0xc0(%rbp)
fldt 0x5d989(%rip)           # 0x78ec0
faddp %st, %st(1)
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
ja 0x1b596
jmp 0x1b543
fldl -0x80(%rbp)
fldt 0x5d984(%rip)           # 0x78ed0
faddp %st, %st(1)
movq %rsp, %rax
fstpt (%rax)
callq 0x101e0
fldl -0xc0(%rbp)
fucompi %st(1), %st
fstp %st(0)
jbe 0x1c22d
jmp 0x1b56a
cmpl $0x2, -0xb4(%rbp)
jne 0x1b580
cmpl $0x1, -0xf4(%rbp)
je 0x1c22d
cmpl $0x1, -0xb4(%rbp)
jne 0x1b596
cmpl $-0x1, -0xf4(%rbp)
je 0x1c22d
callq 0x103d0
movq %rax, %rdi
callq 0x11aa0
cmpl $0x2, (%rax)
je 0x1bb63
fldl -0x78(%rbp)
fstpt -0x26c(%rbp)
fldl -0x80(%rbp)
fldt 0x5ba82(%rip)           # 0x77040
faddp %st, %st(1)
movq %rsp, %rax
fstpt (%rax)
callq 0x10110
fldt -0x26c(%rbp)
fmulp %st, %st(1)
fstpl -0x1d0(%rbp)
movsd -0x1d0(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
cmpl $0x2, -0xb4(%rbp)
jne 0x1b5fa
cmpl $0x1, -0xf4(%rbp)
je 0x1b614
cmpl $0x1, -0xb4(%rbp)
jne 0x1b7d7
cmpl $-0x1, -0xf4(%rbp)
jne 0x1b7d7
movsd -0x78(%rbp), %xmm0
subsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x140(%rbp)
movsd -0x130(%rbp), %xmm0
addsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x138(%rbp)
movsd -0x138(%rbp), %xmm0
divsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x150(%rbp)
movsd -0x150(%rbp), %xmm0
movsd 0x5d7a7(%rip), %xmm1    # 0x78e10
ucomisd %xmm1, %xmm0
ja 0x1b685
movsd 0x5d1e9(%rip), %xmm0    # 0x78860
ucomisd -0x150(%rbp), %xmm0
jbe 0x1b75d
jmp 0x1b687
leaq 0x5e29d(%rip), %rdi     # 0x7992b
callq 0x10380
movq -0x208(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x10df0
movq 0x6b8b5(%rip), %rax     # 0x86f60
movl $0x0, 0xd670(%rax)
movq 0x6b8a4(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6b896(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5e1b3(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6b870(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b862(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6b84a(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6b83a(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6b82d(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b81f(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x1c601
jmp 0x1b75f
cmpl $0x1, -0xf4(%rbp)
jne 0x1b79e
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0x278(%rbp)
movsd -0x150(%rbp), %xmm0
callq 0x11d80
movaps %xmm0, %xmm1
movsd -0x278(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
jmp 0x1b7d2
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x150(%rbp), %xmm0
callq 0x11d80
movaps %xmm0, %xmm1
movsd -0x280(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
jmp 0x1b9c9
movsd -0x78(%rbp), %xmm0
addsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x140(%rbp)
movsd -0x130(%rbp), %xmm0
subsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x138(%rbp)
movsd -0x138(%rbp), %xmm0
divsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x158(%rbp)
movsd -0x158(%rbp), %xmm0
movsd 0x5d5e4(%rip), %xmm1    # 0x78e10
ucomisd %xmm1, %xmm0
ja 0x1b848
movsd 0x5d026(%rip), %xmm0    # 0x78860
ucomisd -0x158(%rbp), %xmm0
jbe 0x1b920
jmp 0x1b84a
leaq 0x5e0da(%rip), %rdi     # 0x7992b
callq 0x10380
movq -0x208(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x10df0
movq 0x6b6f2(%rip), %rax     # 0x86f60
movl $0x0, 0xd670(%rax)
movq 0x6b6e1(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6b6d3(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5dff0(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6b6ad(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b69f(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6b687(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6b677(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6b66a(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b65c(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x1c601
jmp 0x1b922
cmpl $0x1, -0xf4(%rbp)
jne 0x1b97a
fldl -0xe0(%rbp)
fldt 0x5d589(%rip)           # 0x78ec0
faddp %st, %st(1)
fstpt -0x28c(%rbp)
movsd -0x158(%rbp), %xmm0
callq 0x11d80
fldt -0x28c(%rbp)
movsd %xmm0, -0x1e8(%rbp)
fldl -0x1e8(%rbp)
fsubrp %st, %st(1)
fstpl -0x1f0(%rbp)
movsd -0x1f0(%rbp), %xmm0
movsd %xmm0, -0x148(%rbp)
jmp 0x1b9c7
fldl -0xe0(%rbp)
fldt 0x5d53a(%rip)           # 0x78ec0
faddp %st, %st(1)
fstpt -0x298(%rbp)
movsd -0x158(%rbp), %xmm0
callq 0x11d80
fldt -0x298(%rbp)
movsd %xmm0, -0x1d8(%rbp)
fldl -0x1d8(%rbp)
faddp %st, %st(1)
fstpl -0x1e0(%rbp)
movsd -0x1e0(%rbp), %xmm0
movsd %xmm0, -0x148(%rbp)
jmp 0x1b9c9
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x2b8(%rbp)
movsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
movsd -0x148(%rbp), %xmm0
callq 0x12160
movsd -0x2b8(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x2b0(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x2a8(%rbp)
movsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x2a0(%rbp)
movsd -0x148(%rbp), %xmm0
callq 0x10330
movsd -0x2a8(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x2a0(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rsi
movsd -0xa8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
callq 0x10c40
movl %eax, -0x15c(%rbp)
cmpl $0x0, -0x15c(%rbp)
je 0x1bb5c
jmp 0x1ba9e
movq 0x6b4bb(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x1bb4e
movq 0x6b4a7(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6b499(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5ddb6(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6b473(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b465(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6b44d(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6b43d(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6b430(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b422(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x15c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x1c601
jmp 0x1bb5e
jmp 0x1c157
callq 0x103d0
movq %rax, %rdi
callq 0x11aa0
addq $0x8, %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rax
movsd 0x28(%rax), %xmm0
movq -0x168(%rbp), %rax
subsd 0x18(%rax), %xmm0
movq -0x168(%rbp), %rax
movsd 0x20(%rax), %xmm1
movq -0x168(%rbp), %rax
subsd 0x10(%rax), %xmm1
callq 0x10460
movsd %xmm0, -0x170(%rbp)
cmpl $0x2, -0xb4(%rbp)
jne 0x1bbca
cmpl $0x1, -0xf4(%rbp)
je 0x1bbdc
cmpl $0x1, -0xb4(%rbp)
jne 0x1bbf3
cmpl $-0x1, -0xf4(%rbp)
jne 0x1bbf3
movsd -0x78(%rbp), %xmm0
subsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
jmp 0x1bc08
movsd -0x78(%rbp), %xmm0
addsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
movq -0x168(%rbp), %rax
movsd 0x28(%rax), %xmm0
subsd -0x90(%rbp), %xmm0
movq -0x168(%rbp), %rax
movsd 0x20(%rax), %xmm1
subsd -0x88(%rbp), %xmm1
callq 0x10460
movsd %xmm0, -0x180(%rbp)
movsd -0x170(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1bc52
jp 0x1bc52
jmp 0x1bc6d
movsd -0x180(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1bd45
jp 0x1bd45
jmp 0x1bc6f
leaq 0x5dcfe(%rip), %rdi     # 0x79974
callq 0x10380
movq -0x208(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x10df0
movq 0x6b2cd(%rip), %rax     # 0x86f60
movl $0x0, 0xd670(%rax)
movq 0x6b2bc(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6b2ae(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5dbcb(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6b288(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b27a(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6b262(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6b252(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6b245(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b237(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x1c601
jmp 0x1bd47
movsd -0x170(%rbp), %xmm1
movsd -0x170(%rbp), %xmm2
movsd -0x180(%rbp), %xmm0
mulsd -0x180(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x178(%rbp), %xmm0
movsd -0x178(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x5b262(%rip), %xmm1    # 0x77008
mulsd -0x170(%rbp), %xmm1
mulsd -0x180(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movsd -0x198(%rbp), %xmm0
movsd 0x5d03e(%rip), %xmm1    # 0x78e10
ucomisd %xmm1, %xmm0
ja 0x1bdee
movsd 0x5ca80(%rip), %xmm0    # 0x78860
ucomisd -0x198(%rbp), %xmm0
jbe 0x1bec6
jmp 0x1bdf0
leaq 0x5dbc0(%rip), %rdi     # 0x799b7
callq 0x10380
movq -0x208(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x10df0
movq 0x6b14c(%rip), %rax     # 0x86f60
movl $0x0, 0xd670(%rax)
movq 0x6b13b(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6b12d(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5da4a(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6b107(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b0f9(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6b0e1(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6b0d1(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6b0c4(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6b0b6(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x1c601
jmp 0x1bec8
movsd -0x198(%rbp), %xmm0
callq 0x110b0
movsd %xmm0, -0x188(%rbp)
movsd -0x90(%rbp), %xmm0
movq -0x168(%rbp), %rax
subsd 0x28(%rax), %xmm0
movsd -0x88(%rbp), %xmm1
movq -0x168(%rbp), %rax
subsd 0x20(%rax), %xmm1
callq 0x101d0
movsd %xmm0, -0x190(%rbp)
cmpl $0x2, -0xb4(%rbp)
jne 0x1bf28
movq -0x168(%rbp), %rax
cmpl $0x1, 0x30(%rax)
je 0x1bf3e
cmpl $0x1, -0xb4(%rbp)
jne 0x1bf7b
movq -0x168(%rbp), %rax
cmpl $-0x1, 0x30(%rax)
jne 0x1bf7b
cmpl $0x1, -0xf4(%rbp)
jne 0x1bf61
movsd -0x190(%rbp), %xmm0
addsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x1a0(%rbp)
jmp 0x1bf79
movsd -0x190(%rbp), %xmm0
subsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x1a0(%rbp)
jmp 0x1bfb8
cmpl $0x1, -0xf4(%rbp)
jne 0x1bf9e
movsd -0x190(%rbp), %xmm0
subsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x1a0(%rbp)
jmp 0x1bfb6
movsd -0x190(%rbp), %xmm0
addsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x1a0(%rbp)
jmp 0x1bfb8
movq -0x168(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x2d8(%rbp)
movsd -0x170(%rbp), %xmm0
movsd %xmm0, -0x2d0(%rbp)
movsd -0x1a0(%rbp), %xmm0
callq 0x12160
movsd -0x2d8(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x2d0(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movq -0x168(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x2c8(%rbp)
movsd -0x170(%rbp), %xmm0
movsd %xmm0, -0x2c0(%rbp)
movsd -0x1a0(%rbp), %xmm0
callq 0x10330
movsd -0x2c8(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x2c0(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rsi
movsd -0xa8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
callq 0x10c40
movl %eax, -0x1a4(%rbp)
cmpl $0x0, -0x1a4(%rbp)
je 0x1c153
jmp 0x1c095
movq 0x6aec4(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x1c145
movq 0x6aeb0(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x6aea2(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x5d7bf(%rip), %rsi     # 0x79892
movl $0x50, %edx
callq 0x10840
movq 0x6ae7c(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6ae6e(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x6ae56(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x6ae46(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x6ae39(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x6ae2b(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x1a4(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x1c601
jmp 0x1c155
jmp 0x1c157
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq -0x20(%rbp), %rax
movl 0x1d0(%rax), %eax
movl %eax, -0x2dc(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0x88(%rbp), %xmm2
movsd -0x90(%rbp), %xmm3
movl -0xf4(%rbp), %esi
movsd -0x30(%rbp), %xmm4
movsd -0x38(%rbp), %xmm5
callq 0x112d0
movq -0x2e8(%rbp), %rdi
movl -0x2dc(%rbp), %esi
movsd -0x118(%rbp), %xmm1
movsd -0x120(%rbp), %xmm2
movsd -0x88(%rbp), %xmm3
movsd -0x90(%rbp), %xmm4
movl -0xf4(%rbp), %edx
movsd -0x40(%rbp), %xmm5
movsd -0x58(%rbp), %xmm6
movsd -0x60(%rbp), %xmm7
movsd -0x68(%rbp), %xmm11
movsd 0x10(%rbp), %xmm10
movsd 0x18(%rbp), %xmm9
movsd 0x20(%rbp), %xmm8
movsd %xmm11, (%rsp)
movsd %xmm10, 0x8(%rsp)
movsd %xmm9, 0x10(%rsp)
movsd %xmm8, 0x18(%rsp)
callq 0x105d0
jmp 0x1c55f
movsd -0x80(%rbp), %xmm0
ucomisd -0xc0(%rbp), %xmm0
jbe 0x1c46e
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x318(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x310(%rbp)
movsd -0x98(%rbp), %xmm0
callq 0x12160
movsd -0x318(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x310(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x308(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x300(%rbp)
movsd -0x98(%rbp), %xmm0
callq 0x10330
movsd -0x308(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x300(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x10500
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x1d0(%rax), %esi
movsd -0xa8(%rbp), %xmm1
movsd -0xb0(%rbp), %xmm2
movsd -0xc8(%rbp), %xmm3
movsd -0xd0(%rbp), %xmm4
movl -0xb4(%rbp), %ecx
movl $0x1, %edx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpl $0x2, %ecx
cmovel %eax, %edx
movsd -0x110(%rbp), %xmm5
movsd -0x58(%rbp), %xmm6
movsd -0x60(%rbp), %xmm7
movsd -0x68(%rbp), %xmm11
movsd 0x10(%rbp), %xmm10
movsd 0x18(%rbp), %xmm9
movsd 0x20(%rbp), %xmm8
xorps %xmm0, %xmm0
movsd %xmm11, (%rsp)
movsd %xmm10, 0x8(%rsp)
movsd %xmm9, 0x10(%rsp)
movsd %xmm8, 0x18(%rsp)
callq 0x105d0
movq -0x28(%rbp), %rdi
callq 0x10500
movsd -0xa8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
callq 0x11060
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x20(%rbp), %rax
movl 0x1d0(%rax), %eax
movl %eax, -0x2ec(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0x88(%rbp), %xmm2
movsd -0x90(%rbp), %xmm3
movl -0xf4(%rbp), %esi
movsd -0x30(%rbp), %xmm4
movsd -0x38(%rbp), %xmm5
callq 0x112d0
movq -0x2f8(%rbp), %rdi
movl -0x2ec(%rbp), %esi
movsd -0x118(%rbp), %xmm1
movsd -0x120(%rbp), %xmm2
movsd -0x88(%rbp), %xmm3
movsd -0x90(%rbp), %xmm4
movl -0xf4(%rbp), %edx
movsd -0x40(%rbp), %xmm5
movsd -0x58(%rbp), %xmm6
movsd -0x60(%rbp), %xmm7
movsd -0x68(%rbp), %xmm11
movsd 0x10(%rbp), %xmm10
movsd 0x18(%rbp), %xmm9
movsd 0x20(%rbp), %xmm8
movsd %xmm11, (%rsp)
movsd %xmm10, 0x8(%rsp)
movsd %xmm9, 0x10(%rsp)
movsd %xmm8, 0x18(%rsp)
callq 0x105d0
jmp 0x1c55d
movq -0x28(%rbp), %rdi
callq 0x10500
movsd -0x100(%rbp), %xmm0
movsd -0x108(%rbp), %xmm1
callq 0x11060
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, -0x328(%rbp)
movq -0x20(%rbp), %rax
movl 0x1d0(%rax), %eax
movl %eax, -0x31c(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0x88(%rbp), %xmm2
movsd -0x90(%rbp), %xmm3
movl -0xf4(%rbp), %esi
movsd -0x30(%rbp), %xmm4
movsd -0x38(%rbp), %xmm5
callq 0x112d0
movq -0x328(%rbp), %rdi
movl -0x31c(%rbp), %esi
movsd -0x118(%rbp), %xmm1
movsd -0x120(%rbp), %xmm2
movsd -0x88(%rbp), %xmm3
movsd -0x90(%rbp), %xmm4
movl -0xf4(%rbp), %edx
movsd -0x40(%rbp), %xmm5
movsd -0x58(%rbp), %xmm6
movsd -0x60(%rbp), %xmm7
movsd -0x68(%rbp), %xmm11
movsd 0x10(%rbp), %xmm10
movsd 0x18(%rbp), %xmm9
movsd 0x20(%rbp), %xmm8
movsd %xmm11, (%rsp)
movsd %xmm10, 0x8(%rsp)
movsd %xmm9, 0x10(%rsp)
movsd %xmm8, 0x18(%rsp)
callq 0x105d0
jmp 0x1c55f
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rsi
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
movsd -0x40(%rbp), %xmm2
callq 0x115b0
movq -0x208(%rbp), %rdi
movq -0x28(%rbp), %rsi
movsd -0x118(%rbp), %xmm0
movsd -0x120(%rbp), %xmm1
movsd -0x40(%rbp), %xmm2
callq 0x11c70
movsd -0x58(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movsd -0x60(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0x20(%rax)
movsd -0x68(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0x38(%rax)
movsd 0x10(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0x50(%rax)
movsd 0x18(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0x68(%rax)
movsd 0x20(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0x80(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x350, %rsp            # imm = 0x350
popq %rbp
retq
nopl (%rax)