// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas_cairo.c
// Function: gt_canvas_cairo_visit_block
int gt_canvas_cairo_visit_block(GtCanvas *canvas, GtBlock *block,
                                GtError *err)
{
  int had_err = 0, arrow_status = ARROW_NONE;
  GtRange block_range;
  GtDrawingRange draw_range;
  GtColor grey, fillcolor, strokecolor;
  double block_start,
         block_width,
         bar_height = BAR_HEIGHT_DEFAULT,
         min_len_block = MIN_LEN_BLOCK_DEFAULT,
         arrow_width = ARROW_WIDTH_DEFAULT,
         stroke_width = STROKE_WIDTH_DEFAULT;
  const char *caption, *btype;
  GtStrand strand;
  double maxbarheight;
  btype = gt_block_get_type(block);

  gt_assert(canvas && block);

  grey.red = grey.green = grey.blue = DEFAULT_GREY_TONE;
  grey.alpha = 0.5;
  strand = gt_block_get_strand(block);
  block_range = gt_block_get_range(block);
  if (gt_block_get_max_height(block, &maxbarheight, canvas->pvt->sty, err)) {
    return -1;
  }
  if (gt_style_get_num(canvas->pvt->sty, "format", "bar_height", &bar_height,
                       NULL, err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  if (gt_style_get_num(canvas->pvt->sty, "format", "min_len_block",
                       &min_len_block,NULL, err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  if (gt_style_get_num(canvas->pvt->sty, "format", "arrow_width", &arrow_width,
                       NULL, err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  if (gt_style_get_num(canvas->pvt->sty, "format", "stroke_width",
                       &stroke_width, NULL, err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }
  if (gt_style_get_color_with_track(canvas->pvt->sty,
                                 btype, "stroke", &strokecolor,
                                 gt_block_get_top_level_feature(block),
                                 gt_track_get_title(canvas->pvt->current_track),
                                 err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }

  if (strand == GT_STRAND_REVERSE || strand == GT_STRAND_BOTH)
    arrow_status = ARROW_LEFT;
  if (strand == GT_STRAND_FORWARD || strand == GT_STRAND_BOTH)
    arrow_status = (arrow_status == ARROW_LEFT ? ARROW_BOTH : ARROW_RIGHT);

  /* calculate scaled drawing coordinates for this canvas */
  draw_range = gt_coords_calc_generic_range(block_range,
                                            canvas->pvt->viewrange);
  draw_range.start *= canvas->pvt->width-2*canvas->pvt->margins;
  draw_range.end *= canvas->pvt->width-2*canvas->pvt->margins;
  block_start = draw_range.start + canvas->pvt->margins;
  block_width = draw_range.end - draw_range.start;

  /* draw block caption */
  if (gt_block_caption_is_visible(block))
  {
    GtStr *fontfam = NULL;
    caption = gt_str_get(gt_block_get_caption(block));
    if (caption)
    {
      double theight = gt_graphics_get_text_height(canvas->pvt->g),
             captionspace = CAPTION_BAR_SPACE_DEFAULT;
      if (gt_style_get_num(canvas->pvt->sty,
                           "format", "block_caption_space",
                           &captionspace, NULL, err) == GT_STYLE_QUERY_ERROR) {
        return -1;
      }
      if (gt_style_get_num(canvas->pvt->sty,
                          "format", "block_caption_font_size",
                          &theight, NULL, err) == GT_STYLE_QUERY_ERROR) {
        return -1;
      }
      fontfam = gt_str_new_cstr("Sans");
      if (gt_style_get_str(canvas->pvt->sty,
                           "format", "block_caption_font_family",
                           fontfam, NULL, err ) == GT_STYLE_QUERY_ERROR) {
        gt_str_delete(fontfam);
        return -1;
      }
      gt_graphics_set_font(canvas->pvt->g,
                           gt_str_get(fontfam),
                           SLANT_NORMAL,
                           WEIGHT_NORMAL,
                           theight);
      gt_str_delete(fontfam);
      gt_graphics_draw_text_clip(canvas->pvt->g,
                                 block_start,
                                 canvas->pvt->y - bar_height/2
                                                - captionspace,
                                 caption);
    }
  }

  /* do not draw further details in very small blocks */
  if (!gt_block_has_only_one_fullsize_element(block)
       && gt_double_smaller_double(block_width, min_len_block))
  {
    /* optimise drawing for very narrow blocks,
       if <= 1px/pt width, draw as simple lines */
    if (canvas->pvt->bt && draw_range.end-draw_range.start <= 1.1)
    {
      if (!gt_bittab_bit_is_set(canvas->pvt->bt,
                                (GtUword) draw_range.start)) {
        gt_graphics_draw_vertical_line(canvas->pvt->g,
                                       block_start,
                                       canvas->pvt->y - bar_height/2,
                                       strokecolor,
                                       bar_height,
                                       stroke_width);
        gt_bittab_set_bit(canvas->pvt->bt, (GtUword) draw_range.start);
      }
    } else {
      if (gt_style_get_color_with_track(canvas->pvt->sty,
                             btype, "fill",
                             &fillcolor,
                             gt_block_get_top_level_feature(block),
                             gt_track_get_title(canvas->pvt->current_track),
                             err) == GT_STYLE_QUERY_ERROR) {
        return -1;
      }

      gt_graphics_draw_box(canvas->pvt->g,
                           block_start,
                           canvas->pvt->y - bar_height/2,
                           block_width,
                           bar_height,
                           fillcolor,
                           arrow_status,
                           arrow_width,
                           stroke_width,
                           strokecolor,
                           true);

      /* 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);
    }

    /* register coordinates in GtImageInfo object if available */
    if (canvas->pvt->ii)
    {
      GtRecMap *rm = gt_rec_map_new(block_start,
                                    canvas->pvt->y - bar_height/2,
                                    block_start + block_width,
                                    canvas->pvt->y + bar_height/2,
                                    (GtFeatureNode*) /* XXX */
                                      gt_block_get_top_level_feature(block));
      gt_image_info_add_rec_map(canvas->pvt->ii, rm);
      gt_rec_map_set_omitted_children(rm, true);
    }
    /* signal break */
    return 1;
  }

  /* get stroke color */
  if (gt_style_get_color(canvas->pvt->sty,
                         "format", "default_stroke_color",
                         &strokecolor, NULL, err) == GT_STYLE_QUERY_ERROR) {
    return -1;
  }

  /* draw parent block boundaries */
  gt_graphics_draw_dashes(canvas->pvt->g,
                          block_start,
                          canvas->pvt->y - bar_height/2,
                          block_width,
                          bar_height,
                          ARROW_NONE,
                          arrow_width,
                          stroke_width,
                          strokecolor);
  return had_err;
}

// Assembly:
subq $0x1e8, %rsp            # imm = 0x1E8
movq %rdi, 0x1d8(%rsp)
movq %rsi, 0x1d0(%rsp)
movq %rdx, 0x1c8(%rsp)
movl $0x0, 0x1c4(%rsp)
movl $0x3, 0x1c0(%rsp)
movsd 0xb7113(%rip), %xmm0    # 0x169f00
movsd %xmm0, 0x118(%rsp)
movsd 0xb5522(%rip), %xmm0    # 0x168320
movsd %xmm0, 0x110(%rsp)
movsd 0xc1651(%rip), %xmm0    # 0x174460
movsd %xmm0, 0x108(%rsp)
movsd 0xb49f8(%rip), %xmm0    # 0x167818
movsd %xmm0, 0x100(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb10f0
movq %rax, 0xf0(%rsp)
cmpq $0x0, 0x1d8(%rsp)
je 0xb2e54
cmpq $0x0, 0x1d0(%rsp)
jne 0xb2e8c
movq 0x10117d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xab201(%rip), %rsi     # 0x15e066
leaq 0xb4914(%rip), %rdx     # 0x167780
leaq 0xc176a(%rip), %rcx     # 0x1745dd
leaq 0xc163e(%rip), %r8      # 0x1744b8
movl $0xfb, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xb2e8e
movsd 0xc15d2(%rip), %xmm0    # 0x174468
movsd %xmm0, 0x180(%rsp)
movsd 0xc15c1(%rip), %xmm0    # 0x174468
movsd %xmm0, 0x178(%rsp)
movsd 0xc15b0(%rip), %xmm0    # 0x174468
movsd %xmm0, 0x170(%rsp)
movsd 0xb494f(%rip), %xmm0    # 0x167818
movsd %xmm0, 0x188(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb1030
movl %eax, 0xec(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb0380
movq %rax, 0xd0(%rsp)
movq %rdx, 0xd8(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0xd8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq 0x1d0(%rsp), %rdi
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdx
movq 0x1c8(%rsp), %rcx
leaq 0xe0(%rsp), %rsi
callq 0xb1140
cmpl $0x0, %eax
je 0xb2f65
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xab212(%rip), %rsi     # 0x15e196
leaq 0xb72c6(%rip), %rdx     # 0x16a251
leaq 0x118(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x49af0
cmpl $0x2, %eax
jne 0xb2fb2
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xab1c5(%rip), %rsi     # 0x15e196
leaq 0xc1621(%rip), %rdx     # 0x1745f9
leaq 0x110(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x49af0
cmpl $0x2, %eax
jne 0xb2fff
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xab178(%rip), %rsi     # 0x15e196
leaq 0xc15e2(%rip), %rdx     # 0x174607
leaq 0x108(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x49af0
cmpl $0x2, %eax
jne 0xb304c
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xab12b(%rip), %rsi     # 0x15e196
leaq 0xc15a1(%rip), %rdx     # 0x174613
leaq 0x100(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x49af0
cmpl $0x2, %eax
jne 0xb3099
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movq %rax, 0x80(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb0be0
movq %rax, 0x90(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x40(%rax), %rdi
callq 0x4cf40
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %r8
movq %rax, %r9
movq 0x1c8(%rsp), %rax
leaq 0xc150b(%rip), %rdx     # 0x174620
leaq 0x130(%rsp), %rcx
movq %rax, (%rsp)
callq 0x48420
cmpl $0x2, %eax
jne 0xb313b
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
cmpl $0x1, 0xec(%rsp)
je 0xb314f
cmpl $0x2, 0xec(%rsp)
jne 0xb315a
movl $0x0, 0x1c0(%rsp)
cmpl $0x0, 0xec(%rsp)
je 0xb316e
cmpl $0x2, 0xec(%rsp)
jne 0xb318c
movl 0x1c0(%rsp), %edx
movl $0x1, %eax
movl $0x2, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movl %eax, 0x1c0(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x1b0(%rsp), %rsi
movq 0x1b8(%rsp), %rdx
movq (%rax), %rcx
movq 0x8(%rax), %r8
leaq 0xb8(%rsp), %rdi
callq 0xb6300
movq 0xc8(%rsp), %rax
movq %rax, 0x1a0(%rsp)
movups 0xb8(%rsp), %xmm0
movaps %xmm0, 0x190(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %xmm3
movaps 0xab28c(%rip), %xmm2    # 0x15e480
punpckldq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
movapd 0xab290(%rip), %xmm1    # 0x15e490
subpd %xmm1, %xmm3
movaps %xmm3, %xmm0
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
addsd %xmm0, %xmm3
movsd 0x20(%rax), %xmm0
addsd %xmm0, %xmm0
subsd %xmm0, %xmm3
movsd 0x190(%rsp), %xmm0
mulsd %xmm3, %xmm0
movsd %xmm0, 0x190(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x20(%rax), %xmm1
addsd %xmm1, %xmm1
subsd %xmm1, %xmm0
mulsd 0x198(%rsp), %xmm0
movsd %xmm0, 0x198(%rsp)
movsd 0x190(%rsp), %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
addsd 0x20(%rax), %xmm0
movsd %xmm0, 0x128(%rsp)
movsd 0x198(%rsp), %xmm0
subsd 0x190(%rsp), %xmm0
movsd %xmm0, 0x120(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb0ee0
testb $0x1, %al
jne 0xb32d5
jmp 0xb34e8
movq $0x0, 0xb0(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb03f0
movq %rax, %rdi
callq 0x19940
movq %rax, 0xf8(%rsp)
cmpq $0x0, 0xf8(%rsp)
je 0xb34e6
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
callq 0x3ebd0
movsd %xmm0, 0xa8(%rsp)
movsd 0xb57ed(%rip), %xmm0    # 0x168b20
movsd %xmm0, 0xa0(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xaae3b(%rip), %rsi     # 0x15e196
leaq 0xb6cc5(%rip), %rdx     # 0x16a027
leaq 0xa0(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x49af0
cmpl $0x2, %eax
jne 0xb3389
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xaadee(%rip), %rsi     # 0x15e196
leaq 0xb6b1a(%rip), %rdx     # 0x169ec9
leaq 0xa8(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x49af0
cmpl $0x2, %eax
jne 0xb33d6
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
leaq 0xb6ae7(%rip), %rdi     # 0x169ec4
callq 0x18f70
movq %rax, 0xb0(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0xb0(%rsp), %rcx
movq 0x1c8(%rsp), %r9
leaq 0xaad85(%rip), %rsi     # 0x15e196
leaq 0xb6ac9(%rip), %rdx     # 0x169ee1
xorl %eax, %eax
movl %eax, %r8d
callq 0x494c0
cmpl $0x2, %eax
jne 0xb3444
movq 0xb0(%rsp), %rdi
callq 0x1afc0
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0xb0(%rsp), %rdi
callq 0x19940
movq 0x78(%rsp), %rdi
movq %rax, %rsi
movsd 0xa8(%rsp), %xmm0
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x3edf0
movq 0xb0(%rsp), %rdi
callq 0x1afc0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movsd 0x128(%rsp), %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm1
movsd 0x118(%rsp), %xmm2
movsd 0xb4e60(%rip), %xmm3    # 0x168328
divsd %xmm3, %xmm2
subsd %xmm2, %xmm1
subsd 0xa0(%rsp), %xmm1
movq 0xf8(%rsp), %rsi
callq 0x3e8a0
jmp 0xb34e8
movq 0x1d0(%rsp), %rdi
callq 0xb0d00
testb $0x1, %al
jne 0xb3a0c
movsd 0x120(%rsp), %xmm0
movsd 0x110(%rsp), %xmm1
callq 0x8c360
testb $0x1, %al
jne 0xb351d
jmp 0xb3a0c
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x50(%rax)
je 0xb364f
movsd 0x198(%rsp), %xmm1
subsd 0x190(%rsp), %xmm1
movsd 0xbb942(%rip), %xmm0    # 0x16ee90
ucomisd %xmm1, %xmm0
jb 0xb364f
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x50(%rax), %rdi
movsd 0x190(%rsp), %xmm0
movsd 0xb43af(%rip), %xmm2    # 0x167928
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
andq %rcx, %rax
orq %rax, %rsi
callq 0x79c60
testb $0x1, %al
jne 0xb364a
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movsd 0x128(%rsp), %xmm0
movsd 0x18(%rax), %xmm1
movsd 0x118(%rsp), %xmm2
movsd 0xb4d6d(%rip), %xmm4    # 0x168340
movaps %xmm2, %xmm3
mulsd %xmm4, %xmm3
addsd %xmm3, %xmm1
movsd 0x100(%rsp), %xmm3
movups 0x130(%rsp), %xmm4
movups 0x140(%rsp), %xmm5
movq %rsp, %rax
movups %xmm5, 0x10(%rax)
movups %xmm4, (%rax)
callq 0x3f3f0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x50(%rax), %rdi
movsd 0x190(%rsp), %xmm0
movsd 0xb4301(%rip), %xmm2    # 0x167928
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
andq %rcx, %rax
orq %rax, %rsi
callq 0x78fe0
jmp 0xb38fa
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movq %rax, 0x60(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb0be0
movq %rax, 0x70(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x40(%rax), %rdi
callq 0x4cf40
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %r8
movq %rax, %r9
movq 0x1c8(%rsp), %rax
leaq 0xbb352(%rip), %rdx     # 0x16ea0b
leaq 0x150(%rsp), %rcx
movq %rax, (%rsp)
callq 0x48420
cmpl $0x2, %eax
jne 0xb36df
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movsd 0x128(%rsp), %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm1
movsd 0x118(%rsp), %xmm2
movsd 0xb4c0e(%rip), %xmm3    # 0x168328
divsd %xmm3, %xmm2
subsd %xmm2, %xmm1
movsd 0x120(%rsp), %xmm2
movsd 0x118(%rsp), %xmm3
movl 0x1c0(%rsp), %esi
movsd 0x108(%rsp), %xmm4
movsd 0x100(%rsp), %xmm5
leaq 0x150(%rsp), %rcx
leaq 0x130(%rsp), %rax
movl $0x1, %edx
movq (%rcx), %r8
movq %r8, (%rsp)
movq 0x8(%rcx), %r8
movq %r8, 0x8(%rsp)
movq 0x10(%rcx), %r8
movq %r8, 0x10(%rsp)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rsp)
movq (%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x28(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x38(%rsp)
callq 0x3f4f0
cmpl $0x1, 0x1a0(%rsp)
je 0xb37c0
cmpl $0x3, 0x1a0(%rsp)
jne 0xb383b
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x20(%rax), %xmm0
movsd 0xb4027(%rip), %xmm1    # 0x167810
subsd %xmm1, %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm1
movsd 0xc0c6a(%rip), %xmm2    # 0x174470
subsd %xmm2, %xmm1
leaq 0x170(%rsp), %rax
xorl %esi, %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
callq 0x3fa40
cmpl $0x0, 0x1a0(%rsp)
je 0xb3853
cmpl $0x3, 0x1a0(%rsp)
jne 0xb38f8
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movq 0x28(%rax), %xmm0
movaps 0xaac11(%rip), %xmm1    # 0x15e480
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaac15(%rip), %xmm1    # 0x15e490
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
subsd 0x20(%rax), %xmm0
movsd 0xb3f6d(%rip), %xmm1    # 0x167810
addsd %xmm1, %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm1
movsd 0xc0bb0(%rip), %xmm2    # 0x174470
subsd %xmm2, %xmm1
leaq 0x170(%rsp), %rax
movl $0x1, %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
callq 0x3fa40
jmp 0xb38fa
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x60(%rax)
je 0xb39fc
movsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm0
movsd 0x118(%rsp), %xmm1
movsd 0xb49e6(%rip), %xmm2    # 0x168328
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x128(%rsp), %xmm0
addsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm0
movsd 0x118(%rsp), %xmm1
movsd 0xb499e(%rip), %xmm2    # 0x168328
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x58(%rsp)
movq 0x1d0(%rsp), %rdi
callq 0xb0be0
movsd 0x40(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
movsd 0x50(%rsp), %xmm2
movsd 0x58(%rsp), %xmm3
movq %rax, %rdi
callq 0x473c0
movq %rax, 0x98(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x60(%rax), %rdi
movq 0x98(%rsp), %rsi
callq 0x45210
movq 0x98(%rsp), %rdi
movl $0x1, %esi
callq 0x476f0
movl $0x1, 0x1e4(%rsp)
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq 0x1c8(%rsp), %r9
leaq 0xaa76b(%rip), %rsi     # 0x15e196
leaq 0xc0bf5(%rip), %rdx     # 0x174627
leaq 0x130(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r8d
callq 0x48bc0
cmpl $0x2, %eax
jne 0xb3a59
movl $0xffffffff, 0x1e4(%rsp) # imm = 0xFFFFFFFF
jmp 0xb3b02
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movsd 0x128(%rsp), %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movsd 0x18(%rax), %xmm1
movsd 0x118(%rsp), %xmm2
movsd 0xb4894(%rip), %xmm3    # 0x168328
divsd %xmm3, %xmm2
subsd %xmm2, %xmm1
movsd 0x120(%rsp), %xmm2
movsd 0x118(%rsp), %xmm3
movsd 0x108(%rsp), %xmm4
movsd 0x100(%rsp), %xmm5
movl $0x3, %esi
leaq 0x130(%rsp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
callq 0x3f680
movl 0x1c4(%rsp), %eax
movl %eax, 0x1e4(%rsp)
movl 0x1e4(%rsp), %eax
addq $0x1e8, %rsp            # imm = 0x1E8
retq
nopw %cs:(%rax,%rax)