// File: /workspace/github_cpp_makefile_star2_O3/sundale[P]gcode/rs274ngc/interp_cycles.cc
// Function: Interp::convert_cycle_xy(int, block_struct*, setup_struct*)
int Interp::convert_cycle_xy(int motion, //!< a g-code between G_81 and G_89, a canned cycle
                            block_pointer block,        //!< pointer to a block of RS274 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;

  plane = CANON_PLANE_XY;
  if (settings->motion_mode != motion) {
    CHKS((block->z_flag == OFF),
        _readers[(int)'z']? NCE_Z_VALUE_UNSPECIFIED_IN_XY_PLANE_CANNED_CYCLE: _("G17 canned cycle is not possible on a machine without Z axis"));
  }
  block->z_number =
    block->z_flag == ON ? block->z_number : settings->cycle_cc;
  old_cc = settings->current_z;

  if (settings->distance_mode == MODE_ABSOLUTE) {
    double radius, theta;
    aa_increment = 0.0;
    bb_increment = 0.0;
    r = block->r_number;
    cc = block->z_number;
    if(block->radius_flag)
        radius = block->radius;
    else
        radius = hypot(settings->current_y, settings->current_x);
    if(block->theta_flag)
        theta = D2R(block->theta);
    else
        theta = atan2(settings->current_y, settings->current_x);
    if(block->radius_flag || block->theta_flag) {
        aa = radius * cos(theta);
        bb = radius * sin(theta);
    } else {
        aa = block->x_flag == ON ? block->x_number : settings->current_x;
        bb = block->y_flag == ON ? block->y_number : settings->current_y;
    }
  } else if (settings->distance_mode == MODE_INCREMENTAL) {
    if (block->x_flag) aa_increment = block->x_number;
    if (block->y_flag) bb_increment = block->y_number;
    if (block->radius_flag) radius_increment = block->radius;
    if (block->theta_flag) theta_increment = D2R(block->theta);
    r = (block->r_number + old_cc);
    cc = (r + block->z_number); /* [NCMS, page 98] */
    aa = settings->current_x;
    bb = settings->current_y;
  } else
    ERS(NCE_BUG_DISTANCE_MODE_NOT_G90_OR_G91);
  CHKS((r < cc), NCE_R_LESS_THAN_Z_IN_CYCLE_IN_XY_PLANE);

  if (old_cc < r) {
    STRAIGHT_TRAVERSE(block->line_number, settings->current_x, settings->current_y, r,
                      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_XY, 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_XY, 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_XY, 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_XY, 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_XY, aa, bb, clear_cc, cc,
                                  settings->spindle_turning,
                                  settings->speed_feed_mode)) break;
  case G_85:
      CYCLE_MACRO(convert_cycle_g85(block, CANON_PLANE_XY, 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_XY, 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) {
      k = (cc + k);             /* k always absolute in function call below */
    }
    CYCLE_MACRO(convert_cycle_g87(block, CANON_PLANE_XY, aa, (aa + i), bb,
                                  (bb + j), r, clear_cc, k, 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_XY, 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_XY, 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_x = aa;     /* CYCLE_MACRO updates aa and bb */
  settings->current_y = bb;
  settings->current_z = clear_cc;
  settings->cycle_cc = block->z_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 $0x98, %rsp
movq %rcx, %r14
movq %rdx, %r15
movl %esi, %r13d
movq %rdi, %r12
movb 0x290(%rdx), %al
cmpl %esi, 0x1798(%rcx)
je 0x1b24c
testb %al, %al
movb $0x1, %al
je 0x1b388
leaq 0x298(%r15), %rbx
leaq 0x628(%r14), %rcx
testb $0x1, %al
cmovneq %rbx, %rcx
movsd (%rcx), %xmm1
movsd %xmm1, 0x298(%r15)
movsd 0x610(%r14), %xmm4
movl 0x668(%r14), %eax
cmpl $0x1, %eax
je 0x1b2be
testl %eax, %eax
jne 0x1b37c
movsd 0x230(%r15), %xmm2
cmpl $0x0, 0x2a0(%r15)
movsd %xmm2, -0x78(%rbp)
movsd %xmm1, -0x68(%rbp)
movsd %xmm4, -0x48(%rbp)
je 0x1b3a8
movsd 0x2a8(%r15), %xmm0
jmp 0x1b3c9
xorpd %xmm0, %xmm0
movsd %xmm0, -0x88(%rbp)
cmpb $0x1, 0x270(%r15)
movsd %xmm0, -0x80(%rbp)
jne 0x1b2e7
movsd 0x278(%r15), %xmm0
movsd %xmm0, -0x80(%rbp)
cmpb $0x1, 0x280(%r15)
jne 0x1b302
movsd 0x288(%r15), %xmm0
movsd %xmm0, -0x88(%rbp)
xorpd %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
cmpl $0x0, 0x2a0(%r15)
movsd %xmm0, -0x58(%rbp)
je 0x1b328
movsd 0x2a8(%r15), %xmm0
movsd %xmm0, -0x58(%rbp)
cmpl $0x0, 0x2b0(%r15)
je 0x1b350
movsd 0x2b8(%r15), %xmm0
mulsd 0x18b95(%rip), %xmm0    # 0x33ed8
divsd 0x18b95(%rip), %xmm0    # 0x33ee0
movsd %xmm0, -0x60(%rbp)
movsd 0x230(%r15), %xmm2
addsd %xmm4, %xmm2
addsd %xmm2, %xmm1
movapd %xmm1, %xmm0
movsd 0x600(%r14), %xmm1
movsd 0x608(%r14), %xmm3
jmp 0x1b482
leaq 0x1bd36(%rip), %rdi     # 0x370b9
jmp 0x1b494
cmpq $0x0, 0x7a8(%r12)
leaq 0x1bce4(%rip), %rax     # 0x3707c
leaq 0x1bcb0(%rip), %rdi     # 0x3704f
cmoveq %rax, %rdi
jmp 0x1b494
movsd 0x600(%r14), %xmm1
movsd 0x608(%r14), %xmm0
callq 0xa290
movsd -0x48(%rbp), %xmm4
movsd -0x78(%rbp), %xmm2
movsd %xmm0, -0x30(%rbp)
cmpl $0x0, 0x2b0(%r15)
je 0x1b3f3
movsd 0x2b8(%r15), %xmm0
mulsd 0x18aef(%rip), %xmm0    # 0x33ed8
divsd 0x18aef(%rip), %xmm0    # 0x33ee0
jmp 0x1b414
movsd 0x600(%r14), %xmm1
movsd 0x608(%r14), %xmm0
callq 0xa100
movsd -0x48(%rbp), %xmm4
movsd -0x78(%rbp), %xmm2
cmpl $0x0, 0x2a0(%r15)
jne 0x1b42c
cmpl $0x0, 0x2b0(%r15)
je 0x1bbac
movsd %xmm0, -0x58(%rbp)
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x58(%rbp), %xmm0
callq 0xa1d0
movsd -0x48(%rbp), %xmm4
movsd -0x38(%rbp), %xmm1
movsd -0x78(%rbp), %xmm2
movapd %xmm0, %xmm3
mulsd -0x30(%rbp), %xmm3
xorpd %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd %xmm0, -0x58(%rbp)
movsd %xmm0, -0x88(%rbp)
movsd %xmm0, -0x80(%rbp)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
ucomisd %xmm2, %xmm0
jbe 0x1b4f3
leaq 0x1bc46(%rip), %rdi     # 0x370da
callq 0xa1f0
movq %r12, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0xa850
movq 0x25ab3(%rip), %rbx     # 0x40f60
leaq 0xc6d0(%rbx), %rdi
leaq 0x1b57a(%rip), %rsi     # 0x36a35
movl $0x50, %edx
callq 0xa8a0
movw $0x0, 0xc71f(%rbx)
movl $0x1, 0xd670(%rbx)
movl $0x5, %r13d
movl %r13d, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, -0xb8(%rbp)
movq %r12, %rbx
movsd %xmm3, -0x30(%rbp)
movsd %xmm1, -0x38(%rbp)
ucomisd %xmm4, %xmm2
movsd %xmm2, -0x78(%rbp)
jbe 0x1b566
movl 0x1d0(%r15), %edi
movsd 0x600(%r14), %xmm0
movsd 0x608(%r14), %xmm1
movsd 0x8(%r14), %xmm3
movsd 0x20(%r14), %xmm4
movsd 0x38(%r14), %xmm5
movsd 0x50(%r14), %xmm6
movsd 0x68(%r14), %xmm7
movsd 0x80(%r14), %xmm8
movsd %xmm8, (%rsp)
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movapd %xmm2, %xmm4
movq %r14, %r12
cmpl $0x0, 0xc6a8(%r14)
je 0x1b577
movapd %xmm4, %xmm2
movsd %xmm4, -0x48(%rbp)
movsd %xmm2, -0x70(%rbp)
callq 0xa1e0
movl %eax, %r14d
callq 0xb5b0
movsd %xmm0, -0xb0(%rbp)
movl %r14d, -0x94(%rbp)
cmpl $0x2, %r14d
je 0x1b5b1
xorpd %xmm0, %xmm0
movl $0x2, %edi
callq 0xa0d0
cmpl $0x351, %r13d           # imm = 0x351
movsd -0x70(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
jg 0x1b81e
cmpl $0x333, %r13d           # imm = 0x333
movq %r12, %r14
jle 0x1b892
cmpl $0x334, %r13d           # imm = 0x334
movq %rbx, %r12
je 0x1becd
cmpl $0x33e, %r13d           # imm = 0x33E
je 0x1c22c
cmpl $0x348, %r13d           # imm = 0x348
jne 0x1c2a0
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d268
movq %r12, %r13
incl %ebx
xorpd %xmm3, %xmm3
movq 0x25939(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1b647
jnp 0x1b6b7
ucomisd %xmm3, %xmm8
jne 0x1b65c
jp 0x1b65c
ucomisd %xmm3, %xmm1
jne 0x1b65c
jnp 0x1cc5e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x68(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x68(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x68(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1b6c4
jnp 0x1b73a
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1b6de
jp 0x1b6de
ucomisd %xmm3, %xmm1
jne 0x1b6de
jnp 0x1cc5e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x68(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x68(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1b79f
jnp 0x1b7e7
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd -0x30(%rbp), %xmm8
movsd -0x38(%rbp), %xmm1
cmpl $0x2, 0xc6cc(%r14)
jne 0x1d2bb
decl %ebx
movsd -0x70(%rbp), %xmm2
movsd %xmm2, -0x48(%rbp)
cmpl $0x2, %ebx
xorpd %xmm3, %xmm3
jge 0x1b627
jmp 0x1d268
cmpl $0x365, %r13d           # imm = 0x365
movq %r12, %r14
jle 0x1bb55
cmpl $0x366, %r13d           # imm = 0x366
movq %rbx, %r12
je 0x1bf07
cmpl $0x370, %r13d           # imm = 0x370
je 0x1c266
cmpl $0x37a, %r13d           # imm = 0x37A
jne 0x1c2a0
cmpl $0x37a, 0x1798(%r14) # imm = 0x37A
movsd 0x210(%r15), %xmm0
je 0x1ca00
ucomisd 0x17ff6(%rip), %xmm0    # 0x33870
jne 0x1ca00
jp 0x1ca00
leaq 0x1b99f(%rip), %rdi     # 0x3722c
jmp 0x1b494
cmpl $0x2da, %r13d           # imm = 0x2DA
movq %rbx, %r12
je 0x1bbed
cmpl $0x32a, %r13d           # imm = 0x32A
jne 0x1c2a0
movl 0x1c8(%r15), %r13d
testl %r13d, %r13d
jle 0x1d268
movq %r12, %rbx
incl %r13d
xorpd %xmm3, %xmm3
movq 0x25690(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1b8f0
jnp 0x1b960
ucomisd %xmm3, %xmm8
jne 0x1b905
jp 0x1b905
ucomisd %xmm3, %xmm1
jne 0x1b905
jnp 0x1c2ac
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1b96d
jnp 0x1b9e3
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1b987
jp 0x1b987
ucomisd %xmm3, %xmm1
jne 0x1b987
jnp 0x1c2ac
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1ba48
jnp 0x1ba90
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x68(%rbp), %xmm2
callq 0xa6d0
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm2
callq 0xa8d0
movsd -0x70(%rbp), %xmm2
decl %r13d
movsd %xmm2, -0x48(%rbp)
cmpl $0x1, %r13d
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jg 0x1b8d0
jmp 0x1d268
cmpl $0x352, %r13d           # imm = 0x352
movq %rbx, %r12
je 0x1bc27
cmpl $0x35c, %r13d           # imm = 0x35C
jne 0x1c2a0
cmpl $0x35c, 0x1798(%r14) # imm = 0x35C
movsd 0x210(%r15), %xmm0
je 0x1c2c0
ucomisd 0x17cdc(%rip), %xmm0    # 0x33870
jne 0x1c2c0
jp 0x1c2c0
leaq 0x1b5f7(%rip), %rdi     # 0x3719e
jmp 0x1b494
leaq 0x278(%r15), %rax
leaq 0x600(%r14), %rcx
cmpb $0x0, 0x270(%r15)
cmovneq %rax, %rcx
movsd (%rcx), %xmm1
leaq 0x288(%r15), %rax
cmpb $0x0, 0x280(%r15)
leaq 0x608(%r14), %rcx
cmovneq %rax, %rcx
movsd (%rcx), %xmm3
jmp 0x1b462
cmpl $0x2da, 0x1798(%r14) # imm = 0x2DA
movsd 0x220(%r15), %xmm0
je 0x1c532
ucomisd 0x17c61(%rip), %xmm0    # 0x33870
jne 0x1c532
jp 0x1c532
leaq 0x1b54c(%rip), %rdi     # 0x3716e
jmp 0x1b494
movl 0x1c8(%r15), %r13d
testl %r13d, %r13d
jle 0x1d268
movq %r12, %rbx
incl %r13d
xorpd %xmm3, %xmm3
movq 0x25318(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1bc68
jnp 0x1bcd8
ucomisd %xmm3, %xmm8
jne 0x1bc7d
jp 0x1bc7d
ucomisd %xmm3, %xmm1
jne 0x1bc7d
jnp 0x1c2ac
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1bce5
jnp 0x1bd5b
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1bcff
jp 0x1bcff
ucomisd %xmm3, %xmm1
jne 0x1bcff
jnp 0x1c2ac
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1bdc0
jnp 0x1be08
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x68(%rbp), %xmm2
callq 0xa6d0
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm2
callq 0xa6d0
movsd -0x70(%rbp), %xmm2
decl %r13d
movsd %xmm2, -0x48(%rbp)
cmpl $0x1, %r13d
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jg 0x1bc48
jmp 0x1d268
cmpl $0x334, 0x1798(%r14) # imm = 0x334
movsd 0x210(%r15), %xmm0
je 0x1c7a2
ucomisd 0x17981(%rip), %xmm0    # 0x33870
jne 0x1c7a2
jp 0x1c7a2
leaq 0x1b249(%rip), %rdi     # 0x3714b
jmp 0x1b494
cmpl $0x366, 0x1798(%r14) # imm = 0x366
movb 0x198(%r15), %dl
jne 0x1d227
movb 0x1a8(%r15), %cl
movb 0x1b8(%r15), %al
leaq 0x1a0(%r15), %rsi
leaq 0x630(%r14), %rdi
testb $0x1, %dl
cmovneq %rsi, %rdi
movsd (%rdi), %xmm0
leaq 0x1b0(%r15), %rdx
leaq 0x638(%r14), %rsi
testb $0x1, %cl
cmovneq %rdx, %rsi
movsd (%rsi), %xmm3
leaq 0x1c0(%r15), %rcx
leaq 0x640(%r14), %rdx
testb $0x1, %al
cmovneq %rcx, %rdx
movsd (%rdx), %xmm4
movsd %xmm0, -0x90(%rbp)
movsd %xmm0, 0x630(%r14)
movapd %xmm4, %xmm0
movsd %xmm3, -0xa8(%rbp)
movsd %xmm3, 0x638(%r14)
movsd %xmm4, 0x640(%r14)
cmpl $0x1, 0x668(%r14)
jne 0x1bfb5
addsd -0x68(%rbp), %xmm0
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d268
movsd %xmm0, -0xa0(%rbp)
movq %r12, -0x40(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x24f83(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1bffd
jnp 0x1c06d
ucomisd %xmm3, %xmm8
jne 0x1c012
jp 0x1c012
ucomisd %xmm3, %xmm1
jne 0x1c012
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1c07a
jnp 0x1c0f0
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1c094
jp 0x1c094
ucomisd %xmm3, %xmm1
jne 0x1c094
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm8
movsd -0x48(%rbp), %xmm0
ucomisd %xmm8, %xmm0
jne 0x1c157
jnp 0x1c1aa
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movapd %xmm8, %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm8
movsd -0x90(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
addsd %xmm0, %xmm1
movsd -0xa8(%rbp), %xmm3
movsd -0x30(%rbp), %xmm2
addsd %xmm2, %xmm3
movl 0xc6cc(%r14), %ecx
movq -0x40(%rbp), %rdi
movq %r15, %rsi
movl $0x1, %edx
movapd %xmm8, %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0xa0(%rbp), %xmm6
movsd -0x68(%rbp), %xmm7
callq 0xaac0
testl %eax, %eax
jne 0x1d1bd
decl %ebx
movsd -0x70(%rbp), %xmm2
movsd %xmm2, -0x48(%rbp)
cmpl $0x2, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jge 0x1bfdd
jmp 0x1d268
cmpl $0x33e, 0x1798(%r14) # imm = 0x33E
movsd 0x220(%r15), %xmm0
je 0x1cc72
ucomisd 0x17622(%rip), %xmm0    # 0x33870
jne 0x1cc72
jp 0x1cc72
leaq 0x1af25(%rip), %rdi     # 0x37186
jmp 0x1b494
cmpl $0x370, 0x1798(%r14) # imm = 0x370
movsd 0x210(%r15), %xmm0
je 0x1cee7
ucomisd 0x175e8(%rip), %xmm0    # 0x33870
jne 0x1cee7
jp 0x1cee7
leaq 0x1af6e(%rip), %rdi     # 0x37209
jmp 0x1b494
leaq 0x1afa8(%rip), %rdi     # 0x3724f
jmp 0x1b494
leaq 0x1ae4a(%rip), %rdi     # 0x370fd
callq 0xa1f0
movq %rbx, %rdi
jmp 0x1d17e
ucomisd 0x175a8(%rip), %xmm0    # 0x33870
jne 0x1c2d5
jp 0x1c2d5
movsd 0x650(%r14), %xmm0
movsd %xmm0, 0x210(%r15)
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d164
movq %r12, -0x40(%rbp)
leaq 0x210(%r15), %rax
movq %rax, -0x90(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x24c54(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1c32c
jnp 0x1c39c
ucomisd %xmm3, %xmm8
jne 0x1c341
jp 0x1c341
ucomisd %xmm3, %xmm1
jne 0x1c341
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1c3a9
jnp 0x1c41f
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1c3c3
jp 0x1c3c3
ucomisd %xmm3, %xmm1
jne 0x1c3c3
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1c484
jnp 0x1c4cc
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd 0x210(%r15), %xmm4
movl 0xc6cc(%r14), %ecx
movq -0x40(%rbp), %rdi
movq %r15, %rsi
movl $0x1, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm2
movsd -0x68(%rbp), %xmm3
callq 0xb620
testl %eax, %eax
jne 0x1d1bd
decl %ebx
movsd -0x70(%rbp), %xmm2
movsd %xmm2, -0x48(%rbp)
cmpl $0x2, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jge 0x1c30c
jmp 0x1d14f
ucomisd 0x17336(%rip), %xmm0    # 0x33870
jne 0x1c547
jp 0x1c547
movsd 0x658(%r14), %xmm0
movsd %xmm0, 0x220(%r15)
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d25d
movq %r12, -0x40(%rbp)
leaq 0x220(%r15), %rax
movq %rax, -0x90(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x249e2(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1c59e
jnp 0x1c60e
ucomisd %xmm3, %xmm8
jne 0x1c5b3
jp 0x1c5b3
ucomisd %xmm3, %xmm1
jne 0x1c5b3
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1c61b
jnp 0x1c691
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1c635
jp 0x1c635
ucomisd %xmm3, %xmm1
jne 0x1c635
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1c6f6
jnp 0x1c743
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd 0x220(%r15), %xmm5
movq -0x40(%rbp), %rdi
movq %r15, %rsi
movl $0x1, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm3
movsd -0x68(%rbp), %xmm4
callq 0xb350
testl %eax, %eax
jne 0x1d1bd
decl %ebx
movsd -0x70(%rbp), %xmm2
movsd %xmm2, -0x48(%rbp)
cmpl $0x2, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jge 0x1c57e
jmp 0x1cedd
ucomisd 0x170c6(%rip), %xmm0    # 0x33870
jne 0x1c7b7
jp 0x1c7b7
movsd 0x650(%r14), %xmm0
movsd %xmm0, 0x210(%r15)
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d164
movq %r12, %r13
leaq 0x210(%r15), %rax
movq %rax, -0x90(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x24773(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1c80d
jnp 0x1c87d
ucomisd %xmm3, %xmm8
jne 0x1c822
jp 0x1c822
ucomisd %xmm3, %xmm1
jne 0x1c822
jnp 0x1cc5e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1c88a
jnp 0x1c900
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1c8a4
jp 0x1c8a4
ucomisd %xmm3, %xmm1
jne 0x1c8a4
jnp 0x1cc5e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1c965
jnp 0x1c9ad
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd 0x210(%r15), %xmm4
movq %r15, %rsi
movl $0x1, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm2
movsd -0x68(%rbp), %xmm3
callq 0xa2b0
movsd -0x70(%rbp), %xmm2
decl %ebx
movsd %xmm2, -0x48(%rbp)
cmpl $0x1, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jg 0x1c7ed
jmp 0x1d14f
ucomisd 0x16e68(%rip), %xmm0    # 0x33870
jne 0x1ca15
jp 0x1ca15
movsd 0x650(%r14), %xmm0
movsd %xmm0, 0x210(%r15)
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d164
movq %r12, %r13
leaq 0x210(%r15), %rax
movq %rax, -0x90(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x24515(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1ca6b
jnp 0x1cadb
ucomisd %xmm3, %xmm8
jne 0x1ca80
jp 0x1ca80
ucomisd %xmm3, %xmm1
jne 0x1ca80
jnp 0x1cc5e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1cae8
jnp 0x1cb5e
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1cb02
jp 0x1cb02
ucomisd %xmm3, %xmm1
jne 0x1cb02
jnp 0x1cc5e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1cbc3
jnp 0x1cc0b
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd 0x210(%r15), %xmm4
movq %r15, %rsi
movl $0x1, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm2
movsd -0x68(%rbp), %xmm3
callq 0xb500
movsd -0x70(%rbp), %xmm2
decl %ebx
movsd %xmm2, -0x48(%rbp)
cmpl $0x1, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jg 0x1ca4b
jmp 0x1d14f
leaq 0x1a498(%rip), %rdi     # 0x370fd
callq 0xa1f0
movq %r13, %rdi
jmp 0x1d17e
ucomisd 0x16bf6(%rip), %xmm0    # 0x33870
jne 0x1cc87
jp 0x1cc87
movsd 0x658(%r14), %xmm0
movsd %xmm0, 0x220(%r15)
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d25d
movq %r12, -0x40(%rbp)
leaq 0x220(%r15), %rax
movq %rax, -0x90(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x242a2(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1ccde
jnp 0x1cd4e
ucomisd %xmm3, %xmm8
jne 0x1ccf3
jp 0x1ccf3
ucomisd %xmm3, %xmm1
jne 0x1ccf3
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1cd5b
jnp 0x1cdd1
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1cd75
jp 0x1cd75
ucomisd %xmm3, %xmm1
jne 0x1cd75
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1ce36
jnp 0x1ce83
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd 0x220(%r15), %xmm5
movq -0x40(%rbp), %rdi
movq %r15, %rsi
movl $0x1, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x70(%rbp), %xmm3
movsd -0x68(%rbp), %xmm4
callq 0xb220
testl %eax, %eax
jne 0x1d1bd
decl %ebx
movsd -0x70(%rbp), %xmm2
movsd %xmm2, -0x48(%rbp)
cmpl $0x2, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jge 0x1ccbe
movl $0x658, %eax            # imm = 0x658
jmp 0x1d154
ucomisd 0x16981(%rip), %xmm0    # 0x33870
jne 0x1cefc
jp 0x1cefc
movsd 0x650(%r14), %xmm0
movsd %xmm0, 0x210(%r15)
movl 0x1c8(%r15), %ebx
testl %ebx, %ebx
jle 0x1d164
movq %r12, -0x40(%rbp)
leaq 0x210(%r15), %rax
movq %rax, -0x90(%rbp)
incl %ebx
xorpd %xmm3, %xmm3
movq 0x2402d(%rip), %r12     # 0x40f60
movsd -0x58(%rbp), %xmm0
ucomisd %xmm3, %xmm0
addsd -0x80(%rbp), %xmm1
addsd -0x88(%rbp), %xmm8
movsd %xmm1, -0x38(%rbp)
jne 0x1cf53
jnp 0x1cfc3
ucomisd %xmm3, %xmm8
jne 0x1cf68
jp 0x1cf68
ucomisd %xmm3, %xmm1
jne 0x1cf68
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm8, -0x30(%rbp)
callq 0xa100
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd -0x60(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jne 0x1cfd0
jnp 0x1d046
ucomisd %xmm3, %xmm8
movsd -0x38(%rbp), %xmm1
jne 0x1cfea
jp 0x1cfea
ucomisd %xmm3, %xmm1
jne 0x1cfea
jnp 0x1d16e
movapd %xmm8, %xmm0
movsd %xmm1, -0x38(%rbp)
movsd %xmm8, -0x30(%rbp)
callq 0xa100
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0xa290
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xb550
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm0
callq 0xa1d0
movapd %xmm0, %xmm8
mulsd -0x30(%rbp), %xmm8
movsd %xmm8, -0x30(%rbp)
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movapd %xmm8, %xmm1
movsd -0x48(%rbp), %xmm2
callq 0xa8d0
movsd -0x78(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
ucomisd %xmm2, %xmm0
jne 0x1d0ab
jnp 0x1d0f3
movl 0x1d0(%r15), %edi
movsd 0x8(%r12), %xmm3
movsd 0x20(%r12), %xmm4
movsd 0x38(%r12), %xmm5
movsd 0x50(%r12), %xmm6
movsd 0x68(%r12), %xmm7
movsd 0x80(%r12), %xmm0
movsd %xmm0, (%rsp)
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0xa8d0
movsd 0x210(%r15), %xmm3
movl 0xc6cc(%r14), %ecx
movq -0x40(%rbp), %rdi
movq %r15, %rsi
movl $0x1, %edx
movsd -0x38(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
movsd -0x68(%rbp), %xmm2
callq 0xae90
testl %eax, %eax
jne 0x1d1bd
decl %ebx
movsd -0x70(%rbp), %xmm2
movsd %xmm2, -0x48(%rbp)
cmpl $0x2, %ebx
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm8
xorpd %xmm3, %xmm3
jge 0x1cf33
movl $0x650, %eax            # imm = 0x650
movq -0x90(%rbp), %rcx
movsd (%rcx), %xmm0
jmp 0x1d262
movl $0x650, %eax            # imm = 0x650
jmp 0x1d262
leaq 0x19f88(%rip), %rdi     # 0x370fd
callq 0xa1f0
movq -0x40(%rbp), %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0xa850
leaq 0xc6d0(%r12), %rdi
leaq 0x1989e(%rip), %rsi     # 0x36a35
movl $0x50, %edx
callq 0xa8a0
movw $0x0, 0xc71f(%r12)
movl $0x1, 0xd670(%r12)
jmp 0x1b4d8
movl %eax, %r13d
movslq 0xd670(%r12), %rax
cmpq $0x30, %rax
jg 0x1b4de
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq (%r12,%rax), %rdi
addq $0xc6d0, %rdi           # imm = 0xC6D0
leaq 0x19849(%rip), %rsi     # 0x36a35
movl $0x50, %edx
callq 0xa8a0
movslq 0xd670(%r12), %rax
leaq (%rax,%rax,4), %rcx
shlq $0x4, %rcx
xorl %edx, %edx
movb %dl, 0xc71f(%r12,%rcx)
incl %eax
movl %eax, 0xd670(%r12)
movb %dl, 0xc720(%r12,%rcx)
jmp 0x1b4de
testb %dl, %dl
je 0x1d32b
cmpb $0x0, 0x1a8(%r15)
je 0x1d337
movb $0x1, %al
cmpb $0x0, 0x1b8(%r15)
movb $0x1, %cl
movb $0x1, %dl
jne 0x1bf2d
leaq 0x19f99(%rip), %rdi     # 0x371f1
jmp 0x1b494
movl $0x658, %eax            # imm = 0x658
movsd %xmm0, (%r14,%rax)
xorl %r13d, %r13d
movsd %xmm1, 0x600(%r14)
movsd %xmm8, 0x608(%r14)
movsd %xmm2, 0x610(%r14)
movq -0xb8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x628(%r14)
movl -0x94(%rbp), %edi
cmpl $0x2, %edi
je 0x1b4de
movsd -0xb0(%rbp), %xmm0
callq 0xa0d0
jmp 0x1b4de
leaq 0x19a60(%rip), %rdi     # 0x36d22
callq 0xa1f0
movq %r13, %rdi
movq %rax, %rsi
xorl %eax, %eax
callq 0xa850
leaq 0xc6d0(%r12), %rdi
leaq 0x19a64(%rip), %rsi     # 0x36d47
movl $0x50, %edx
callq 0xa8a0
movb $0x0, 0xc71f(%r12)
leaq 0xc720(%r12), %rdi
leaq 0x19730(%rip), %rsi     # 0x36a35
movl $0x50, %edx
callq 0xa8a0
movw $0x0, 0xc76f(%r12)
movl $0x2, 0xd670(%r12)
jmp 0x1b4d8
leaq 0x19e8f(%rip), %rdi     # 0x371c1
jmp 0x1b494
leaq 0x19e9b(%rip), %rdi     # 0x371d9
jmp 0x1b494
nop