// File: /workspace/github_cpp_makefile_star2_O1/sundale[P]gcode/rs274ngc/interp_cycles.cc
// Function: Interp::cycle_feed(block_struct*, int, double, double, double)
int Interp::cycle_feed(block_pointer block,
                       CANON_PLANE plane,        //!< currently selected plane  
                       double end1,      //!< first coordinate value    
                       double end2,      //!< second coordinate value   
                       double end3)      //!< third coordinate value    
{
    if (plane == CANON_PLANE_XY)
        STRAIGHT_FEED(block->line_number, end1, end2, end3,
                      _setup.AA_current, _setup.BB_current, _setup.CC_current,
                      _setup.u_current, _setup.v_current, _setup.w_current);
    else if (plane == CANON_PLANE_YZ)
        STRAIGHT_FEED(block->line_number, end3, end1, end2,
                      _setup.AA_current, _setup.BB_current, _setup.CC_current,
                      _setup.u_current, _setup.v_current, _setup.w_current);
    else if (plane == CANON_PLANE_XZ)
        STRAIGHT_FEED(block->line_number, end2, end3, end1,
                      _setup.AA_current, _setup.BB_current, _setup.CC_current,
                      _setup.u_current, _setup.v_current, _setup.w_current);
    else if (plane == CANON_PLANE_UV)
        STRAIGHT_FEED(block->line_number, _setup.current_x, _setup.current_y, _setup.current_z,
                      _setup.AA_current, _setup.BB_current, _setup.CC_current,
                      end1, end2, end3);
    else if (plane == CANON_PLANE_VW)
        STRAIGHT_FEED(block->line_number, _setup.current_x, _setup.current_y, _setup.current_z,
                      _setup.AA_current, _setup.BB_current, _setup.CC_current,
                      end3, end1, end2);
    else // (plane == CANON_PLANE_UW)
        STRAIGHT_FEED(block->line_number, _setup.current_x, _setup.current_y, _setup.current_z,
                      _setup.AA_current, _setup.BB_current, _setup.CC_current,
                      end2, end3, end1);
    return INTERP_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movaps %xmm2, %xmm10
movaps %xmm1, %xmm8
movaps %xmm0, %xmm9
movl 0x1d0(%rsi), %edi
decl %edx
cmpl $0x4, %edx
ja 0x1b4d3
leaq 0x1e618(%rip), %rax     # 0x399ac
movslq (%rax,%rdx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x28bbc(%rip), %rax     # 0x43f60
movsd 0x8(%rax), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x38(%rax), %xmm5
movsd 0x50(%rax), %xmm6
movsd 0x68(%rax), %xmm7
movsd 0x80(%rax), %xmm0
movsd %xmm0, (%rsp)
movaps %xmm9, %xmm0
movaps %xmm8, %xmm1
movaps %xmm10, %xmm2
jmp 0x1b50f
movq 0x28b7e(%rip), %rax     # 0x43f60
movsd 0x600(%rax), %xmm0
movsd 0x608(%rax), %xmm1
movsd 0x610(%rax), %xmm2
movsd 0x8(%rax), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x38(%rax), %xmm5
movsd %xmm8, (%rsp)
movaps %xmm10, %xmm6
movaps %xmm9, %xmm7
jmp 0x1b50f
movq 0x28b3d(%rip), %rax     # 0x43f60
movsd 0x8(%rax), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x38(%rax), %xmm5
movsd 0x50(%rax), %xmm6
movsd 0x68(%rax), %xmm7
movsd 0x80(%rax), %xmm0
movsd %xmm0, (%rsp)
movaps %xmm8, %xmm0
movaps %xmm10, %xmm1
movaps %xmm9, %xmm2
jmp 0x1b50f
movq 0x28aff(%rip), %rax     # 0x43f60
movsd 0x600(%rax), %xmm0
movsd 0x608(%rax), %xmm1
movsd 0x610(%rax), %xmm2
movsd 0x8(%rax), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x38(%rax), %xmm5
movsd %xmm10, (%rsp)
movaps %xmm9, %xmm6
movaps %xmm8, %xmm7
jmp 0x1b50f
movq 0x28ac1(%rip), %rax     # 0x43f60
movsd 0x8(%rax), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x38(%rax), %xmm5
movsd 0x50(%rax), %xmm6
movsd 0x68(%rax), %xmm7
movsd 0x80(%rax), %xmm0
movsd %xmm0, (%rsp)
movaps %xmm10, %xmm0
movaps %xmm9, %xmm1
movaps %xmm8, %xmm2
jmp 0x1b50f
movq 0x28a86(%rip), %rax     # 0x43f60
movsd 0x600(%rax), %xmm0
movsd 0x608(%rax), %xmm1
movsd 0x610(%rax), %xmm2
movsd 0x8(%rax), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x38(%rax), %xmm5
movsd %xmm9, (%rsp)
movaps %xmm8, %xmm6
movaps %xmm10, %xmm7
callq 0xa6d0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq