// File: sundale[P]gcode/rs274ngc/interp_convert.cc
// Function: Interp::convert_stop(block_struct*, setup_struct*)
int Interp::convert_stop(block_pointer block,    //!< pointer to a block of RS274/NGC instructions
                        setup_pointer settings) //!< pointer to machine settings                 
{
  int index;
  char *line;
  int length;

  double cx, cy, cz;
  comp_get_current(settings, &cx, &cy, &cz);
  CHP(move_endpoint_and_flush(settings, cx, cy));
  dequeue_canons(settings);

  if (block->m_modes[4] == 0) {
    PROGRAM_STOP();
  } else if (block->m_modes[4] == 60) {
    PALLET_SHUTTLE();
    PROGRAM_STOP();
  } else if (block->m_modes[4] == 1) {
    OPTIONAL_PROGRAM_STOP();
  } else if ((block->m_modes[4] == 2) || (block->m_modes[4] == 30)) {   /* reset stuff here */
/*1*/
    settings->current_x += settings->origin_offset_x;
    settings->current_y += settings->origin_offset_y;
    settings->current_z += settings->origin_offset_z;
    settings->AA_current += settings->AA_origin_offset;
    settings->BB_current += settings->BB_origin_offset;
    settings->CC_current += settings->CC_origin_offset;
    settings->u_current += settings->u_origin_offset;
    settings->v_current += settings->v_origin_offset;
    settings->w_current += settings->w_origin_offset;
    rotate(&settings->current_x, &settings->current_y, settings->rotation_xy);

    settings->origin_index = 1;
    settings->parameters[5220] = 1.0;
    settings->origin_offset_x = USER_TO_PROGRAM_LEN(settings->parameters[5221]);
    settings->origin_offset_y = USER_TO_PROGRAM_LEN(settings->parameters[5222]);
    settings->origin_offset_z = USER_TO_PROGRAM_LEN(settings->parameters[5223]);
    settings->AA_origin_offset = USER_TO_PROGRAM_ANG(settings->parameters[5224]);
    settings->BB_origin_offset = USER_TO_PROGRAM_ANG(settings->parameters[5225]);
    settings->CC_origin_offset = USER_TO_PROGRAM_ANG(settings->parameters[5226]);
    settings->u_origin_offset = USER_TO_PROGRAM_LEN(settings->parameters[5227]);
    settings->v_origin_offset = USER_TO_PROGRAM_LEN(settings->parameters[5228]);
    settings->w_origin_offset = USER_TO_PROGRAM_LEN(settings->parameters[5229]);
    settings->rotation_xy = settings->parameters[5230];

    rotate(&settings->current_x, &settings->current_y, -settings->rotation_xy);
    settings->current_x -= settings->origin_offset_x;
    settings->current_y -= settings->origin_offset_y;
    settings->current_z -= settings->origin_offset_z;
    settings->AA_current -= settings->AA_origin_offset;
    settings->BB_current -= settings->BB_origin_offset;
    settings->CC_current -= settings->CC_origin_offset;
    settings->u_current -= settings->u_origin_offset;
    settings->v_current -= settings->v_origin_offset;
    settings->w_current -= settings->w_origin_offset;

    SET_ORIGIN_OFFSETS(settings->origin_offset_x + settings->axis_offset_x,
                       settings->origin_offset_y + settings->axis_offset_y,
                       settings->origin_offset_z + settings->axis_offset_z,
                       settings->AA_origin_offset + settings->AA_axis_offset,
                       settings->BB_origin_offset + settings->BB_axis_offset,
                       settings->CC_origin_offset + settings->CC_axis_offset,
                       settings->u_origin_offset + settings->u_axis_offset,
                       settings->v_origin_offset + settings->v_axis_offset,
                       settings->w_origin_offset + settings->w_axis_offset);
    SET_XY_ROTATION(settings->rotation_xy);

/*2*/ if (settings->plane != CANON_PLANE_XY) {
      SELECT_PLANE(CANON_PLANE_XY);
      settings->plane = CANON_PLANE_XY;
    }

/*3*/
    settings->distance_mode = MODE_ABSOLUTE;

/*4*/ settings->feed_mode = UNITS_PER_MINUTE;
    SET_FEED_MODE(0);
    settings->feed_rate = block->f_number;
    SET_FEED_RATE(0);

/*5*/ if (settings->feed_override != ON) {
      ENABLE_FEED_OVERRIDE();
      settings->feed_override = ON;
    }
    if (settings->speed_override != ON) {
      ENABLE_SPEED_OVERRIDE();
      settings->speed_override = ON;
    }

/*6*/
    settings->cutter_comp_side = OFF;
    settings->cutter_comp_firstmove = ON;

/*7*/ STOP_SPINDLE_TURNING();
    settings->spindle_turning = CANON_STOPPED;

    /* turn off FPR */
    SET_SPINDLE_MODE(0);

/*8*/ settings->motion_mode = G_1;

/*9*/ if (settings->mist == ON) {
      MIST_OFF();
      settings->mist = OFF;
    }
    if (settings->flood == ON) {
      FLOOD_OFF();
      settings->flood = OFF;
    }

    if (block->m_modes[4] == 30)
      PALLET_SHUTTLE();
    PROGRAM_END();
    if (_setup.percent_flag == ON && _setup.file_pointer) {
      line = _setup.linetext;
      for (;;) {                /* check for ending percent sign and comment if missing */
        if (fgets(line, LINELEN, _setup.file_pointer) == NULL) {
          enqueue_COMMENT("interpreter: percent sign missing from end of file");
          break;
        }
        length = strlen(line);
        if (length == (LINELEN - 1)) {       // line is too long. need to finish reading the line
          for (; fgetc(_setup.file_pointer) != '\n';);
          continue;
        }
        for (index = (length - 1);      // index set on last char
             (index >= 0) && (isspace(line[index])); index--);
        if (line[index] == '%') // found line with % at end
        {
          for (index--; (index >= 0) && (isspace(line[index])); index--);
          if (index == -1)      // found line with only percent sign
            break;
        }
      }
    }
    return INTERP_EXIT;
  } else
    ERS(NCE_BUG_CODE_NOT_M0_M1_M2_M30_M60);
  return INTERP_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x60(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x40(%rbp), %rdx
leaq -0x48(%rbp), %rcx
leaq -0x50(%rbp), %r8
callq 0x12360
movq -0x60(%rbp), %rdi
movq -0x20(%rbp), %rsi
movsd -0x40(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
callq 0x10c40
movl %eax, -0x54(%rbp)
cmpl $0x0, -0x54(%rbp)
je 0x2f2b5
jmp 0x2f1fa
movq 0x57d5f(%rip), %rax     # 0x86f60
cmpl $0x31, 0xd670(%rax)
jge 0x2f2aa
movq 0x57d4b(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x57d3d(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x4bc35(%rip), %rsi     # 0x7ae6d
movl $0x50, %edx
callq 0x10840
movq 0x57d17(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x57d09(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x57cf1(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x57ce1(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x57cd4(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x57cc6(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl -0x54(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x2ff51
jmp 0x2f2b7
movq -0x20(%rbp), %rdi
callq 0x10500
movq -0x18(%rbp), %rax
cmpl $0x0, 0x1f0(%rax)
jne 0x2f2d7
callq 0x11420
jmp 0x2ff4a
movq -0x18(%rbp), %rax
cmpl $0x3c, 0x1f0(%rax)
jne 0x2f2f3
callq 0x121b0
callq 0x11420
jmp 0x2ff48
movq -0x18(%rbp), %rax
cmpl $0x1, 0x1f0(%rax)
jne 0x2f30a
callq 0x11000
jmp 0x2ff46
movq -0x18(%rbp), %rax
cmpl $0x2, 0x1f0(%rax)
je 0x2f328
movq -0x18(%rbp), %rax
cmpl $0x1e, 0x1f0(%rax)
jne 0x2fe74
movq -0x60(%rbp), %rdi
movq -0x20(%rbp), %rax
movsd 0x17a0(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x600(%rax), %xmm0
movsd %xmm0, 0x600(%rax)
movq -0x20(%rbp), %rax
movsd 0x17a8(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x608(%rax), %xmm0
movsd %xmm0, 0x608(%rax)
movq -0x20(%rbp), %rax
movsd 0x17b0(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x610(%rax), %xmm0
movsd %xmm0, 0x610(%rax)
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movq -0x20(%rbp), %rax
movsd 0x28(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x20(%rax), %xmm0
movsd %xmm0, 0x20(%rax)
movq -0x20(%rbp), %rax
movsd 0x40(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x38(%rax), %xmm0
movsd %xmm0, 0x38(%rax)
movq -0x20(%rbp), %rax
movsd 0x58(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x50(%rax), %xmm0
movsd %xmm0, 0x50(%rax)
movq -0x20(%rbp), %rax
movsd 0x70(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x68(%rax), %xmm0
movsd %xmm0, 0x68(%rax)
movq -0x20(%rbp), %rax
movsd 0x88(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x80(%rax), %xmm0
movsd %xmm0, 0x80(%rax)
movq -0x20(%rbp), %rsi
addq $0x600, %rsi            # imm = 0x600
movq -0x20(%rbp), %rdx
addq $0x608, %rdx            # imm = 0x608
movq -0x20(%rbp), %rax
movsd 0x17b8(%rax), %xmm0
callq 0x11cc0
movq -0x20(%rbp), %rax
movl $0x1, 0x179c(%rax)
movq -0x20(%rbp), %rax
movsd 0x499b0(%rip), %xmm0    # 0x78e10
movsd %xmm0, 0xbae0(%rax)
movq -0x20(%rbp), %rax
movsd 0xbae8(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
callq 0x11030
movaps %xmm0, %xmm1
movsd -0x70(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movq 0x57aca(%rip), %rax     # 0x86f60
cmpl $0x1, 0x1690(%rax)
jne 0x2f4ae
movsd 0x499a1(%rip), %xmm0    # 0x78e48
movsd %xmm0, -0x78(%rbp)
jmp 0x2f4f4
movq 0x57aab(%rip), %rax     # 0x86f60
movl 0x1690(%rax), %eax
movsd 0x4997d(%rip), %xmm0    # 0x78e40
movsd 0x49945(%rip), %xmm1    # 0x78e10
movsd %xmm1, -0x88(%rbp)
cmpl $0x3, %eax
movsd %xmm0, -0x80(%rbp)
je 0x2f4ea
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x68(%rbp), %xmm0
movsd -0x78(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x17a0(%rax)
movq -0x20(%rbp), %rax
movsd 0xbaf0(%rax), %xmm0
movsd %xmm0, -0x98(%rbp)
callq 0x11030
movaps %xmm0, %xmm1
movsd -0x98(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x90(%rbp)
movq 0x57a1b(%rip), %rax     # 0x86f60
cmpl $0x1, 0x1690(%rax)
jne 0x2f560
movsd 0x498f2(%rip), %xmm0    # 0x78e48
movsd %xmm0, -0xa0(%rbp)
jmp 0x2f5b2
movq 0x579f9(%rip), %rax     # 0x86f60
movl 0x1690(%rax), %eax
movsd 0x498cb(%rip), %xmm0    # 0x78e40
movsd 0x49893(%rip), %xmm1    # 0x78e10
movsd %xmm1, -0xb0(%rbp)
cmpl $0x3, %eax
movsd %xmm0, -0xa8(%rbp)
je 0x2f5a2
movsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x90(%rbp), %xmm0
movsd -0xa0(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x17a8(%rax)
movq -0x20(%rbp), %rax
movsd 0xbaf8(%rax), %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0x11030
movaps %xmm0, %xmm1
movsd -0xc0(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movq 0x57957(%rip), %rax     # 0x86f60
cmpl $0x1, 0x1690(%rax)
jne 0x2f624
movsd 0x4982e(%rip), %xmm0    # 0x78e48
movsd %xmm0, -0xc8(%rbp)
jmp 0x2f676
movq 0x57935(%rip), %rax     # 0x86f60
movl 0x1690(%rax), %eax
movsd 0x49807(%rip), %xmm0    # 0x78e40
movsd 0x497cf(%rip), %xmm1    # 0x78e10
movsd %xmm1, -0xd8(%rbp)
cmpl $0x3, %eax
movsd %xmm0, -0xd0(%rbp)
je 0x2f666
movsd -0xd8(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd -0xb8(%rbp), %xmm0
movsd -0xc8(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x17b0(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb00(%rax), %xmm0
movsd %xmm0, -0x100(%rbp)
callq 0x11920
movaps %xmm0, %xmm1
movsd -0x100(%rbp), %xmm0
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb08(%rax), %xmm0
movsd %xmm0, -0xf8(%rbp)
callq 0x11920
movaps %xmm0, %xmm1
movsd -0xf8(%rbp), %xmm0
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x28(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb10(%rax), %xmm0
movsd %xmm0, -0xf0(%rbp)
callq 0x11920
movaps %xmm0, %xmm1
movsd -0xf0(%rbp), %xmm0
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x40(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb18(%rax), %xmm0
movsd %xmm0, -0xe8(%rbp)
callq 0x11030
movaps %xmm0, %xmm1
movsd -0xe8(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0xe0(%rbp)
movq 0x57800(%rip), %rax     # 0x86f60
cmpl $0x1, 0x1690(%rax)
jne 0x2f77b
movsd 0x496d7(%rip), %xmm0    # 0x78e48
movsd %xmm0, -0x108(%rbp)
jmp 0x2f7cd
movq 0x577de(%rip), %rax     # 0x86f60
movl 0x1690(%rax), %eax
movsd 0x496b0(%rip), %xmm0    # 0x78e40
movsd 0x49678(%rip), %xmm1    # 0x78e10
movsd %xmm1, -0x118(%rbp)
cmpl $0x3, %eax
movsd %xmm0, -0x110(%rbp)
je 0x2f7bd
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x108(%rbp)
movsd -0xe0(%rbp), %xmm0
movsd -0x108(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x58(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb20(%rax), %xmm0
movsd %xmm0, -0x128(%rbp)
callq 0x11030
movaps %xmm0, %xmm1
movsd -0x128(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movq 0x5773f(%rip), %rax     # 0x86f60
cmpl $0x1, 0x1690(%rax)
jne 0x2f83c
movsd 0x49616(%rip), %xmm0    # 0x78e48
movsd %xmm0, -0x130(%rbp)
jmp 0x2f88e
movq 0x5771d(%rip), %rax     # 0x86f60
movl 0x1690(%rax), %eax
movsd 0x495ef(%rip), %xmm0    # 0x78e40
movsd 0x495b7(%rip), %xmm1    # 0x78e10
movsd %xmm1, -0x140(%rbp)
cmpl $0x3, %eax
movsd %xmm0, -0x138(%rbp)
je 0x2f87e
movsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x138(%rbp)
movsd -0x138(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
movsd -0x120(%rbp), %xmm0
movsd -0x130(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x70(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb28(%rax), %xmm0
movsd %xmm0, -0x150(%rbp)
callq 0x11030
movaps %xmm0, %xmm1
movsd -0x150(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
movq 0x5767e(%rip), %rax     # 0x86f60
cmpl $0x1, 0x1690(%rax)
jne 0x2f8fd
movsd 0x49555(%rip), %xmm0    # 0x78e48
movsd %xmm0, -0x158(%rbp)
jmp 0x2f94f
movq 0x5765c(%rip), %rax     # 0x86f60
movl 0x1690(%rax), %eax
movsd 0x4952e(%rip), %xmm0    # 0x78e40
movsd 0x494f6(%rip), %xmm1    # 0x78e10
movsd %xmm1, -0x168(%rbp)
cmpl $0x3, %eax
movsd %xmm0, -0x160(%rbp)
je 0x2f93f
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x160(%rbp)
movsd -0x160(%rbp), %xmm0
movsd %xmm0, -0x158(%rbp)
movq -0x60(%rbp), %rdi
movsd -0x148(%rbp), %xmm0
movsd -0x158(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x88(%rax)
movq -0x20(%rbp), %rax
movsd 0xbb30(%rax), %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x17b8(%rax)
movq -0x20(%rbp), %rsi
addq $0x600, %rsi            # imm = 0x600
movq -0x20(%rbp), %rdx
addq $0x608, %rdx            # imm = 0x608
movq -0x20(%rbp), %rax
movsd 0x17b8(%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
callq 0x11cc0
movq -0x20(%rbp), %rax
movsd 0x17a0(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x600(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x600(%rax)
movq -0x20(%rbp), %rax
movsd 0x17a8(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x608(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x608(%rax)
movq -0x20(%rbp), %rax
movsd 0x17b0(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x610(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x610(%rax)
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x8(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
movq -0x20(%rbp), %rax
movsd 0x28(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x20(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x20(%rax)
movq -0x20(%rbp), %rax
movsd 0x40(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x38(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rax)
movq -0x20(%rbp), %rax
movsd 0x58(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x50(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x50(%rax)
movq -0x20(%rbp), %rax
movsd 0x70(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x68(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x68(%rax)
movq -0x20(%rbp), %rax
movsd 0x88(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x80(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x80(%rax)
movq -0x20(%rbp), %rax
movsd 0x17a0(%rax), %xmm0
movq -0x20(%rbp), %rax
addsd 0x118(%rax), %xmm0
movq -0x20(%rbp), %rax
movsd 0x17a8(%rax), %xmm1
movq -0x20(%rbp), %rax
addsd 0x120(%rax), %xmm1
movq -0x20(%rbp), %rax
movsd 0x17b0(%rax), %xmm2
movq -0x20(%rbp), %rax
addsd 0x128(%rax), %xmm2
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm3
movq -0x20(%rbp), %rax
addsd (%rax), %xmm3
movq -0x20(%rbp), %rax
movsd 0x28(%rax), %xmm4
movq -0x20(%rbp), %rax
addsd 0x18(%rax), %xmm4
movq -0x20(%rbp), %rax
movsd 0x40(%rax), %xmm5
movq -0x20(%rbp), %rax
addsd 0x30(%rax), %xmm5
movq -0x20(%rbp), %rax
movsd 0x58(%rax), %xmm6
movq -0x20(%rbp), %rax
addsd 0x48(%rax), %xmm6
movq -0x20(%rbp), %rax
movsd 0x70(%rax), %xmm7
movq -0x20(%rbp), %rax
addsd 0x60(%rax), %xmm7
movq -0x20(%rbp), %rax
movsd 0x88(%rax), %xmm8
movq -0x20(%rbp), %rax
addsd 0x78(%rax), %xmm8
movsd %xmm8, (%rsp)
callq 0x107e0
movq -0x20(%rbp), %rax
movsd 0x17b8(%rax), %xmm0
callq 0x11760
movq -0x20(%rbp), %rax
cmpl $0x1, 0xc67c(%rax)
je 0x2fbd9
movl $0x1, %edi
callq 0x11320
movq -0x20(%rbp), %rax
movl $0x1, 0xc67c(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x668(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x670(%rax)
xorl %edi, %edi
callq 0x11d10
movq -0x18(%rbp), %rax
movsd 0x148(%rax), %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x678(%rax)
xorps %xmm0, %xmm0
callq 0x11290
movq -0x20(%rbp), %rax
movb 0x674(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
je 0x2fc40
callq 0x108b0
movq -0x20(%rbp), %rax
movb $0x1, 0x674(%rax)
movq -0x20(%rbp), %rax
movb 0xc6c8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
je 0x2fc64
callq 0x12370
movq -0x20(%rbp), %rax
movb $0x1, 0xc6c8(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x624(%rax)
movq -0x20(%rbp), %rax
movb $0x1, 0xc689(%rax)
callq 0x11300
movq -0x20(%rbp), %rax
movl $0x1, 0xc6cc(%rax)
xorps %xmm0, %xmm0
callq 0x112c0
movq -0x20(%rbp), %rax
movl $0xa, 0x1798(%rax)
movq -0x20(%rbp), %rax
movb 0x1797(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x2fcca
callq 0x10190
movq -0x20(%rbp), %rax
movb $0x0, 0x1797(%rax)
movq -0x20(%rbp), %rax
movb 0x1688(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x2fcee
callq 0x10b90
movq -0x20(%rbp), %rax
movb $0x0, 0x1688(%rax)
movq -0x18(%rbp), %rax
cmpl $0x1e, 0x1f0(%rax)
jne 0x2fd00
callq 0x121b0
callq 0x10d50
movq 0x57254(%rip), %rax     # 0x86f60
movb 0xc678(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x2fe68
movq 0x57239(%rip), %rax     # 0x86f60
cmpq $0x0, 0x1680(%rax)
je 0x2fe68
movq 0x57224(%rip), %rax     # 0x86f60
addq $0x1698, %rax           # imm = 0x1698
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq 0x5720f(%rip), %rax     # 0x86f60
movq 0x1680(%rax), %rdx
movl $0xff, %esi
callq 0x11b60
cmpq $0x0, %rax
jne 0x2fd79
leaq 0x4b135(%rip), %rdi     # 0x7aea4
callq 0x11f00
jmp 0x2fe66
movq -0x30(%rbp), %rdi
callq 0x10740
movl %eax, -0x34(%rbp)
cmpl $0xfe, -0x34(%rbp)
jne 0x2fdac
jmp 0x2fd90
movq 0x571c9(%rip), %rax     # 0x86f60
movq 0x1680(%rax), %rdi
callq 0x11b40
cmpl $0xa, %eax
je 0x2fdaa
jmp 0x2fd90
jmp 0x2fd46
movl -0x34(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x24(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x24(%rbp)
movb %al, -0x169(%rbp)
jl 0x2fde0
movq -0x30(%rbp), %rax
movslq -0x24(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x10120
cmpl $0x0, %eax
setne %al
movb %al, -0x169(%rbp)
movb -0x169(%rbp), %al
testb $0x1, %al
jne 0x2fdec
jmp 0x2fdf9
jmp 0x2fdee
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2fdb5
movq -0x30(%rbp), %rax
movslq -0x24(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x25, %eax
jne 0x2fe61
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x24(%rbp)
movb %al, -0x16a(%rbp)
jl 0x2fe3e
movq -0x30(%rbp), %rax
movslq -0x24(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x10120
cmpl $0x0, %eax
setne %al
movb %al, -0x16a(%rbp)
movb -0x16a(%rbp), %al
testb $0x1, %al
jne 0x2fe4a
jmp 0x2fe57
jmp 0x2fe4c
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2fe13
cmpl $-0x1, -0x24(%rbp)
jne 0x2fe5f
jmp 0x2fe66
jmp 0x2fe61
jmp 0x2fd46
jmp 0x2fe68
movl $0x1, -0x4(%rbp)
jmp 0x2ff51
jmp 0x2fe76
leaq 0x4b05a(%rip), %rdi     # 0x7aed7
callq 0x10380
movq -0x60(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x10df0
movq 0x570c9(%rip), %rax     # 0x86f60
movl $0x0, 0xd670(%rax)
movq 0x570b8(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rax
movq 0x570aa(%rip), %rdi     # 0x86f60
addq $0xc6d0, %rdi           # imm = 0xC6D0
imulq $0x50, %rax, %rax
addq %rax, %rdi
leaq 0x4afa2(%rip), %rsi     # 0x7ae6d
movl $0x50, %edx
callq 0x10840
movq 0x57084(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x57076(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, 0x4f(%rax)
movq 0x5705e(%rip), %rax     # 0x86f60
movl 0xd670(%rax), %ecx
addl $0x1, %ecx
movq 0x5704e(%rip), %rax     # 0x86f60
movl %ecx, 0xd670(%rax)
movq 0x57041(%rip), %rax     # 0x86f60
movslq 0xd670(%rax), %rcx
movq 0x57033(%rip), %rax     # 0x86f60
addq $0xc6d0, %rax           # imm = 0xC6D0
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movb $0x0, (%rax)
movl $0x5, -0x4(%rbp)
jmp 0x2ff51
jmp 0x2ff48
jmp 0x2ff4a
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
nopl (%rax)