// File: /workspace/github_cpp_makefile_star2_O2/sundale[P]gcode/rs274ngc/interp_cycles.cc
// Function: Interp::convert_cycle_yz(int, block_struct*, setup_struct*)
int Interp::convert_cycle_yz(int motion, //!< a g-code between G_81 and G_89, a canned cycle
                            block_pointer block,        //!< pointer to a block of RS274/NGC instructions  
                            setup_pointer settings)     //!< pointer to machine settings                   
{
  double aa;
  double aa_increment=0.;
  double bb;
  double bb_increment=0.;
  double cc;
  double clear_cc;
  double i;
  double j;
  double k;
  double old_cc;
  double radius_increment = 0.;
  double theta_increment = 0.;
  CANON_PLANE plane;
  double r;
  int repeat;
  CANON_MOTION_MODE save_mode;
  double save_tolerance; //save the current tolerance, to restore it lateron

  plane = CANON_PLANE_YZ;
  if (settings->motion_mode != motion) {
    CHKS((block->x_flag == OFF),
        _readers[(int)'x']? NCE_X_VALUE_UNSPECIFIED_IN_YZ_PLANE_CANNED_CYCLE: _("G19 canned cycle is not possible on a machine without X axis"));
  }
  block->x_number =
    block->x_flag == ON ? block->x_number : settings->cycle_cc;
  old_cc = settings->current_x;

  if (settings->distance_mode == MODE_ABSOLUTE) {
    aa_increment = 0.0;
    bb_increment = 0.0;
    r = block->r_number;
    cc = block->x_number;
    aa = block->y_flag == ON ? block->y_number : settings->current_y;
    bb = block->z_flag == ON ? block->z_number : settings->current_z;
  } else if (settings->distance_mode == MODE_INCREMENTAL) {
    if (block->y_flag == ON) aa_increment = block->y_number;
    if (block->z_flag == ON) bb_increment = block->z_number;
    r = (block->r_number + old_cc);
    cc = (r + block->x_number); /* [NCMS, page 98] */
    aa = settings->current_y;
    bb = settings->current_z;
  } else
    ERS(NCE_BUG_DISTANCE_MODE_NOT_G90_OR_G91);
  CHKS((r < cc), NCE_R_LESS_THAN_X_IN_CYCLE_IN_YZ_PLANE);

  if (old_cc < r) {
    STRAIGHT_TRAVERSE(block->line_number, r, settings->current_y, settings->current_z,
                      settings->AA_current, settings->BB_current, settings->CC_current,
                      settings->u_current, settings->v_current, settings->w_current);
    old_cc = r;
  }
  clear_cc = (settings->retract_mode == R_PLANE) ? r : old_cc;

  save_mode = GET_EXTERNAL_MOTION_CONTROL_MODE();
  save_tolerance = GET_EXTERNAL_MOTION_CONTROL_TOLERANCE();
  if (save_mode != CANON_EXACT_PATH)
    SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH, 0);

  switch (motion) {
  case G_81:
    CYCLE_MACRO(convert_cycle_g81(block, CANON_PLANE_YZ, aa, bb, clear_cc, cc))
      break;
  case G_82:
    CHKS(((settings->motion_mode != G_82) && (block->p_number == -1.0)),
        NCE_DWELL_TIME_P_WORD_MISSING_WITH_G82);
    block->p_number =
      block->p_number == -1.0 ? settings->cycle_p : block->p_number;
    CYCLE_MACRO(convert_cycle_g82(block, CANON_PLANE_YZ, aa, bb, clear_cc, cc,
                                  block->p_number))
      settings->cycle_p = block->p_number;
    break;
  case G_73:
    CHKS(((settings->motion_mode != G_73) && (block->q_number == -1.0)),
        NCE_Q_WORD_MISSING_WITH_G73);
    block->q_number =
      block->q_number == -1.0 ? settings->cycle_q : block->q_number;
    CYCLE_MACRO(convert_cycle_g73(block, CANON_PLANE_YZ, aa, bb, r, clear_cc, cc,
                                  block->q_number))
      settings->cycle_q = block->q_number;
    break;
  case G_83:
    CHKS(((settings->motion_mode != G_83) && (block->q_number == -1.0)),
        NCE_Q_WORD_MISSING_WITH_G83);
    block->q_number =
      block->q_number == -1.0 ? settings->cycle_q : block->q_number;
    CYCLE_MACRO(convert_cycle_g83(block, CANON_PLANE_YZ, aa, bb, r, clear_cc, cc,
                                  block->q_number))
      settings->cycle_q = block->q_number;
    break;
  case G_84:
    CYCLE_MACRO(convert_cycle_g84(block, CANON_PLANE_YZ, aa, bb, clear_cc, cc,
                                  settings->spindle_turning,
                                  settings->speed_feed_mode)) break;
  case G_85:
    CYCLE_MACRO(convert_cycle_g85(block, CANON_PLANE_YZ, aa, bb, clear_cc, cc))
      break;
  case G_86:
    CHKS(((settings->motion_mode != G_86) && (block->p_number == -1.0)),
        NCE_DWELL_TIME_P_WORD_MISSING_WITH_G86);
    block->p_number =
      block->p_number == -1.0 ? settings->cycle_p : block->p_number;
    CYCLE_MACRO(convert_cycle_g86(block, CANON_PLANE_YZ, aa, bb, clear_cc, cc,
                                  block->p_number,
                                  settings->spindle_turning)) settings->
      cycle_p = block->p_number;
    break;
  case G_87:
    if (settings->motion_mode != G_87) {
      CHKS((block->i_flag == OFF), NCE_I_WORD_MISSING_WITH_G87);
      CHKS((block->j_flag == OFF), NCE_J_WORD_MISSING_WITH_G87);
      CHKS((block->k_flag == OFF), NCE_K_WORD_MISSING_WITH_G87);
    }
    i = block->i_flag == ON ? block->i_number : settings->cycle_i;
    j = block->j_flag == ON ? block->j_number : settings->cycle_j;
    k = block->k_flag == ON ? block->k_number : settings->cycle_k;
    settings->cycle_i = i;
    settings->cycle_j = j;
    settings->cycle_k = k;
    if (settings->distance_mode == MODE_INCREMENTAL) {
      i = (cc + i);             /* i always absolute in function call below */
    }
    CYCLE_MACRO(convert_cycle_g87(block, CANON_PLANE_YZ, aa, (aa + j), bb,
                                  (bb + k), r, clear_cc, i, cc,
                                  settings->spindle_turning)) break;
  case G_88:
    CHKS(((settings->motion_mode != G_88) && (block->p_number == -1.0)),
        NCE_DWELL_TIME_P_WORD_MISSING_WITH_G88);
    block->p_number =
      block->p_number == -1.0 ? settings->cycle_p : block->p_number;
    CYCLE_MACRO(convert_cycle_g88(block, CANON_PLANE_YZ, aa, bb, cc,
                                  block->p_number,
                                  settings->spindle_turning)) settings->
      cycle_p = block->p_number;
    break;
  case G_89:
    CHKS(((settings->motion_mode != G_89) && (block->p_number == -1.0)),
        NCE_DWELL_TIME_P_WORD_MISSING_WITH_G89);
    block->p_number =
      block->p_number == -1.0 ? settings->cycle_p : block->p_number;
    CYCLE_MACRO(convert_cycle_g89(block, CANON_PLANE_YZ, aa, bb, clear_cc, cc,
                                  block->p_number))
      settings->cycle_p = block->p_number;
    break;
  default:
    ERS(NCE_BUG_FUNCTION_SHOULD_NOT_HAVE_BEEN_CALLED);
  }
  settings->current_y = aa;     /* CYCLE_MACRO updates aa and bb */
  settings->current_z = bb;
  settings->current_x = clear_cc;
  settings->cycle_cc = block->x_number;

  if (save_mode != CANON_EXACT_PATH)
    SET_MOTION_CONTROL_MODE(save_mode, save_tolerance);

  return INTERP_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, %rbx
