// File: /workspace/github_c_makefile_star2_O2/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 $0x148, %rsp            # imm = 0x148
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x6f551
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, 0x68(%rsp)
movq %r15, %rdi
callq 0x6f5d6
testq %rbx, %rbx
je 0x6e2ae
testq %r15, %r15
je 0x6e2ae
movl %eax, %r13d
movq 0x8(%rbx), %rsi
leaq 0xb0(%rsp), %rdi
callq 0x5d0a4
pushq $-0x1
popq %rbp
testb %al, %al
je 0x6d8ca
movq %r15, %rdi
callq 0x6f596
movq %rax, %r12
movaps 0x71d7a(%rip), %xmm0    # 0xdf600
movaps %xmm0, 0x110(%rsp)
movapd 0x71d7a(%rip), %xmm0    # 0xdf610
movapd %xmm0, 0x120(%rsp)
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rdi
leaq 0x5c8e8(%rip), %rsi     # 0xca196
leaq 0x6873c(%rip), %rdx     # 0xd5ff1
leaq 0x50(%rsp), %rcx
xorl %r8d, %r8d
movq %r14, %r9
callq 0x33ff8
cmpl $0x2, %eax
jne 0x6d8d2
movl %ebp, %r13d
jmp 0x6d9a2
movq %r13, 0x40(%rsp)
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rbp
movq %r15, %rdi
callq 0x6f6a5
movq %rbx, %rcx
movq %r14, %rbx
movq %rax, %r14
movq %rcx, %r13
movq 0x8(%rcx), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x686e6(%rip), %rdx     # 0xd5ff1
leaq 0x50(%rsp), %rcx
movq %rbp, %rdi
movq %r12, 0x70(%rsp)
movq %r12, %rsi
movq %r14, %r8
movq %rax, %r9
callq 0x33cd9
cmpl $0x2, %eax
je 0x6d99e
movq 0x8(%r13), %rax
movq 0x38(%rax), %rdi
leaq 0x5c85c(%rip), %rsi     # 0xca196
leaq 0x71e8e(%rip), %rdx     # 0xdf7cf
leaq 0x68(%rsp), %rcx
xorl %r8d, %r8d
movq %rbx, %r9
callq 0x33ff8
cmpl $0x2, %eax
je 0x6d99e
movq 0x8(%r13), %rax
movq 0x38(%rax), %r12
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %rbp
movq 0x8(%r13), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x71e4e(%rip), %rdx     # 0xdf7cf
leaq 0x68(%rsp), %rcx
movq %r12, %rdi
movq 0x70(%rsp), %rsi
movq %rbp, %r8
movq %rax, %r9
callq 0x33cd9
cmpl $0x2, %eax
jne 0x6d9b7
pushq $-0x1
popq %r13
movl %r13d, %eax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x40(%rsp), %rcx
leal -0x1(%rcx), %eax
xorl %edx, %edx
cmpl $0x2, %eax
setae %dl
leal (%rdx,%rdx,2), %eax
movl $0x0, %edx
adcl $0x1, %edx
testl $0xfffffffd, %ecx       # imm = 0xFFFFFFFD
cmovnel %eax, %edx
movl %edx, 0x64(%rsp)
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
leaq 0x71e3b(%rip), %rdi     # 0xdf831
xorl %eax, %eax
callq 0xc5d2
movq 0x8(%r13), %rax
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq (%rax), %rcx
movq 0x8(%rax), %r8
leaq 0x90(%rsp), %r12
movq %r12, %rdi
callq 0x6eef0
movq %r13, 0x40(%rsp)
movq 0x8(%r13), %rax
movsd 0x28(%rax), %xmm0
unpcklps 0x5ca43(%rip), %xmm0    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x5ca4b(%rip), %xmm0    # 0xca490
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 (%r12), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0x48(%rsp)
ucomisd 0x5ce6a(%rip), %xmm1    # 0xca8e8
jne 0x6da86
jnp 0x6e2e6
movapd %xmm2, %xmm0
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
movapd %xmm0, 0x130(%rsp)
subsd %xmm2, %xmm0
movapd %xmm0, 0x80(%rsp)
ucomisd 0x5ce3c(%rip), %xmm0    # 0xca8e8
jne 0x6dab4
jnp 0x6e2e6
movapd %xmm2, 0xc0(%rsp)
movl 0xa0(%rsp), %eax
movl %eax, 0x7c(%rsp)
movq %r15, %rdi
callq 0x6f616
movl %eax, %r12d
movq 0x40(%rsp), %r14
movq 0x8(%r14), %rax
movq 0x38(%rax), %rbp
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %r13
movq 0x8(%r14), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
testb %r12b, %r12b
je 0x6db70
movq %rbx, (%rsp)
leaq 0x70347(%rip), %rdx     # 0xdde4f
leaq 0x90(%rsp), %rcx
movq %rbp, %rdi
movq 0x70(%rsp), %rsi
movq %r13, %r8
movq %rax, %r9
callq 0x330ce
cmpl $0x2, %eax
je 0x6d99e
movq 0x40(%rsp), %rbp
movq 0x8(%rbp), %rax
movq 0x38(%rax), %r12
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %r13
movq 0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x5c63a(%rip), %rsi     # 0xca196
leaq 0x71d3c(%rip), %rdx     # 0xdf89f
leaq 0x58(%rsp), %rcx
movq %r12, %rdi
jmp 0x6dc2a
movq %rbx, (%rsp)
leaq 0x71c6d(%rip), %rdx     # 0xdf7e8
leaq 0x90(%rsp), %rcx
movq %rbp, %rdi
movq 0x70(%rsp), %rsi
movq %r13, %r8
movq %rax, %r9
callq 0x330ce
cmpl $0x2, %eax
je 0x6d99e
movq 0x40(%rsp), %rbp
movq 0x8(%rbp), %rax
movq 0x38(%rax), %r12
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %r13
movq 0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x5c5c7(%rip), %rsi     # 0xca196
leaq 0x71c05(%rip), %rdx     # 0xdf7db
leaq 0x58(%rsp), %rcx
movq %r12, %rdi
movq %r13, %r8
movq %rax, %r9
callq 0x33cd9
cmpl $0x2, %eax
je 0x6d99e
movq 0x8(%rbp), %rax
movq 0x38(%rax), %r12
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %r13
movq 0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x71bbe(%rip), %rdx     # 0xdf7db
leaq 0x58(%rsp), %rcx
movq %r12, %rdi
movq 0x70(%rsp), %rsi
movq %r13, %r8
movq %rax, %r9
callq 0x33cd9
cmpl $0x2, %eax
je 0x6d99e
movq 0x8(%rbp), %rax
movq 0x38(%rax), %r12
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %r13
movq 0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x6c806(%rip), %rdx     # 0xda46f
leaq 0xf0(%rsp), %rcx
movq %r12, %rdi
movq 0x70(%rsp), %rsi
movq %r13, %r8
movq %rax, %r9
callq 0x330ce
cmpl $0x2, %eax
je 0x6d99e
movq 0x8(%rbp), %rcx
cmpq $0x0, 0x50(%rcx)
je 0x6dd7f
movsd 0x6cc54(%rip), %xmm1    # 0xda8f8
movapd 0x80(%rsp), %xmm0
callq 0x58dba
movq 0x40(%rsp), %rcx
movq 0x8(%rcx), %rcx
testb %al, %al
je 0x6dd7f
movapd 0xc0(%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rdx
subsd 0x65a74(%rip), %xmm0    # 0xd3750
cvttsd2si %xmm0, %rbp
sarq $0x3f, %rdx
andq %rdx, %rbp
orq %rax, %rbp
movq 0x50(%rcx), %rdi
callq 0x4df60
xorl %r13d, %r13d
cmpq %rbp, %rax
jb 0x6d9a2
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x50(%rax), %rdi
movq %rbp, %rsi
callq 0x4de2d
testb %al, %al
jne 0x6d9a2
movq 0x40(%rsp), %r14
movq 0x8(%r14), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm2
movsd 0x663e8(%rip), %xmm1    # 0xd4120
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 0x2cf85
movq 0x8(%r14), %rax
movq 0x50(%rax), %rdi
movq %rbp, %rsi
callq 0x4d737
movq 0x8(%r14), %rcx
cmpq $0x0, 0x60(%rcx)
je 0x6de1d
movsd 0x18(%rcx), %xmm0
movsd 0x50(%rsp), %xmm1
mulsd 0x658a3(%rip), %xmm1    # 0xd3640
movapd %xmm0, %xmm2
subsd %xmm1, %xmm2
movsd %xmm2, 0xe8(%rsp)
movsd 0x48(%rsp), %xmm2
addsd 0x80(%rsp), %xmm2
movsd %xmm2, 0xe0(%rsp)
addsd %xmm0, %xmm1
movsd %xmm1, 0xd8(%rsp)
movq %r15, %rdi
callq 0x6f6a5
movsd 0x48(%rsp), %xmm0
movsd 0xe8(%rsp), %xmm1
movsd 0xe0(%rsp), %xmm2
movsd 0xd8(%rsp), %xmm3
movq %rax, %rdi
callq 0x32510
movq 0x40(%rsp), %r14
movq 0x8(%r14), %rcx
movq 0x60(%rcx), %rdi
movq %rax, %rsi
callq 0x30ec2
movq 0x8(%r14), %rcx
movapd 0xc0(%rsp), %xmm0
xorl %r13d, %r13d
cmpq $0x0, 0x50(%rcx)
je 0x6de47
movsd 0x6cac0(%rip), %xmm1    # 0xda8f8
ucomisd 0x80(%rsp), %xmm1
jae 0x6d9a2
leaq 0x71a65(%rip), %rdi     # 0xdf8b3
movapd 0x130(%rsp), %xmm1
movl 0x64(%rsp), %esi
movb $0x2, %al
callq 0xc5d2
callq 0x13d5c
movq %rax, %rbp
movq 0x40(%rsp), %r14
movq 0x8(%r14), %rax
movq 0x38(%rax), %r12
movq %r15, %rdi
callq 0x6f6a5
movq %rax, %r15
movq 0x8(%r14), %rax
movq %rbp, %r14
movq 0x40(%rax), %rdi
callq 0x3629f
movq %rbx, (%rsp)
leaq 0x79a6b(%rip), %rdx     # 0xe7908
movq %r12, %rdi
movq 0x70(%rsp), %rsi
movq %rbp, %rcx
movq %r15, %r8
movq %rax, %r9
callq 0x33894
cmpl $0x2, %eax
je 0x6dfcd
cmpl $0x1, %eax
jne 0x6ded0
leaq 0x66652(%rip), %rsi     # 0xd451a
movq %r14, %rdi
callq 0x13e63
movq %r14, %rdi
callq 0x143d2
leaq 0x6663b(%rip), %rsi     # 0xd451a
movq %rax, %rdi
callq 0xb880
testl %eax, %eax
movl 0x7c(%rsp), %ebp
movq 0x40(%rsp), %rbx
je 0x6e01a
movq %r14, %rdi
callq 0x143d2
leaq 0x66669(%rip), %rsi     # 0xd4570
movq %rax, %rdi
callq 0xb880
testl %eax, %eax
je 0x6e08d
movq %r14, %rdi
callq 0x143d2
leaq 0x6662d(%rip), %rsi     # 0xd4553
movq %rax, %rdi
callq 0xb880
testl %eax, %eax
je 0x6e1ed
movq %r14, %rdi
callq 0x143d2
leaq 0x665f0(%rip), %rsi     # 0xd4535
movq %rax, %rdi
callq 0xb880
testl %eax, %eax
je 0x6e24d
movq %r14, %rdi
callq 0x143d2
leaq 0x66d02(%rip), %rsi     # 0xd4c66
movq %rax, %rdi
callq 0xb880
movq 0x8(%rbx), %rcx
movsd 0x50(%rsp), %xmm3
movsd 0x661a2(%rip), %xmm1    # 0xd4120
mulsd %xmm3, %xmm1
addsd 0x18(%rcx), %xmm1
movq 0x58(%rcx), %rdi
testl %eax, %eax
jne 0x6e039
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x5c93c(%rip), %xmm3    # 0xca8f0
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
callq 0x2cec7
jmp 0x6e104
movq %r14, %rdi
callq 0x152db
movq %rbx, %rdi
callq 0xc103
pushq $-0x1
popq %r13
testb %al, %al
jne 0x6d9a2
movq 0xbffc8(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x5c06c(%rip), %rsi     # 0xca066
leaq 0x82d38(%rip), %rdx     # 0xf0d39
leaq 0x7180b(%rip), %rcx     # 0xdf813
leaq 0x71671(%rip), %r8      # 0xdf680
movl $0x251, %r9d            # imm = 0x251
jmp 0x6e2da
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x660f0(%rip), %xmm1    # 0xd4120
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x68(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x30(%rsp)
movups %xmm0, 0x20(%rsp)
movups 0xf0(%rsp), %xmm0
movups 0x100(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
movl 0x64(%rsp), %esi
jmp 0x6e0fd
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x6607d(%rip), %xmm1    # 0xd4120
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x68(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x30(%rsp)
movups %xmm0, 0x20(%rsp)
movups 0xf0(%rsp), %xmm0
movups 0x100(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
pushq $0x3
popq %rsi
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
xorl %edx, %edx
callq 0x2d046
movq %r14, %rdi
callq 0x152db
testl %ebp, %ebp
je 0x6e179
movl 0x7c(%rsp), %ebp
cmpl $0x3, %ebp
je 0x6e122
cmpl $0x1, %ebp
jne 0x6d9a2
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movsd 0x18(%rax), %xmm1
movsd 0x20(%rax), %xmm0
addsd 0x7146f(%rip), %xmm0    # 0xdf5b0
addsd 0x7146f(%rip), %xmm1    # 0xdf5b8
movapd 0x110(%rsp), %xmm2
movapd 0x120(%rsp), %xmm3
movupd %xmm3, 0x10(%rsp)
movupd %xmm2, (%rsp)
xorl %r13d, %r13d
xorl %esi, %esi
callq 0x2d426
cmpl $0x3, %ebp
jne 0x6d9a2
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x28(%rax), %xmm1
unpcklps 0x5c2f2(%rip), %xmm1    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x5c2fa(%rip), %xmm1    # 0xca490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
subsd 0x20(%rax), %xmm0
addsd 0x713f9(%rip), %xmm0    # 0xdf5a8
movq 0x58(%rax), %rdi
movsd 0x18(%rax), %xmm1
addsd 0x713f8(%rip), %xmm1    # 0xdf5b8
movapd 0x110(%rsp), %xmm2
movapd 0x120(%rsp), %xmm3
movupd %xmm3, 0x10(%rsp)
movupd %xmm2, (%rsp)
pushq $0x1
popq %rsi
callq 0x2d426
xorl %r13d, %r13d
jmp 0x6d9a2
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x65f1d(%rip), %xmm1    # 0xd4120
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x68(%rsp), %xmm4
movsd 0x58(%rsp), %xmm5
movups 0x90(%rsp), %xmm0
movups 0xa0(%rsp), %xmm2
movups %xmm2, 0x10(%rsp)
movups %xmm0, (%rsp)
pushq $0x3
popq %rsi
movsd 0x48(%rsp), %xmm0
movapd 0x80(%rsp), %xmm2
callq 0x2d23b
jmp 0x6e104
movq 0x8(%rbx), %rax
movq 0x58(%rax), %rdi
movsd 0x50(%rsp), %xmm3
movsd 0x65ebd(%rip), %xmm1    # 0xd4120
mulsd %xmm3, %xmm1
addsd 0x18(%rax), %xmm1
movsd 0x68(%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 0x2d15c
jmp 0x6e104
movq 0xbfd03(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x5bda7(%rip), %rsi     # 0xca066
leaq 0x7153e(%rip), %rdx     # 0xdf804
leaq 0x71546(%rip), %rcx     # 0xdf813
leaq 0x713ac(%rip), %r8      # 0xdf680
movl $0x1be, %r9d            # imm = 0x1BE
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
movq 0xbfccb(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x5bd6f(%rip), %rsi     # 0xca066
leaq 0x71562(%rip), %rdx     # 0xdf860
leaq 0x7150e(%rip), %rcx     # 0xdf813
leaq 0x71374(%rip), %r8      # 0xdf680
movl $0x1f2, %r9d            # imm = 0x1F2
jmp 0x6e2da