LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_layout_post
int gt_canvas_visit_layout_post(GtCanvas *canvas, GtLayout* layout,
                                GtError *err)
{
  gt_assert(canvas && layout);
  if (canvas->c_class->visit_layout_post)
    return canvas->c_class->visit_layout_post(canvas, layout, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3a9e3
cmpq $0x0, 0x10(%rsp)
jne 0x3aa1b
movq 0x1795ee(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123672(%rip), %rsi    # 0x15e066
leaq 0x12ccb6(%rip), %rdx    # 0x1676b1
leaq 0x12ccdb(%rip), %rcx    # 0x1676dd
leaq 0x12cbbd(%rip), %r8     # 0x1675c6
movl $0xd9, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3aa1d
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x3aa4f
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3aa57
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_track_pre
int gt_canvas_visit_track_pre(GtCanvas *canvas, GtTrack *track, GtError *err)
{
  gt_assert(canvas && track);
  canvas->pvt->current_track = track;
  if (canvas->c_class->visit_track_pre)
    return canvas->c_class->visit_track_pre(canvas, track, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3aa83
cmpq $0x0, 0x10(%rsp)
jne 0x3aabb
movq 0x17954e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1235d2(%rip), %rsi    # 0x15e066
leaq 0x12cc5e(%rip), %rdx    # 0x1676f9
leaq 0x12cc67(%rip), %rcx    # 0x167709
leaq 0x12cb1d(%rip), %r8     # 0x1675c6
movl $0xe2, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3aabd
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x40(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x18(%rax)
je 0x3ab01
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3ab09
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_track_post
int gt_canvas_visit_track_post(GtCanvas *canvas, GtTrack *track, GtError *err)
{
  gt_assert(canvas && track);
  if (canvas->c_class->visit_track_post)
    return canvas->c_class->visit_track_post(canvas, track, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3ab43
cmpq $0x0, 0x10(%rsp)
jne 0x3ab7b
movq 0x17948e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123512(%rip), %rsi    # 0x15e066
leaq 0x12cb9e(%rip), %rdx    # 0x1676f9
leaq 0x12cbc1(%rip), %rcx    # 0x167723
leaq 0x12ca5d(%rip), %r8     # 0x1675c6
movl $0xec, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3ab7d
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x20(%rax)
je 0x3abaf
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3abb7
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_line_pre
int gt_canvas_visit_line_pre(GtCanvas *canvas, GtLine *line, GtError *err)
{
  gt_assert(canvas && line);
  if (canvas->c_class->visit_line_pre)
    return canvas->c_class->visit_line_pre(canvas, line, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3abe3
cmpq $0x0, 0x10(%rsp)
jne 0x3ac1b
movq 0x1793ee(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123472(%rip), %rsi    # 0x15e066
leaq 0x12cb43(%rip), %rdx    # 0x16773e
leaq 0x12cb4b(%rip), %rcx    # 0x16774d
leaq 0x12c9bd(%rip), %r8     # 0x1675c6
movl $0xf5, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3ac1d
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x3ac4f
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3ac57
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_line_post
int gt_canvas_visit_line_post(GtCanvas *canvas, GtLine *line, GtError *err)
{
  gt_assert(canvas && line);
  if (canvas->c_class->visit_line_post)
    return canvas->c_class->visit_line_post(canvas, line, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3ac83
cmpq $0x0, 0x10(%rsp)
jne 0x3acbb
movq 0x17934e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1233d2(%rip), %rsi    # 0x15e066
leaq 0x12caa3(%rip), %rdx    # 0x16773e
leaq 0x12cac4(%rip), %rcx    # 0x167766
leaq 0x12c91d(%rip), %r8     # 0x1675c6
movl $0xfe, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3acbd
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x30(%rax)
je 0x3acef
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x30(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3acf7
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_block
int gt_canvas_visit_block(GtCanvas *canvas, GtBlock *block, GtError *err)
{
  gt_assert(canvas && block);
  if (canvas->c_class->visit_block)
    return canvas->c_class->visit_block(canvas, block, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3ad23
cmpq $0x0, 0x10(%rsp)
jne 0x3ad5b
movq 0x1792ae(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123332(%rip), %rsi    # 0x15e066
leaq 0x12ca45(%rip), %rdx    # 0x167780
leaq 0x12ca4e(%rip), %rcx    # 0x167790
leaq 0x12c87d(%rip), %r8     # 0x1675c6
movl $0x107, %r9d            # imm = 0x107
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3ad5d
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x38(%rax)
je 0x3ad8f
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x38(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3ad97
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_element
int gt_canvas_visit_element(GtCanvas *canvas, GtElement *element, GtError *err)
{
  gt_assert(canvas && element);
  if (canvas->c_class->visit_element)
    return canvas->c_class->visit_element(canvas, element, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3adc3
cmpq $0x0, 0x10(%rsp)
jne 0x3adfb
movq 0x17920e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123292(%rip), %rsi    # 0x15e066
leaq 0x12c9cb(%rip), %rdx    # 0x1677a6
leaq 0x12c9d6(%rip), %rcx    # 0x1677b8
leaq 0x12c7dd(%rip), %r8     # 0x1675c6
movl $0x110, %r9d            # imm = 0x110
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3adfd
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x40(%rax)
je 0x3ae2f
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3ae37
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_custom_track
int gt_canvas_visit_custom_track(GtCanvas *canvas, GtCustomTrack *ct,
                                 GtError *err)
{
  gt_assert(canvas && ct);
  if (canvas->c_class->visit_ct)
    return canvas->c_class->visit_ct(canvas, ct, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3ae63
cmpq $0x0, 0x10(%rsp)
jne 0x3ae9b
movq 0x17916e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1231f2(%rip), %rsi    # 0x15e066
leaq 0x12c955(%rip), %rdx    # 0x1677d0
leaq 0x12c95b(%rip), %rcx    # 0x1677dd
leaq 0x12c73d(%rip), %r8     # 0x1675c6
movl $0x11a, %r9d            # imm = 0x11A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3ae9d
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x48(%rax)
je 0x3aecf
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x48(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3aed7
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas_cairo_file.c
// Function: gt_canvas_cairo_file_to_file
int gt_canvas_cairo_file_to_file(GtCanvasCairoFile *canvas,
                                 const char *filename, GtError *err)
{
  int had_err = 0;
  GtCanvas *c = (GtCanvas*) canvas;
  gt_error_check(err);
  gt_assert(canvas && filename);
  /* write out result file */
  if (c->pvt->g)
    had_err = gt_graphics_save_to_file(c->pvt->g, filename, err);
  else
  {
    /* XXX: shouldn't this be an assertion? */
    gt_error_set(err, "No graphics has been created yet!");
    had_err = -1;
  }

  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x3afb4
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3af7c
jmp 0x3afb4
movq 0x179055(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1230d9(%rip), %rsi    # 0x15e066
leaq 0x1236b4(%rip), %rdx    # 0x15e648
leaq 0x12c885(%rip), %rcx    # 0x167820
leaq 0x12c89b(%rip), %r8     # 0x16783d
movl $0x2f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3afb6
jmp 0x3afb8
cmpq $0x0, 0x20(%rsp)
je 0x3afc8
cmpq $0x0, 0x18(%rsp)
jne 0x3b000
movq 0x179009(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12308d(%rip), %rsi    # 0x15e066
leaq 0x12c886(%rip), %rdx    # 0x167866
leaq 0x12c839(%rip), %rcx    # 0x167820
leaq 0x12c84f(%rip), %r8     # 0x16783d
movl $0x30, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b002
movq (%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x3b032
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x3fc40
movl %eax, 0xc(%rsp)
jmp 0x3b04d
movq 0x10(%rsp), %rdi
leaq 0x12c83b(%rip), %rsi    # 0x167879
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
movl 0xc(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas_cairo_file.c
// Function: gt_canvas_cairo_file_to_stream
int gt_canvas_cairo_file_to_stream(GtCanvasCairoFile *canvas, GtStr *stream)
{
  int had_err = 0;
  GtCanvas *c = (GtCanvas*) canvas;
  gt_assert(canvas && stream);

  /* write out result file */
  if (c->pvt->g)
    gt_graphics_save_to_stream(c->pvt->g, stream);

  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movl $0x0, 0x14(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x3b090
cmpq $0x0, 0x18(%rsp)
jne 0x3b0c8
movq 0x178f41(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122fc5(%rip), %rsi    # 0x15e066
leaq 0x12c7f3(%rip), %rdx    # 0x16789b
leaq 0x12c7fd(%rip), %rcx    # 0x1678ac
leaq 0x12c787(%rip), %r8     # 0x16783d
movl $0x42, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b0ca
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x3b0f1
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3fd50
movl 0x14(%rsp), %eax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas_cairo_file.c
// Function: gt_canvas_cairo_file_class
const GtCanvasClass* gt_canvas_cairo_file_class(void)
{
  static const GtCanvasClass *canvas_class = NULL;
  gt_class_alloc_lock_enter();
  if (!canvas_class) {
    canvas_class = gt_canvas_class_new(sizeof (GtCanvasCairoFile),
                                       gt_canvas_cairo_visit_layout_pre,
                                       gt_canvas_cairo_visit_layout_post,
                                       gt_canvas_cairo_visit_track_pre,
                                       gt_canvas_cairo_visit_track_post,
                                       gt_canvas_cairo_visit_line_pre,
                                       gt_canvas_cairo_visit_line_post,
                                       gt_canvas_cairo_visit_block,
                                       gt_canvas_cairo_visit_element,
                                       gt_canvas_cairo_visit_custom_track,
                                       gt_canvas_cairo_draw_ruler,
                                       NULL);
  }
  gt_class_alloc_lock_leave();
  return canvas_class;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x38, %rsp
callq 0x7b730
cmpq $0x0, 0x17b359(%rip)    # 0x1b6470
jne 0x3b193
movl $0x18, %edi
leaq 0x7718b(%rip), %rsi     # 0xb22b0
leaq 0x77284(%rip), %rdx     # 0xb23b0
leaq 0x7729d(%rip), %rcx     # 0xb23d0
leaq 0x777d6(%rip), %r8      # 0xb2910
leaq 0x7789f(%rip), %r9      # 0xb29e0
leaq 0x77b18(%rip), %r14     # 0xb2c60
leaq 0x77c61(%rip), %rbx     # 0xb2db0
leaq 0x789ca(%rip), %r11     # 0xb3b20
leaq 0x79dd3(%rip), %r10     # 0xb4f30
leaq 0x7a23c(%rip), %rax     # 0xb53a0
xorl %ebp, %ebp
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
callq 0x3a0a0
movq %rax, 0x17b2dd(%rip)    # 0x1b6470
callq 0x7b790
movq 0x17b2d1(%rip), %rax    # 0x1b6470
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_new
GtDiagram* gt_diagram_new(GtFeatureIndex *feature_index, const char *seqid,
                          const GtRange *range, GtStyle *style,
                          GtError *err)
{
  GtDiagram *diagram;
  int had_err = 0;
  GtArray *features = NULL;
  gt_assert(seqid && range && style);
  if (range->start == range->end)
  {
    gt_error_set(err, "range start must not be equal to range end");
    return NULL;
  }
  features = gt_array_new(sizeof (GtGenomeNode*));
  had_err = gt_feature_index_get_features_for_range(feature_index, features,
                                                    seqid, range, err);
  if (had_err)
  {
    gt_array_delete(features);
    return NULL;
  }
  diagram = gt_diagram_new_generic(features, range, style, false);
  return diagram;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movq %r8, 0x18(%rsp)
movl $0x0, 0xc(%rsp)
movq $0x0, (%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x3b525
cmpq $0x0, 0x28(%rsp)
je 0x3b525
cmpq $0x0, 0x20(%rsp)
jne 0x3b55d
movq 0x178aac(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122b30(%rip), %rsi    # 0x15e066
leaq 0x12c3f3(%rip), %rdx    # 0x167930
leaq 0x12c404(%rip), %rcx    # 0x167948
leaq 0x12c40c(%rip), %r8     # 0x167957
movl $0x34a, %r9d            # imm = 0x34A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b55f
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x3b590
movq 0x18(%rsp), %rdi
leaq 0x12c3f8(%rip), %rsi    # 0x167976
movb $0x0, %al
callq 0xc0d0
movq $0x0, 0x40(%rsp)
jmp 0x3b5fe
movl $0x8, %edi
callq 0x75ab0
movq %rax, (%rsp)
movq 0x38(%rsp), %rdi
movq (%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x28(%rsp), %rcx
movq 0x18(%rsp), %r8
callq 0x1d890
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
je 0x3b5da
movq (%rsp), %rdi
callq 0x770a0
movq $0x0, 0x40(%rsp)
jmp 0x3b5fe
movq (%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
xorl %ecx, %ecx
callq 0x3b610
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_new_generic
static GtDiagram* gt_diagram_new_generic(GtArray *features,
                                         const GtRange *range,
                                         GtStyle *style,
                                         bool ref_features)
{
  GtDiagram *diagram;
  diagram = gt_calloc(1, sizeof (GtDiagram));
  diagram->nodeinfo = gt_hashmap_new(GT_HASH_DIRECT, NULL, NULL);
  diagram->style = style;
  diagram->lock = gt_rwlock_new();
  diagram->range = *range;
  if (ref_features)
    diagram->features = gt_array_ref(features);
  else
    diagram->features = features;
  diagram->select_func = default_track_selector;
  diagram->custom_tracks = gt_array_new(sizeof (GtCustomTrack*));
  /* init caches */
  diagram->collapsingtypes = gt_hashmap_new(GT_HASH_STRING, NULL, gt_free_func);
  diagram->groupedtypes = gt_hashmap_new(GT_HASH_STRING, NULL, gt_free_func);
  diagram->caption_display_status = gt_hashmap_new(GT_HASH_DIRECT, NULL,
                                                   gt_free_func);
  return diagram;
}

// Assembly:
subq $0x28, %rsp
movb %cl, %al
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
andb $0x1, %al
movb %al, 0xf(%rsp)
movl $0x1, %edi
movl $0x68, %esi
leaq 0x12c31b(%rip), %rdx    # 0x167957
movl $0x330, %ecx            # imm = 0x330
callq 0xd5b0
movq %rax, (%rsp)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x28(%rax)
callq 0x1bec0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x60(%rax)
movq (%rsp), %rax
movq 0x18(%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x40(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x48(%rax)
testb $0x1, 0xf(%rsp)
je 0x3b6b6
movq 0x20(%rsp), %rdi
callq 0x75c40
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
jmp 0x3b6c3
movq 0x20(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
movq (%rsp), %rax
leaq 0x2d2(%rip), %rcx       # 0x3b9a0
movq %rcx, 0x58(%rax)
movl $0x8, %edi
callq 0x75ab0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0x2dad7(%rip), %rdx    # 0xdc20
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0x2daf7(%rip), %rdx    # 0xdc20
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x20(%rax)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0x2db14(%rip), %rdx    # 0xdc20
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movq (%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_get_range
GtRange gt_diagram_get_range(const GtDiagram *diagram)
{
  GtRange rng;
  gt_assert(diagram);
  gt_rwlock_rdlock(diagram->lock);
  rng = diagram->range;
  gt_rwlock_unlock(diagram->lock);
  return rng;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x3b819
movq 0x1787f0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122874(%rip), %rsi    # 0x15e066
leaq 0x14027c(%rip), %rdx    # 0x17ba75
leaq 0x12c1d6(%rip), %rcx    # 0x1679d6
leaq 0x12c150(%rip), %r8     # 0x167957
movl $0x366, %r9d            # imm = 0x366
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b81b
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c060
movq 0x8(%rsp), %rax
movups 0x40(%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rdx
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_set_track_selector_func
void gt_diagram_set_track_selector_func(GtDiagram *diagram,
                                        GtTrackSelectorFunc bsfunc,
                                        void *ptr)
{
  gt_assert(diagram);
  gt_rwlock_wrlock(diagram->lock);
  /* register selector function and attached pointer */
  diagram->select_func = bsfunc;
  diagram->ptr = ptr;
  /* this could change track assignment -> discard current blocks and requeue */
  gt_hashmap_delete(diagram->blocks);
  diagram->blocks = NULL;
  gt_rwlock_unlock(diagram->lock);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x3b8b2
movq 0x178757(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1227db(%rip), %rsi    # 0x15e066
leaq 0x1401e3(%rip), %rdx    # 0x17ba75
leaq 0x12c152(%rip), %rcx    # 0x1679eb
leaq 0x12c0b7(%rip), %r8     # 0x167957
movl $0x371, %r9d            # imm = 0x371
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b8b4
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c100
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rax)
movq (%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rdi
callq 0x86cc0
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_reset_track_selector_func
void gt_diagram_reset_track_selector_func(GtDiagram *diagram)
{
  gt_assert(diagram);
  gt_rwlock_wrlock(diagram->lock);
  diagram->select_func = default_track_selector;
  gt_hashmap_delete(diagram->blocks);
  diagram->blocks = NULL;
  gt_rwlock_unlock(diagram->lock);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x3b954
movq 0x1786b5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122739(%rip), %rsi    # 0x15e066
leaq 0x140141(%rip), %rdx    # 0x17ba75
leaq 0x12c0d3(%rip), %rcx    # 0x167a0e
leaq 0x12c015(%rip), %r8     # 0x167957
movl $0x37e, %r9d            # imm = 0x37E
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b956
movq (%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c100
movq (%rsp), %rax
leaq 0x32(%rip), %rcx        # 0x3b9a0
movq %rcx, 0x58(%rax)
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq $0x0, (%rax)
movq (%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
popq %rax
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: default_track_selector
static void default_track_selector(GtBlock *block, GtStr *result,
                                   GT_UNUSED void *data)
{
  GtGenomeNode *top;
  char *basename;
  gt_assert(block && result);
  gt_str_reset(result);
  top = (GtGenomeNode*) gt_block_get_top_level_feature(block);
  /* we take the basename of the filename to have nicer output in the
     generated graphic. this might lead to ``collapsed'' tracks, if two files
     with different paths have the same basename. */
  basename = gt_basename(gt_genome_node_get_filename(top));
  gt_str_append_cstr(result, basename);
  gt_free(basename);
  gt_str_append_char(result, GT_FILENAME_TYPE_SEPARATOR);
  gt_str_append_cstr(result, gt_block_get_type(block));
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x3b9c3
cmpq $0x0, 0x28(%rsp)
jne 0x3b9fb
movq 0x17860e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122692(%rip), %rsi    # 0x15e066
leaq 0x12c0e0(%rip), %rdx    # 0x167abb
leaq 0x12c0e9(%rip), %rcx    # 0x167acb
leaq 0x12bf6e(%rip), %r8     # 0x167957
movl $0x293, %r9d            # imm = 0x293
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3b9fd
movq 0x28(%rsp), %rdi
callq 0x19b70
movq 0x30(%rsp), %rdi
callq 0xb0be0
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0x257c0
movq %rax, %rdi
callq 0x787e0
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x18fb0
movq 0x10(%rsp), %rdi
leaq 0x12bf0f(%rip), %rsi    # 0x167957
movl $0x29b, %edx            # imm = 0x29B
callq 0xdab0
movq 0x28(%rsp), %rdi
movl $0x7c, %esi
callq 0x194d0
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0xb10f0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x18fb0
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_get_blocks
GtHashmap* gt_diagram_get_blocks(GtDiagram *diagram, GtError *err)
{
  GtHashmap *ret;
  int had_err = 0;
  gt_assert(diagram);
  gt_rwlock_wrlock(diagram->lock);
  had_err = gt_diagram_build((GtDiagram*) diagram, err);
  if (had_err)
    ret = NULL;
  else
    ret = diagram->blocks;
  gt_rwlock_unlock(diagram->lock);
  return ret;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x3bae6
movq 0x178523(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1225a7(%rip), %rsi    # 0x15e066
leaq 0x13ffaf(%rip), %rdx    # 0x17ba75
leaq 0x12bf66(%rip), %rcx    # 0x167a33
leaq 0x12be83(%rip), %r8     # 0x167957
movl $0x38a, %r9d            # imm = 0x38A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3bae8
movq 0x20(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c100
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x3bb40
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
je 0x3bb1b
movq $0x0, 0x10(%rsp)
jmp 0x3bb28
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_get_custom_tracks
GtArray* gt_diagram_get_custom_tracks(const GtDiagram *diagram)
{
  GtArray *ret;
  gt_assert(diagram);
  gt_rwlock_rdlock(diagram->lock);
  ret = diagram->custom_tracks;
  gt_rwlock_unlock(diagram->lock);
  return ret;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x3bd69
movq 0x1782a0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122324(%rip), %rsi    # 0x15e066
leaq 0x13fd2c(%rip), %rdx    # 0x17ba75
leaq 0x12bcf9(%rip), %rcx    # 0x167a49
leaq 0x12bc00(%rip), %r8     # 0x167957
movl $0x398, %r9d            # imm = 0x398
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3bd6b
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c060
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_add_custom_track
void gt_diagram_add_custom_track(GtDiagram *diagram, GtCustomTrack* ctrack)
{
  gt_assert(diagram && ctrack);
  gt_rwlock_wrlock(diagram->lock);
  gt_array_add(diagram->custom_tracks, ctrack);
  gt_rwlock_unlock(diagram->lock);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x3bdbe
cmpq $0x0, 0x8(%rsp)
jne 0x3bdf6
movq 0x178213(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x122297(%rip), %rsi    # 0x15e066
leaq 0x12bc90(%rip), %rdx    # 0x167a66
leaq 0x12bc9b(%rip), %rcx    # 0x167a78
leaq 0x12bb73(%rip), %r8     # 0x167957
movl $0x3a1, %r9d            # imm = 0x3A1
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3bdf8
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c100
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rdi
leaq 0x8(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_unit_test_sketch_func
void* gt_diagram_unit_test_sketch_func(void *data)
{
  int had_err = 0;
  GtLayout *l = NULL;
  GtUword height;
  GtCanvas *c = NULL;
  GtDiagramTestShared *sh = (GtDiagramTestShared*) data;

  l = gt_layout_new(sh->d, 1000, sh->sty, sh->err);
  if (!l)
    had_err = -1;
  if (!had_err)
    had_err = gt_layout_get_height(l, &height, sh->err);
  if (!had_err) {
    c = gt_canvas_cairo_file_new(sh->sty, GT_GRAPHICS_PNG, 1000,
                                 height, NULL, sh->err);
    if (!c)
      had_err = -1;
  }
  if (!had_err) {
    had_err = gt_layout_sketch(l, c, sh->err);
  }
  if (had_err)
    sh->errstatus = 1;
  gt_layout_delete(l);
  gt_canvas_delete(c);
  return NULL;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movl $0x0, 0x2c(%rsp)
movq $0x0, 0x20(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdx
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x456a0
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x3bea7
movl $0xffffffff, 0x2c(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x2c(%rsp)
jne 0x3beca
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdx
leaq 0x18(%rsp), %rsi
callq 0x463e0
movl %eax, 0x2c(%rsp)
cmpl $0x0, 0x2c(%rsp)
jne 0x3bf13
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %rax
movq 0x8(%rax), %r9
movl $0x1, %esi
movl $0x3e8, %edx            # imm = 0x3E8
xorl %eax, %eax
movl %eax, %r8d
callq 0x3b1b0
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x3bf11
movl $0xffffffff, 0x2c(%rsp) # imm = 0xFFFFFFFF
jmp 0x3bf13
cmpl $0x0, 0x2c(%rsp)
jne 0x3bf36
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdx
callq 0x45c30
movl %eax, 0x2c(%rsp)
cmpl $0x0, 0x2c(%rsp)
je 0x3bf49
movq 0x8(%rsp), %rax
movl $0x1, 0x20(%rax)
movq 0x20(%rsp), %rdi
callq 0x45b80
movq 0x10(%rsp), %rdi
callq 0x3a6c0
xorl %eax, %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_unit_test
int gt_diagram_unit_test(GtError *err)
{
  int had_err = 0;
  GtGenomeNode *gn;
  GtDiagramTestShared sh;
  GtRange testrng = {100, 10000};
  gt_error_check(err);

  gn = gt_feature_node_new_standard_gene();
  sh.fi = gt_feature_index_memory_new();
  sh.sty = gt_style_new(err);
  sh.err = err;
  sh.errstatus = 0;
  gt_feature_index_add_feature_node(sh.fi, gt_feature_node_cast(gn), err);
  gt_genome_node_delete(gn);
  sh.d = gt_diagram_new(sh.fi, "ctg123", &testrng, sh.sty, err);

  /* removed the multithreading test for now until it is fixed */
  gt_diagram_unit_test_sketch_func(&sh);
  gt_ensure(sh.errstatus == 0);

  gt_style_delete(sh.sty);
  gt_diagram_delete(sh.d);
  gt_feature_index_delete(sh.fi);

  return had_err;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movl $0x0, 0x4c(%rsp)
movq 0x12bdf0(%rip), %rax    # 0x167d78
movq %rax, 0x8(%rsp)
movq 0x12bdec(%rip), %rax    # 0x167d80
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x50(%rsp)
je 0x3bfe9
movq 0x50(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3bfb1
jmp 0x3bfe9
movq 0x178020(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1220a4(%rip), %rsi    # 0x15e066
leaq 0x12267f(%rip), %rdx    # 0x15e648
leaq 0x12bac4(%rip), %rcx    # 0x167a94
leaq 0x12b980(%rip), %r8     # 0x167957
movl $0x3d2, %r9d            # imm = 0x3D2
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3bfeb
callq 0x20a70
movq %rax, 0x40(%rsp)
callq 0x1f9d0
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rdi
callq 0x47850
movq %rax, 0x30(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movl $0x0, 0x38(%rsp)
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq 0x40(%rsp), %rdi
callq 0x20750
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x50(%rsp), %rdx
callq 0x1d3d0
movq 0x40(%rsp), %rdi
callq 0x26eb0
movq 0x18(%rsp), %rdi
movq 0x30(%rsp), %rcx
movq 0x50(%rsp), %r8
leaq 0x125c1b(%rip), %rsi    # 0x161c7f
leaq 0x8(%rsp), %rdx
callq 0x3b4e0
movq %rax, 0x28(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x3be40
cmpl $0x0, 0x4c(%rsp)
jne 0x3c0c3
cmpl $0x0, 0x38(%rsp)
je 0x3c0c1
movq 0x50(%rsp), %rdi
leaq 0x1240e0(%rip), %rsi    # 0x160177
leaq 0x12ba0b(%rip), %rdx    # 0x167aa9
leaq 0x12b9ef(%rip), %rcx    # 0x167a94
leaq 0x12b8ab(%rip), %r8     # 0x167957
movl $0x3df, %r9d            # imm = 0x3DF
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x3c0c3
jmp 0x3c0c5
movq 0x30(%rsp), %rdi
callq 0x4a850
movq 0x28(%rsp), %rdi
callq 0x3c0f0
movq 0x18(%rsp), %rdi
callq 0x1d200
movl 0x4c(%rsp), %eax
addq $0x58, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: gt_diagram_delete
void gt_diagram_delete(GtDiagram *diagram)
{
  if (!diagram) return;
  gt_rwlock_wrlock(diagram->lock);
  gt_array_delete(diagram->features);
  if (diagram->blocks)
    gt_hashmap_delete(diagram->blocks);
  gt_hashmap_delete(diagram->nodeinfo);
  gt_hashmap_delete(diagram->collapsingtypes);
  gt_hashmap_delete(diagram->groupedtypes);
  gt_hashmap_delete(diagram->caption_display_status);
  gt_array_delete(diagram->custom_tracks);
  gt_rwlock_unlock(diagram->lock);
  gt_rwlock_delete(diagram->lock);
  gt_free(diagram);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x3c101
jmp 0x3c1a1
movq (%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c100
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x770a0
movq (%rsp), %rax
cmpq $0x0, (%rax)
je 0x3c131
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x770a0
movq (%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1c1a0
movq (%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1bfe0
movq (%rsp), %rdi
leaq 0x12b7c0(%rip), %rsi    # 0x167957
movl $0x3f6, %edx            # imm = 0x3F6
callq 0xdab0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: traverse_genome_nodes
static int traverse_genome_nodes(GtFeatureNode *fn, void *nti)
{
  NodeTraverseInfo* gt_genome_node_info;
  int had_err = 0;
  gt_assert(nti);
  gt_genome_node_info = (NodeTraverseInfo*) nti;
  gt_genome_node_info->parent = fn;
  /* handle root nodes */
  had_err = process_node(gt_genome_node_info->diagram, fn, NULL,
                         gt_genome_node_info->err);
  if (!had_err && gt_feature_node_has_children(fn)) {
    had_err = gt_feature_node_traverse_direct_children(fn,
                                                       gt_genome_node_info,
                                                       visit_child,
                                                       gt_genome_node_info
                                                       ->err);
  }
  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0x3c206
movq 0x177e03(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x121e87(%rip), %rsi    # 0x15e066
leaq 0x12b90d(%rip), %rdx    # 0x167af3
leaq 0x12b90a(%rip), %rcx    # 0x167af7
leaq 0x12b763(%rip), %r8     # 0x167957
movl $0x2e7, %r9d            # imm = 0x2E7
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3c208
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
xorl %eax, %eax
movl %eax, %edx
callq 0x3c6f0
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x3c27d
movq 0x20(%rsp), %rdi
callq 0x21140
testb $0x1, %al
jne 0x3c25a
jmp 0x3c27d
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
leaq 0xc6c(%rip), %rdx       # 0x3cee0
callq 0x23790
movl %eax, 0xc(%rsp)
movl 0xc(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: blocklist_delete
static void blocklist_delete(void *value)
{
  GtUword i;
  GtArray *a;
  if (!value) return;
  a = (GtArray*) value;
  for (i = 0; i < gt_array_size(a); i++)
    gt_block_delete(*(GtBlock**) gt_array_get(a, i));
  gt_array_delete(a);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x3c2a3
jmp 0x3c308
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x3c2fe
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x75c80
movq (%rax), %rdi
callq 0xb21b0
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x3c2b6
movq 0x10(%rsp), %rdi
callq 0x770a0
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: visit_child
static int visit_child(GtFeatureNode* fn, void *nti, GtError *err)
{
  NodeTraverseInfo* gt_genome_node_info;
  int had_err = 0;
  gt_genome_node_info = (NodeTraverseInfo*) nti;
  gt_error_check(err);

  if (gt_feature_node_has_children(fn))
  {
    GtFeatureNode *oldparent = gt_genome_node_info->parent;
    had_err = process_node(gt_genome_node_info->diagram, fn,
                           gt_genome_node_info->parent, err);
    if (!had_err) {
      gt_genome_node_info->parent = fn;
      had_err = gt_feature_node_traverse_direct_children(fn,
                                                         gt_genome_node_info,
                                                         visit_child, err);
    }
    if (!had_err) {
      gt_genome_node_info->parent = oldparent;
    }
  }
  else
  {
    had_err = process_node(gt_genome_node_info->diagram, fn,
                           gt_genome_node_info->parent, err);
  }
  return had_err;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x14(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x3cf55
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3cf1d
jmp 0x3cf55
movq 0x1770b4(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x121138(%rip), %rsi    # 0x15e066
leaq 0x121713(%rip), %rdx    # 0x15e648
leaq 0x12ae12(%rip), %rcx    # 0x167d4e
leaq 0x12aa14(%rip), %r8     # 0x167957
movl $0x275, %r9d            # imm = 0x275
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3cf57
movq 0x30(%rsp), %rdi
callq 0x21140
testb $0x1, %al
jne 0x3cf67
jmp 0x3cfe1
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x18(%rsp), %rax
movq (%rax), %rdx
movq 0x20(%rsp), %rcx
callq 0x3c6f0
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
jne 0x3cfcb
movq 0x30(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rcx
leaq -0xe2(%rip), %rdx       # 0x3cee0
callq 0x23790
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
jne 0x3cfdf
movq 0x8(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3d005
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x18(%rsp), %rax
movq (%rax), %rdx
movq 0x20(%rsp), %rcx
callq 0x3c6f0
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: nodeinfo_get
static NodeInfoElement* nodeinfo_get(GtDiagram *d, GtFeatureNode *node)
{
  NodeInfoElement *ni;
  gt_assert(d && node);
  if (!(ni = gt_hashmap_get(d->nodeinfo, node))) {
    ni = gt_calloc(1, sizeof (NodeInfoElement));
    ni->type_index  = gt_hashmap_new(GT_HASH_STRING, NULL, gt_free_func);
    ni->types       = gt_str_array_new();
    gt_hashmap_add(d->nodeinfo, node, ni);
  }
  return ni;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x3d90e
cmpq $0x0, 0x8(%rsp)
jne 0x3d946
movq 0x1766c3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x120747(%rip), %rsi    # 0x15e066
leaq 0x12a1e7(%rip), %rdx    # 0x167b0d
leaq 0x12a2ac(%rip), %rcx    # 0x167bd9
leaq 0x12a023(%rip), %r8     # 0x167957
movl $0x6f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3d948
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x86470
movq %rax, (%rsp)
cmpq $0x0, %rax
jne 0x3d9cb
movl $0x1, %edi
movl $0x18, %esi
leaq 0x129fe1(%rip), %rdx    # 0x167957
movl $0x71, %ecx
callq 0xd5b0
movq %rax, (%rsp)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0x2fd74(%rip), %rdx    # 0xdc20
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
callq 0x1b020
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq 0x86510
movq (%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: nodeinfo_find_block
static GtBlock* nodeinfo_find_block(NodeInfoElement* ni, const char *gft,
                                    GtFeatureNode *fn)
{
  PerTypeInfo *type_struc = NULL;
  GtBlockTuple *bt = NULL;
  gt_assert(ni);
  if (!(type_struc = gt_hashmap_get(ni->type_index, gft)))
    return NULL;
  if (!(bt = gt_hashmap_get(type_struc->rep_index, fn)))
    return NULL;
  gt_assert(bt);
  return bt->block;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
movq $0x0, 0x8(%rsp)
cmpq $0x0, 0x28(%rsp)
jne 0x3da45
movq 0x1765c4(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x120648(%rip), %rsi    # 0x15e066
leaq 0x124f40(%rip), %rdx    # 0x162965
leaq 0x12a1ba(%rip), %rcx    # 0x167be6
leaq 0x129f24(%rip), %r8     # 0x167957
movl $0x7e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3da47
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x86470
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
jne 0x3da70
movq $0x0, 0x30(%rsp)
jmp 0x3daea
movq 0x10(%rsp), %rax
movq (%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x86470
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
jne 0x3da98
movq $0x0, 0x30(%rsp)
jmp 0x3daea
jmp 0x3da9a
cmpq $0x0, 0x8(%rsp)
jne 0x3dada
movq 0x17652f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1205b3(%rip), %rsi    # 0x15e066
leaq 0x12a140(%rip), %rdx    # 0x167bfa
leaq 0x12a125(%rip), %rcx    # 0x167be6
leaq 0x129e8f(%rip), %r8     # 0x167957
movl $0x83, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3dadc
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: nodeinfo_add_block
static void nodeinfo_add_block(NodeInfoElement *ni, const char *gft,
                               GtFeatureNode *rep, GtBlock *block)
{
  GtBlockTuple *bt;
  PerTypeInfo *type_struc = NULL;
  gt_assert(ni);
  bt = blocktuple_new(gft, rep, block);
  if (!(ni->type_index))
  {
    ni->type_index = gt_hashmap_new(GT_HASH_STRING, NULL, gt_free_func);
  }
  if (!(type_struc = gt_hashmap_get(ni->type_index, gft)))
  {
    type_struc = gt_calloc(1, sizeof (PerTypeInfo));
    type_struc->rep_index = gt_hashmap_new(GT_HASH_DIRECT, NULL, NULL);
    type_struc->blocktuples = gt_array_new(sizeof (GtBlockTuple*));
    gt_hashmap_add(ni->type_index, (char*) gft, type_struc);
    gt_str_array_add_cstr(ni->types, gft);
  }
  gt_hashmap_add(type_struc->rep_index, rep, bt);
  if (rep != GT_UNDEF_REPR)
    type_struc->must_merge = true;
  gt_array_add(type_struc->blocktuples, bt);
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq $0x0, 0x8(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x3db61
movq 0x1764a8(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12052c(%rip), %rsi    # 0x15e066
leaq 0x124e24(%rip), %rdx    # 0x162965
leaq 0x12a0b5(%rip), %rcx    # 0x167bfd
leaq 0x129e08(%rip), %r8     # 0x167957
movl $0x8c, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3db63
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x3dc90
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x3dba9
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0x2ff78(%rip), %rdx    # 0xdc20
callq 0x86190
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x86470
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
jne 0x3dc41
movl $0x1, %edi
movl $0x18, %esi
leaq 0x129d7f(%rip), %rdx    # 0x167957
movl $0x94, %ecx
callq 0xd5b0
movq %rax, 0x8(%rsp)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x86190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movl $0x8, %edi
callq 0x75ab0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x28(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq 0x86510
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x1b180
movq 0x8(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x86510
movq $-0x1, %rax
cmpq %rax, 0x20(%rsp)
je 0x3dc6f
movq 0x8(%rsp), %rax
movb $0x1, 0x10(%rax)
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x10(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: blocktuple_new
static GtBlockTuple* blocktuple_new(const char *gft, GtFeatureNode *rep,
                                    GtBlock *block)
{
  GtBlockTuple *bt;
  gt_assert(block);
  bt = gt_calloc(1, sizeof (GtBlockTuple));
  bt->gft = gft;
  bt->rep = rep;
  bt->block = block;
  return bt;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x3dce3
movq 0x176326(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1203aa(%rip), %rsi    # 0x15e066
leaq 0x1371cc(%rip), %rdx    # 0x174e8f
leaq 0x129f46(%rip), %rcx    # 0x167c10
leaq 0x129c86(%rip), %r8     # 0x167957
movl $0x64, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3dce5
movl $0x1, %edi
movl $0x18, %esi
leaq 0x129c61(%rip), %rdx    # 0x167957
movl $0x65, %ecx
callq 0xd5b0
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/diagram.c
// Function: get_node_name_or_id
static const char* get_node_name_or_id(GtFeatureNode *gn)
{
  const char *ret;
  if (!gn) return NULL;
  if (!(ret = gt_feature_node_get_attribute(gn, GT_GFF_NAME))) {
    if (!(ret = gt_feature_node_get_attribute(gn, GT_GFF_ID)))
      ret = NULL;
  }
  return ret;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x3e05c
movq $0x0, 0x10(%rsp)
jmp 0x3e0a5
movq 0x8(%rsp), %rdi
leaq 0x1268f3(%rip), %rsi    # 0x16495b
callq 0x1fde0
movq %rax, (%rsp)
cmpq $0x0, %rax
jne 0x3e09c
movq 0x8(%rsp), %rdi
leaq 0x1267bd(%rip), %rsi    # 0x164840
callq 0x1fde0
movq %rax, (%rsp)
cmpq $0x0, %rax
jne 0x3e09a
movq $0x0, (%rsp)
jmp 0x3e09c
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nop