movq %rdx, %r14
movl %esi, %r13d
movq %rdi, %r15
movb 0x270(%rdx), %al
cmpl %esi, 0x1798(%rcx)
je 0x1ce8b
testb %al, %al
movb $0x1, %al
je 0x1d17d
leaq 0x278(%r14), %rsi
leaq 0x628(%rbx), %rcx
testb $0x1, %al
cmovneq %rsi, %rcx
movsd (%rcx), %xmm1
movsd %xmm1, 0x278(%r14)
movsd 0x600(%rbx), %xmm2
movl 0x668(%rbx), %eax
cmpl $0x1, %eax
je 0x1cf14
testl %eax, %eax
jne 0x1d174
movsd 0x230(%r14), %xmm8
leaq 0x288(%r14), %rcx
leaq 0x608(%rbx), %rax
cmpb $0x0, 0x280(%r14)
cmovneq %rcx, %rax
leaq 0x298(%r14), %rdx
leaq 0x610(%rbx), %rcx
cmpb $0x0, 0x290(%r14)
cmovneq %rdx, %rcx
xorpd %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd %xmm0, -0x58(%rbp)
jmp 0x1cf73
xorpd %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
cmpb $0x1, 0x280(%r14)
movsd %xmm0, -0x58(%rbp)
jne 0x1cf3a
movsd 0x288(%r14), %xmm0
movsd %xmm0, -0x58(%rbp)
cmpb $0x1, 0x290(%r14)
jne 0x1cf52
movsd 0x298(%r14), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x230(%r14), %xmm8
addsd %xmm2, %xmm8
addsd %xmm8, %xmm1
leaq 0x608(%rbx), %rax
leaq 0x610(%rbx), %rcx
ucomisd %xmm8, %xmm1
jbe 0x1cf86
leaq 0x163f0(%rip), %rdi     # 0x33371
jmp 0x1d197
movq %rsi, -0x80(%rbp)
movsd %xmm1, -0x78(%rbp)
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd (%rcx), %xmm0
movsd %xmm0, -0x30(%rbp)
ucomisd %xmm2, %xmm8
movsd %xmm8, -0x50(%rbp)
jbe 0x1d000
movl 0x1d0(%r14), %edi
movsd 0x608(%rbx), %xmm1
movsd 0x610(%rbx), %xmm2
movsd 0x8(%rbx), %xmm3
movsd 0x20(%rbx), %xmm4
movsd 0x38(%rbx), %xmm5
movsd 0x50(%rbx), %xmm6
movsd 0x68(%rbx), %xmm7
movsd 0x80(%rbx), %xmm0
movsd %xmm0, (%rsp)
movapd %xmm8, %xmm0
callq 0xb970
movsd -0x50(%rbp), %xmm8
movapd %xmm8, %xmm2
cmpl $0x0, 0xc6a8(%rbx)
movsd %xmm8, -0x48(%rbp)
je 0x1d014
movsd %xmm2, -0x48(%rbp)
movsd %xmm2, -0x40(%rbp)
callq 0xb210
movl %eax, %r12d
callq 0xc720
movsd %xmm0, -0x98(%rbp)
movl %r12d, -0x64(%rbp)
cmpl $0x2, %r12d
je 0x1d044
pushq $0x2
popq %rdi
xorpd %xmm0, %xmm0
callq 0xb0e0
cmpl $0x2da, %r13d           # imm = 0x2DA
movq %r15, %r12
movsd -0x40(%rbp), %xmm2
je 0x1d582
cmpl $0x37a, %r13d           # imm = 0x37A
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movq -0x80(%rbp), %rax
je 0x1d227
cmpl $0x334, %r13d           # imm = 0x334
je 0x1d5c5
cmpl $0x33e, %r13d           # imm = 0x33E
je 0x1d412
cmpl $0x348, %r13d           # imm = 0x348
je 0x1d4f7
cmpl $0x352, %r13d           # imm = 0x352
je 0x1d457
cmpl $0x35c, %r13d           # imm = 0x35C
je 0x1d1ee
cmpl $0x366, %r13d           # imm = 0x366
je 0x1d299
cmpl $0x370, %r13d           # imm = 0x370
je 0x1d260
cmpl $0x32a, %r13d           # imm = 0x32A
jne 0x1d44b
movl 0x1c8(%r14), %r13d
pushq $0x2
popq %r15
testl %r13d, %r13d
jle 0x1db9d
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
movl %r15d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d126
jnp 0x1d13b
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movq %r12, %rdi
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm2
movsd -0x78(%rbp), %xmm3
callq 0xb330
decl %r13d
movsd -0x48(%rbp), %xmm2
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
jmp 0x1d0e7
leaq 0x15f3e(%rip), %rdi     # 0x330b9
jmp 0x1d197
cmpq $0x0, 0x788(%r15)
leaq 0x161a8(%rip), %rax     # 0x33334
leaq 0x16174(%rip), %rdi     # 0x33307
cmoveq %rax, %rdi
callq 0xb220
movq %r15, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0xb8e0
movq 0x1fdb0(%rip), %rbx     # 0x3cf60
leaq 0xc6d0(%rbx), %rdi
leaq 0x158c8(%rip), %rsi     # 0x32a86
pushq $0x50
popq %rdx
callq 0xb940
andw $0x0, 0xc71f(%rbx)
movl $0x1, 0xd670(%rbx)
pushq $0x5
popq %r13
movl %r13d, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x35c, 0x1798(%rbx)    # imm = 0x35C
movsd 0x210(%r14), %xmm3
je 0x1d5fe
ucomisd 0x12661(%rip), %xmm3    # 0x2f870
jne 0x1d5fe
jp 0x1d5fe
leaq 0x15f7c(%rip), %rdi     # 0x3319e
jmp 0x1dbfb
cmpl $0x37a, 0x1798(%rbx)    # imm = 0x37A
movsd 0x210(%r14), %xmm3
je 0x1d6d8
ucomisd 0x12628(%rip), %xmm3    # 0x2f870
jne 0x1d6d8
jp 0x1d6d8
leaq 0x15fd1(%rip), %rdi     # 0x3322c
jmp 0x1dbfb
cmpl $0x370, 0x1798(%rbx)    # imm = 0x370
movsd 0x210(%r14), %xmm3
je 0x1d79a
ucomisd 0x125ef(%rip), %xmm3    # 0x2f870
jne 0x1d79a
jp 0x1d79a
leaq 0x15f75(%rip), %rdi     # 0x33209
jmp 0x1dbfb
cmpl $0x366, 0x1798(%rbx)    # imm = 0x366
movb 0x198(%r14), %dl
jne 0x1d952
movb 0x1a8(%r14), %cl
movb 0x1b8(%r14), %al
leaq 0x1a0(%r14), %rsi
leaq 0x630(%rbx), %rdi
testb $0x1, %dl
cmovneq %rsi, %rdi
movsd (%rdi), %xmm3
leaq 0x1b0(%r14), %rdx
leaq 0x638(%rbx), %rsi
testb $0x1, %cl
cmovneq %rdx, %rsi
movsd (%rsi), %xmm4
leaq 0x1c0(%r14), %rcx
leaq 0x640(%rbx), %rdx
testb $0x1, %al
cmovneq %rcx, %rdx
movsd (%rdx), %xmm5
movsd %xmm3, 0x630(%rbx)
movsd %xmm4, -0x90(%rbp)
movsd %xmm4, 0x638(%rbx)
movsd %xmm5, -0x88(%rbp)
movsd %xmm5, 0x640(%rbx)
cmpl $0x1, 0x668(%rbx)
jne 0x1d33e
addsd -0x78(%rbp), %xmm3
movsd %xmm3, -0x70(%rbp)
movl 0x1c8(%r14), %r15d
incl %r15d
decl %r15d
testl %r15d, %r15d
jle 0x1db9d
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
pushq $0x2
popq %r13
movl %r13d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm4
movsd -0x40(%rbp), %xmm0
ucomisd %xmm4, %xmm0
jne 0x1d393
jnp 0x1d3b1
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movapd %xmm4, %xmm2
callq 0xc270
movsd -0x50(%rbp), %xmm4
movsd -0x90(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
addsd %xmm0, %xmm1
movsd -0x88(%rbp), %xmm3
movsd -0x30(%rbp), %xmm2
addsd %xmm2, %xmm3
movl 0xc6cc(%rbx), %ecx
movq %r12, %rdi
movq %r14, %rsi
movl %r13d, %edx
movsd -0x48(%rbp), %xmm5
movsd -0x70(%rbp), %xmm6
movsd -0x78(%rbp), %xmm7
callq 0xbb90
movsd -0x48(%rbp), %xmm2
testl %eax, %eax
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d34d
jmp 0x1da5c
cmpl $0x33e, 0x1798(%rbx)    # imm = 0x33E
movsd 0x220(%r14), %xmm3
je 0x1d879
ucomisd 0x1243d(%rip), %xmm3    # 0x2f870
jne 0x1d879
jp 0x1d879
leaq 0x15d40(%rip), %rdi     # 0x33186
jmp 0x1dbfb
leaq 0x15dfd(%rip), %rdi     # 0x3324f
jmp 0x1dbfb
movq %rax, %r13
movl 0x1c8(%r14), %r12d
pushq $0x2
popq %r15
testl %r12d, %r12d
jle 0x1d4ef
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
movl %r15d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d4a4
jnp 0x1d4b9
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm2
movsd -0x78(%rbp), %xmm3
callq 0xc2f0
decl %r12d
movsd -0x48(%rbp), %xmm2
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
jmp 0x1d465
movq %r13, %rax
jmp 0x1dba1
movl 0x1c8(%r14), %r15d
incl %r15d
decl %r15d
testl %r15d, %r15d
jle 0x1db9d
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
pushq $0x2
popq %r13
movl %r13d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d547
jnp 0x1d55c
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movl 0xc6cc(%rbx), %ecx
movq %r12, %rdi
callq 0xbe00
movsd -0x48(%rbp), %xmm2
testl %eax, %eax
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d501
jmp 0x1da5c
cmpl $0x2da, 0x1798(%rbx)    # imm = 0x2DA
movsd 0x220(%r14), %xmm3
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d988
ucomisd 0x122c3(%rip), %xmm3    # 0x2f870
jne 0x1d988
jp 0x1d988
leaq 0x15bae(%rip), %rdi     # 0x3316e
jmp 0x1dbfb
cmpl $0x334, 0x1798(%rbx)    # imm = 0x334
movsd 0x210(%r14), %xmm3
je 0x1dacb
ucomisd 0x1228a(%rip), %xmm3    # 0x2f870
jne 0x1dacb
jp 0x1dacb
leaq 0x15b52(%rip), %rdi     # 0x3314b
jmp 0x1dbfb
ucomisd 0x1226a(%rip), %xmm3    # 0x2f870
jne 0x1d612
jp 0x1d612
movsd 0x650(%rbx), %xmm3
leaq 0x210(%r14), %rax
movq %rax, -0x70(%rbp)
movsd %xmm3, 0x210(%r14)
movl 0x1c8(%r14), %r15d
incl %r15d
decl %r15d
testl %r15d, %r15d
jle 0x1d86f
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
pushq $0x2
popq %r13
movl %r13d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d676
jnp 0x1d68b
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movsd 0x210(%r14), %xmm4
movl 0xc6cc(%rbx), %ecx
movq %r12, %rdi
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm2
movsd -0x78(%rbp), %xmm3
callq 0xc790
movsd -0x48(%rbp), %xmm2
testl %eax, %eax
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d630
jmp 0x1da5c
ucomisd 0x12190(%rip), %xmm3    # 0x2f870
jne 0x1d6ec
jp 0x1d6ec
movsd 0x650(%rbx), %xmm3
leaq 0x210(%r14), %r13
movsd %xmm3, 0x210(%r14)
movl 0x1c8(%r14), %r12d
pushq $0x2
popq %r15
testl %r12d, %r12d
jle 0x1db8d
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
movl %r15d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d746
jnp 0x1d75b
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movsd 0x210(%r14), %xmm4
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm2
movsd -0x78(%rbp), %xmm3
callq 0xc670
decl %r12d
movsd -0x48(%rbp), %xmm2
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
jmp 0x1d707
ucomisd 0x120ce(%rip), %xmm3    # 0x2f870
jne 0x1d7ae
jp 0x1d7ae
movsd 0x650(%rbx), %xmm3
leaq 0x210(%r14), %rax
movq %rax, -0x70(%rbp)
movsd %xmm3, 0x210(%r14)
movl 0x1c8(%r14), %r15d
incl %r15d
decl %r15d
testl %r15d, %r15d
jle 0x1d86f
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
pushq $0x2
popq %r13
movl %r13d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d812
jnp 0x1d827
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movsd 0x210(%r14), %xmm3
movl 0xc6cc(%rbx), %ecx
movq %r12, %rdi
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x78(%rbp), %xmm2
callq 0xbfb0
movsd -0x48(%rbp), %xmm2
testl %eax, %eax
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d7cc
jmp 0x1da5c
movl $0x650, %eax            # imm = 0x650
jmp 0x1dac2
ucomisd 0x11fef(%rip), %xmm3    # 0x2f870
jne 0x1d88d
jp 0x1d88d
movsd 0x658(%rbx), %xmm3
leaq 0x220(%r14), %rax
movq %rax, -0x70(%rbp)
movsd %xmm3, 0x220(%r14)
movl 0x1c8(%r14), %r15d
incl %r15d
decl %r15d
testl %r15d, %r15d
jle 0x1dabd
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
pushq $0x2
popq %r13
movl %r13d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d8f1
jnp 0x1d90b
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd 0x220(%r14), %xmm5
movq %r12, %rdi
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm3
movsd -0x78(%rbp), %xmm4
callq 0xc380
movsd -0x48(%rbp), %xmm2
testl %eax, %eax
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d8ab
jmp 0x1da5c
testb %dl, %dl
je 0x1dbeb
cmpb $0x0, 0x1a8(%r14)
je 0x1dbf4
movb $0x1, %al
cmpb $0x0, 0x1b8(%r14)
movb $0x1, %cl
movb $0x1, %dl
jne 0x1d2be
leaq 0x1586e(%rip), %rdi     # 0x331f1
jmp 0x1dbfb
ucomisd 0x11ee0(%rip), %xmm3    # 0x2f870
jne 0x1d99c
jp 0x1d99c
movsd 0x658(%rbx), %xmm3
leaq 0x220(%r14), %rax
movq %rax, -0x70(%rbp)
movsd %xmm3, 0x220(%r14)
movl 0x1c8(%r14), %r15d
incl %r15d
decl %r15d
testl %r15d, %r15d
jle 0x1dabd
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
pushq $0x2
popq %r13
movl %r13d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1da00
jnp 0x1da1a
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd 0x220(%r14), %xmm5
movq %r12, %rdi
movq %r14, %rsi
movl %r13d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm3
movsd -0x78(%rbp), %xmm4
callq 0xc4b0
movsd -0x48(%rbp), %xmm2
testl %eax, %eax
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
je 0x1d9ba
movl %eax, %r13d
movq 0x1f4fa(%rip), %rbx     # 0x3cf60
movslq 0xd670(%rbx), %rax
cmpq $0x30, %rax
jg 0x1d1dc
imulq $0x50, %rax, %rax
leaq (%rbx,%rax), %rdi
addq $0xc6d0, %rdi           # imm = 0xC6D0
leaq 0x14ff9(%rip), %rsi     # 0x32a86
pushq $0x50
popq %rdx
callq 0xb940
movslq 0xd670(%rbx), %rax
imulq $0x50, %rax, %rcx
xorl %edx, %edx
movb %dl, 0xc71f(%rbx,%rcx)
incl %eax
movl %eax, 0xd670(%rbx)
movb %dl, 0xc720(%rbx,%rcx)
jmp 0x1d1dc
movl $0x658, %eax            # imm = 0x658
movq -0x70(%rbp), %r13
jmp 0x1db92
ucomisd 0x11d9d(%rip), %xmm3    # 0x2f870
jne 0x1dadf
jp 0x1dadf
movsd 0x650(%rbx), %xmm3
leaq 0x210(%r14), %r13
movsd %xmm3, 0x210(%r14)
movl 0x1c8(%r14), %r12d
pushq $0x2
popq %r15
testl %r12d, %r12d
jle 0x1db8d
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
addsd -0x60(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r14, %rsi
movl %r15d, %edx
movsd %xmm2, -0x40(%rbp)
callq 0xc270
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1db39
jnp 0x1db4e
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xc270
movsd 0x210(%r14), %xmm4
movq %r14, %rsi
movl %r15d, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x48(%rbp), %xmm2
movsd -0x78(%rbp), %xmm3
callq 0xb2e0
decl %r12d
movsd -0x48(%rbp), %xmm2
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
jmp 0x1dafa
movl $0x650, %eax            # imm = 0x650
movsd (%r13), %xmm2
movsd %xmm2, (%rbx,%rax)
movq -0x80(%rbp), %rax
movl -0x64(%rbp), %edi
xorl %r13d, %r13d
movsd %xmm0, 0x608(%rbx)
movsd %xmm1, 0x610(%rbx)
movsd -0x48(%rbp), %xmm0
movsd %xmm0, 0x600(%rbx)
movsd (%rax), %xmm0
movsd %xmm0, 0x628(%rbx)
cmpl $0x2, %edi
je 0x1d1dc
movsd -0x98(%rbp), %xmm0
callq 0xb0e0
jmp 0x1d1dc
leaq 0x155cf(%rip), %rdi     # 0x331c1
jmp 0x1dbfb
leaq 0x155de(%rip), %rdi     # 0x331d9
callq 0xb220
movq %r12, %rdi
jmp 0x1d19f