// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/annotationsketch/canvas_cairo.c
// Function: gt_canvas_cairo_visit_element
int gt_canvas_cairo_visit_element(GtCanvas *canvas, GtElement *elem,
                                  GtError *err)
{
  int had_err = 0, arrow_status = ARROW_NONE;
  GtRange elem_range = gt_element_get_range(elem);
  GtDrawingRange draw_range;
  double elem_start = GT_UNDEF_DOUBLE,
         elem_width = GT_UNDEF_DOUBLE,
         stroke_width = STROKE_WIDTH_DEFAULT,
         bar_height = BAR_HEIGHT_DEFAULT,
         arrow_width = ARROW_WIDTH_DEFAULT;
  GtColor elem_color, grey, fill_color;
  const char *type;
  GtStyleQueryStatus rval;
  GtStr *style;
  GtStrand strand = gt_element_get_strand(elem);

  gt_assert(canvas && elem);

  /* This shouldn't happen. */
  if (!gt_range_overlap(&elem_range, &canvas->pvt->viewrange))
    return -1;

  type = gt_element_get_type(elem);
  grey.red = grey.green = grey.blue = .85;
  grey.alpha = 0.5;

  /* get default or image-wide bar height */
  if (gt_style_get_num(canvas->pvt->sty, "format", "bar_height", &bar_height,
                       NULL, err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  /* try to get type-specific bar height */
  if (gt_style_get_num_with_track(canvas->pvt->sty, type, "bar_height",
                       &bar_height,
                       gt_element_get_node_ref(elem),
                       gt_track_get_title(canvas->pvt->current_track),
                       err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  /* get default or image-wide arrow width */
  if (gt_style_get_num(canvas->pvt->sty, "format", "arrow_width", &arrow_width,
                        NULL, err)== GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  /* try to get type-specific arrow width */
  if (gt_style_get_num_with_track(canvas->pvt->sty, type, "arrow_width",
                       &arrow_width,
                       gt_element_get_node_ref(elem),
                       gt_track_get_title(canvas->pvt->current_track),
                       err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }

  if ((strand == GT_STRAND_REVERSE || strand == GT_STRAND_BOTH)
         /*&& delem == gt_dlist_first(elems)*/)
    arrow_status = ARROW_LEFT;
  if ((strand == GT_STRAND_FORWARD || strand == GT_STRAND_BOTH)
         /*&& gt_dlistelem_next(delem) == NULL*/)
    arrow_status = (arrow_status == ARROW_LEFT ? ARROW_BOTH : ARROW_RIGHT);

  gt_log_log("processing element from "GT_WU" to "GT_WU", strand %d\n",
             elem_range.start, elem_range.end, (int) strand);

  draw_range = gt_coords_calc_generic_range(elem_range, canvas->pvt->viewrange);
  draw_range.start *= (canvas->pvt->width-2*canvas->pvt->margins);
  draw_range.end *= (canvas->pvt->width-2*canvas->pvt->margins);
  elem_start = draw_range.start + canvas->pvt->margins;
  elem_width = draw_range.end - draw_range.start;
  gt_assert(elem_start != GT_UNDEF_DOUBLE && elem_width != GT_UNDEF_DOUBLE);

  if (gt_element_is_marked(elem)) {
    if (gt_style_get_color_with_track(canvas->pvt->sty, type, "stroke_marked",
                           &elem_color, gt_element_get_node_ref(elem),
                           gt_track_get_title(canvas->pvt->current_track),
                           err) == GT_STYLE_QUERY_ERROR) {
      return -1;
    }
    if (gt_style_get_num_with_track(canvas->pvt->sty, "format",
                          "stroke_marked_width",
                          &stroke_width, gt_element_get_node_ref(elem),
                          gt_track_get_title(canvas->pvt->current_track),
                          err) == GT_STYLE_QUERY_ERROR) {
    return -1;
    }
  }
  else {
    if (gt_style_get_color_with_track(canvas->pvt->sty, type, "stroke",
                              &elem_color,
                              gt_element_get_node_ref(elem),
                              gt_track_get_title(canvas->pvt->current_track),
                              err) == GT_STYLE_QUERY_ERROR) {
      return -1;
    }
    if (gt_style_get_num_with_track(canvas->pvt->sty, "format", "stroke_width",
                         &stroke_width,
                         gt_element_get_node_ref(elem),
                         gt_track_get_title(canvas->pvt->current_track),
                         err) == GT_STYLE_QUERY_ERROR) {
      return -1;
    }
    if (gt_style_get_num_with_track(canvas->pvt->sty, type, "stroke_width",
                         &stroke_width,
                         gt_element_get_node_ref(elem),
                         gt_track_get_title(canvas->pvt->current_track),
                         err) == GT_STYLE_QUERY_ERROR) {
      return -1;
    }
  }
  if (gt_style_get_color_with_track(canvas->pvt->sty, type, "fill",
                                 &fill_color,
                                 gt_element_get_node_ref(elem),
                                 gt_track_get_title(canvas->pvt->current_track),
                                 err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }

  if (canvas->pvt->bt &&
          gt_double_smaller_double(draw_range.end-draw_range.start, 1.1))
  {
    if ((GtUword) draw_range.start > gt_bittab_size(canvas->pvt->bt))
      return had_err;
    if (gt_bittab_bit_is_set(canvas->pvt->bt, (GtUword) draw_range.start))
      return had_err;
    gt_graphics_draw_vertical_line(canvas->pvt->g,
                                   elem_start,
                                   canvas->pvt->y - bar_height/2,
                                   elem_color,
                                   bar_height,
                                   stroke_width);
    gt_bittab_set_bit(canvas->pvt->bt, (GtUword) draw_range.start);
  }

  /* register coordinates in GtImageInfo object if available */
  if (canvas->pvt->ii)
  {
    GtRecMap *rm = gt_rec_map_new(elem_start, canvas->pvt->y - bar_height/2,
                                  elem_start+elem_width,
                                  canvas->pvt->y+bar_height/2,
                                  (GtFeatureNode*)
                                    gt_element_get_node_ref(elem));
    gt_image_info_add_rec_map(canvas->pvt->ii, rm);
    }

  if (canvas->pvt->bt && draw_range.end-draw_range.start <= 1.1)
  {
    return had_err;
  }

  gt_log_log("drawing element from %f to %f, arrow status: %d",
             draw_range.start, draw_range.end, arrow_status);

  /* draw each element according to style set in the style */
  style = gt_str_new();
  rval = gt_style_get_str_with_track(canvas->pvt->sty, type, "style", style,
                          gt_element_get_node_ref(elem),
                          gt_track_get_title(canvas->pvt->current_track),
                          err);
  switch (rval) {
    case GT_STYLE_QUERY_NOT_SET:
      gt_str_set(style, "box");    /* default style */
      break;
    case GT_STYLE_QUERY_ERROR:
      gt_str_delete(style);
      gt_assert(gt_error_is_set(err));
      return -1;
    default:
      break;
  }

  if (strcmp(gt_str_get(style), "box") == 0)
  {
    gt_graphics_draw_box(canvas->pvt->g,
                         elem_start,
                         canvas->pvt->y - bar_height/2,
                         elem_width,
                         bar_height,
                         fill_color,
                         arrow_status,
                         arrow_width,
                         stroke_width,
                         elem_color,
                         false);
  }
  else if (strcmp(gt_str_get(style), "rectangle") == 0)
  {
    gt_graphics_draw_box(canvas->pvt->g,
                         elem_start,
                         canvas->pvt->y - bar_height/2,
                         elem_width,
                         bar_height,
                         fill_color,
                         ARROW_NONE,
                         arrow_width,
                         stroke_width,
                         elem_color,
                         false);
  }
  else if (strcmp(gt_str_get(style), "caret") == 0)
  {
    gt_graphics_draw_caret(canvas->pvt->g,
                           elem_start,
                           canvas->pvt->y - bar_height/2,
                           elem_width,
                           bar_height,
                           ARROW_NONE,
                           arrow_width,
                           stroke_width,
                           elem_color);
  }
  else if (strcmp(gt_str_get(style), "dashes") == 0)
  {
    gt_graphics_draw_dashes(canvas->pvt->g,
                            elem_start,
                            canvas->pvt->y - bar_height/2,
                            elem_width,
                            bar_height,
                            arrow_status,
                            arrow_width,
                            stroke_width,
                            elem_color);
  }
  else if (strcmp(gt_str_get(style), "line") == 0)
  {
    gt_graphics_draw_horizontal_line(canvas->pvt->g,
                                     elem_start,
                                     canvas->pvt->y - bar_height/2,
                                     elem_color,
                                     elem_width,
                                     1.0);
  }
  else
  {
     gt_graphics_draw_box(canvas->pvt->g,
                          elem_start,
                          canvas->pvt->y - bar_height/2,
                          elem_width,
                          bar_height,
                          fill_color,
                          arrow_status,
                          arrow_width,
                          stroke_width,
                          elem_color,
                          false);
  }
  gt_str_delete(style);

  /* draw arrowheads at clipped margins */
  if (draw_range.clip == CLIPPED_LEFT || draw_range.clip == CLIPPED_BOTH)
      gt_graphics_draw_arrowhead(canvas->pvt->g,
                                 canvas->pvt->margins - 10,
                                 canvas->pvt->y - 4,
                                 grey,
                                 ARROW_LEFT);
  if (draw_range.clip == CLIPPED_RIGHT || draw_range.clip == CLIPPED_BOTH)
      gt_graphics_draw_arrowhead(canvas->pvt->g,
                                 canvas->pvt->width-canvas->pvt->margins + 10,
                                 canvas->pvt->y - 4,
                                 grey,
                                 ARROW_RIGHT);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x8e159
movq %rax, 0xb0(%rsp)
movq %rdx, 0xb8(%rsp)
movabsq $0x3fe0000000000000, %rax # imm = 0x3FE0000000000000
movq %rax, 0x58(%rsp)
movabsq $0x4030000000000000, %rax # imm = 0x4030000000000000
movq %rax, 0x50(%rsp)
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0x70(%rsp)
movq %r12, %rdi
callq 0x8e17c
testq %rbx, %rbx
je 0x8d141
testq %r12, %r12
je 0x8d141
movl %eax, %r15d
movq 0x8(%rbx), %rsi
leaq 0xb0(%rsp), %rdi
callq 0x7e1b2
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testb %al, %al
je 0x8c898
movq %r12, %rdi
callq 0x8e16d
movq %rax, %r13
movaps 0x69b25(%rip), %xmm0    # 0xf62b0
movaps %xmm0, 0x100(%rsp)
movapd 0x69b25(%rip), %xmm0    # 0xf62c0
movapd %xmm0, 0x110(%rsp)
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rdi
leaq 0x549e3(%rip), %rsi     # 0xe1196
leaq 0x60847(%rip), %rdx     # 0xed001
leaq 0x50(%rsp), %rcx
xorl %r8d, %r8d
movq %r14, %r9
callq 0x5393e
cmpl $0x2, %eax
je 0x8c898
movq 0x8(%rbx), %rax
movq %r13, 0x68(%rsp)
movq 0x38(%rax), %r13
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %rbp
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x607fe(%rip), %rdx     # 0xed001
leaq 0x50(%rsp), %rcx
movq %r13, %rdi
movq 0x68(%rsp), %rsi
movq %rbp, %r8
movq %rax, %r9
callq 0x53720
cmpl $0x2, %eax
je 0x8c893
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rdi
leaq 0x54967(%rip), %rsi     # 0xe1196
leaq 0x69c49(%rip), %rdx     # 0xf647f
leaq 0x70(%rsp), %rcx
xorl %r8d, %r8d
movq %r14, %r9
callq 0x5393e
cmpl $0x2, %eax
je 0x8c893
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r13
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %rbp
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x69c09(%rip), %rdx     # 0xf647f
leaq 0x70(%rsp), %rcx
movq %r13, %rdi
movq 0x68(%rsp), %rsi
movq %rbp, %r8
movq %rax, %r9
callq 0x53720
cmpl $0x2, %eax
jne 0x8c8ac
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %ebp, %eax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leal -0x1(%r15), %eax
xorl %ecx, %ecx
cmpl $0x2, %eax
setae %cl
leal (%rcx,%rcx,2), %eax
movl $0x0, %ecx
adcl $0x1, %ecx
testl $0xfffffffd, %r15d      # imm = 0xFFFFFFFD
cmovnel %eax, %ecx
movl %ecx, 0x64(%rsp)
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
leaq 0x69bf9(%rip), %rdi     # 0xf64e1
movl %r15d, %ecx
xorl %eax, %eax
callq 0x353ae
movq 0x8(%rbx), %rax
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq (%rax), %rcx
movq 0x8(%rax), %r8
leaq 0x90(%rsp), %r15
movq %r15, %rdi
callq 0x8dcd0
movq 0x8(%rbx), %rax
movsd 0x28(%rax), %xmm0
unpcklps 0x54b53(%rip), %xmm0    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x54b5b(%rip), %xmm0    # 0xe1490
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
addsd %xmm0, %xmm2
movsd 0x20(%rax), %xmm1
movapd %xmm1, %xmm0
addsd %xmm1, %xmm0
subsd %xmm0, %xmm2
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
mulpd (%r15), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0x48(%rsp)
ucomisd 0x54f7b(%rip), %xmm1    # 0xe18e8
jne 0x8c975
jnp 0x8d146
movapd %xmm2, %xmm0
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
movapd %xmm0, 0x120(%rsp)
subsd %xmm2, %xmm0
movapd %xmm0, 0x80(%rsp)
ucomisd 0x54f4d(%rip), %xmm0    # 0xe18e8
jne 0x8c9a3
jnp 0x8d146
movapd %xmm2, 0xc0(%rsp)
movl 0xa0(%rsp), %r13d
movq %r12, %rdi
callq 0x8e18b
movl %eax, %ebp
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r15
movq %r12, %rdi
callq 0x8e1b8
movq %rax, 0x78(%rsp)
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
testb %bpl, %bpl
je 0x8ca58
movq %r14, (%rsp)
leaq 0x680ff(%rip), %rdx     # 0xf4aef
leaq 0x90(%rsp), %rcx
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq 0x78(%rsp), %r8
movq %rax, %r9
callq 0x52d8f
cmpl $0x2, %eax
je 0x8c893
movl %r13d, %ebp
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r15
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %r13
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x54752(%rip), %rsi     # 0xe1196
leaq 0x69b04(%rip), %rdx     # 0xf654f
leaq 0x58(%rsp), %rcx
movq %r15, %rdi
jmp 0x8cb12
movq %r14, (%rsp)
leaq 0x69a35(%rip), %rdx     # 0xf6498
leaq 0x90(%rsp), %rcx
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq 0x78(%rsp), %r8
movq %rax, %r9
callq 0x52d8f
cmpl $0x2, %eax
je 0x8c893
movl %r13d, %ebp
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r15
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %r13
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x546df(%rip), %rsi     # 0xe1196
leaq 0x699cd(%rip), %rdx     # 0xf648b
leaq 0x58(%rsp), %rcx
movq %r15, %rdi
movq %r13, %r8
movq %rax, %r9
callq 0x53720
cmpl $0x2, %eax
je 0x8c893
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r15
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %r13
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x69986(%rip), %rdx     # 0xf648b
leaq 0x58(%rsp), %rcx
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq %r13, %r8
movq %rax, %r9
callq 0x53720
cmpl $0x2, %eax
je 0x8c893
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r15
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %r13
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x6496e(%rip), %rdx     # 0xf14bf
leaq 0xe0(%rsp), %rcx
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq %r13, %r8
movq %rax, %r9
callq 0x52d8f
cmpl $0x2, %eax
je 0x8c893
movq 0x8(%rbx), %rcx
cmpq $0x0, 0x50(%rcx)
movl %ebp, %r13d
je 0x8cc5a
movsd 0x696c1(%rip), %xmm1    # 0xf6250
movapd 0x80(%rsp), %xmm0
callq 0x7a42f
movq 0x8(%rbx), %rcx
testb %al, %al
je 0x8cc5a
movapd 0xc0(%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rdx
subsd 0x5db9e(%rip), %xmm0    # 0xea760
cvttsd2si %xmm0, %r15
sarq $0x3f, %rdx
andq %rdx, %r15
orq %rax, %r15
movq 0x50(%rcx), %rdi
callq 0x71194
xorl %ebp, %ebp
cmpq %r15, %rax
jb 0x8c898
movq 0x8(%rbx), %rax
movq 0x50(%rax), %rdi
movq %r15, %rsi
callq 0x710ce
testb %al, %al
jne 0x8c898
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm2
movsd 0x5e51d(%rip), %xmm1    # 0xeb130
mulsd %xmm2, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x58(%rsp), %xmm3
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm4
movups %xmm4, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x48(%rsp), %xmm0
callq 0x4e24f
movq 0x8(%rbx), %rax
movq 0x50(%rax), %rdi
movq %r15, %rsi
callq 0x70d40
movq 0x8(%rbx), %rcx
cmpq $0x0, 0x60(%rcx)
je 0x8cced
movsd 0x18(%rcx), %xmm0
movsd 0x50(%rsp), %xmm1
mulsd 0x5d9d8(%rip), %xmm1    # 0xea650
movapd %xmm0, %xmm2
subsd %xmm1, %xmm2
movsd %xmm2, 0x78(%rsp)
movsd 0x48(%rsp), %xmm2
addsd 0x80(%rsp), %xmm2
movsd %xmm2, 0xd8(%rsp)
addsd %xmm0, %xmm1
movsd %xmm1, 0xd0(%rsp)
movq %r12, %rdi
callq 0x8e1b8
movsd 0x48(%rsp), %xmm0
movsd 0x78(%rsp), %xmm1
movsd 0xd8(%rsp), %xmm2
movsd 0xd0(%rsp), %xmm3
movq %rax, %rdi
callq 0x52690
movq 0x8(%rbx), %rcx
movq 0x60(%rcx), %rdi
movq %rax, %rsi
callq 0x515af
movq 0x8(%rbx), %rcx
movapd 0xc0(%rsp), %xmm0
xorl %ebp, %ebp
cmpq $0x0, 0x50(%rcx)
je 0x8cd16
movsd 0x69549(%rip), %xmm1    # 0xf6250
ucomisd 0x80(%rsp), %xmm1
jae 0x8c898
movl %r13d, 0x78(%rsp)
leaq 0x69841(%rip), %rdi     # 0xf6563
movapd 0x120(%rsp), %xmm1
movl 0x64(%rsp), %esi
movb $0x2, %al
callq 0x353ae
callq 0x3b728
movq %rax, %r13
movq 0x8(%rbx), %rax
movq 0x38(%rax), %r15
movq %r12, %rdi
callq 0x8e1b8
movq %rax, %r12
movq 0x8(%rbx), %rax
movq 0x40(%rax), %rdi
callq 0x555b5
movq %r14, (%rsp)
leaq 0x7189f(%rip), %rdx     # 0xfe608
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq %r13, %rcx
movq %r12, %r8
movq %rax, %r9
callq 0x53433
cmpl $0x2, %eax
je 0x8ce91
cmpl $0x1, %eax
jne 0x8cd9c
leaq 0x5e796(%rip), %rsi     # 0xeb52a
movq %r13, %rdi
callq 0x3b81e
movq %r13, %rdi
callq 0x3bb5d
leaq 0x5e77f(%rip), %rsi     # 0xeb52a
movq %rax, %rdi
callq 0xb890
testl %eax, %eax
movl 0x78(%rsp), %r14d
je 0x8ceb3
movq %r13, %rdi
callq 0x3bb5d
leaq 0x5e7b1(%rip), %rsi     # 0xeb580
movq %rax, %rdi
callq 0xb890
testl %eax, %eax
je 0x8cf26
movq %r13, %rdi
callq 0x3bb5d
leaq 0x5e775(%rip), %rsi     # 0xeb563
movq %rax, %rdi
callq 0xb890
testl %eax, %eax
je 0x8d07e
movq %r13, %rdi
callq 0x3bb5d
leaq 0x5e738(%rip), %rsi     # 0xeb545
movq %rax, %rdi
callq 0xb890
testl %eax, %eax
je 0x8d0e0
movq %r13, %rdi
callq 0x3bb5d
leaq 0x5ee4a(%rip), %rsi     # 0xebc76
movq %rax, %rdi
callq 0xb890
movq 0x8(%rbx), %rcx
movsd 0x50(%rsp), %xmm3
movsd 0x5e2ea(%rip), %xmm1    # 0xeb130
mulsd %xmm3, %xmm1
addsd 0x18(%rcx), %xmm1
movq 0x58(%rcx), %rdi
testl %eax, %eax
jne 0x8ced2
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x54a78(%rip), %xmm3    # 0xe18f0
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
callq 0x4e1c4
jmp 0x8cf9f
movq %r13, %rdi
callq 0x3c87b
movq %r14, %rdi
callq 0x34fea
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testb %al, %al
jne 0x8c898
callq 0x215a3
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x5e267(%rip), %xmm1    # 0xeb130
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x70(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x30(%rsp)
movups %xmm0, 0x20(%rsp)
movups 0xe0(%rsp), %xmm0
movups 0xf0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
movl 0x64(%rsp), %esi
jmp 0x8cf98
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x5e1f4(%rip), %xmm1    # 0xeb130
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x70(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x30(%rsp)
movups %xmm0, 0x20(%rsp)
movups 0xe0(%rsp), %xmm0
movups 0xf0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
movl $0x3, %esi
xorl %edx, %edx
callq 0x4e2dd
movq %r13, %rdi
callq 0x3c87b
testl %r14d, %r14d
je 0x8d00e
cmpl $0x3, %r14d
je 0x8cfbc
cmpl $0x1, %r14d
jne 0x8c898
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x18(%rax), %xmm1
movsd 0x20(%rax), %xmm0
addsd 0x69282(%rip), %xmm0    # 0xf6258
addsd 0x69282(%rip), %xmm1    # 0xf6260
movapd 0x100(%rsp), %xmm2
movapd 0x110(%rsp), %xmm3
movupd %xmm3, 0x10(%rsp)
movupd %xmm2, (%rsp)
xorl %ebp, %ebp
xorl %esi, %esi
callq 0x4e5f1
cmpl $0x3, %r14d
jne 0x8c898
movq 0x8(%rbx), %rax
movsd 0x28(%rax), %xmm1
unpcklps 0x54462(%rip), %xmm1    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x5446a(%rip), %xmm1    # 0xe1490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
subsd 0x20(%rax), %xmm0
addsd 0x69209(%rip), %xmm0    # 0xf6248
movq 0x58(%rax), %rdi
movsd 0x18(%rax), %xmm1
addsd 0x69210(%rip), %xmm1    # 0xf6260
movapd 0x100(%rsp), %xmm2
movapd 0x110(%rsp), %xmm3
movupd %xmm3, 0x10(%rsp)
movupd %xmm2, (%rsp)
movl $0x1, %esi
callq 0x4e5f1
xorl %ebp, %ebp
jmp 0x8c898
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x5e09c(%rip), %xmm1    # 0xeb130
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x70(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
movl $0x3, %esi
callq 0x4e46c
jmp 0x8cf9f
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x5e03a(%rip), %xmm1    # 0xeb130
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x70(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
movl 0x64(%rsp), %esi
callq 0x4e3c0
jmp 0x8cf9f
callq 0x21531
callq 0x2156a