// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/annotationsketch/line.c
// Function: gt_line_unit_test
int gt_line_unit_test(GtError *err)
{
  GtRange r1, r2, r3;
  GtArray* blocks;
  GtStr *seqid1;
  int had_err = 0;
  GtGenomeNode *parent, *gn1, *gn2, *gn3;
  double height;
  GtLine *l1;
  GtBlock *b1, *b2;
  GtStyle *sty = NULL;
  const char* foo = "foo";
  const char* bar = "bar";
  const char* blub = "blub";
  gt_error_check(err);

  r1.start = 10;
  r1.end = 40;
  r2.start = 51;
  r2.end = 80;
  r3.start = 0;
  r3.end = 7;

  seqid1 = gt_str_new_cstr("test1");

  parent = gt_feature_node_new(seqid1, gt_ft_gene, r1.start, r2.end,
                               GT_STRAND_FORWARD);
  gn1 = gt_feature_node_new(seqid1, gt_ft_exon, r1.start, r1.end,
                            GT_STRAND_FORWARD);
  gn2 = gt_feature_node_new(seqid1, gt_ft_exon, r2.start, r2.end,
                            GT_STRAND_FORWARD);
  gn3 = gt_feature_node_new(seqid1, gt_ft_TF_binding_site, r3.start, r3.end,
                            GT_STRAND_FORWARD);

  gt_feature_node_add_child((GtFeatureNode*) parent, (GtFeatureNode*) gn1);
  gt_feature_node_add_child((GtFeatureNode*) parent, (GtFeatureNode*) gn2);

  l1 = gt_line_new();

  gt_feature_node_add_attribute((GtFeatureNode*) parent, GT_GFF_NAME, foo);
  gt_feature_node_add_attribute((GtFeatureNode*) gn1, GT_GFF_NAME, bar);
  gt_feature_node_add_attribute((GtFeatureNode*) gn2, GT_GFF_NAME, bar);
  gt_feature_node_add_attribute((GtFeatureNode*) gn3, GT_GFF_NAME, blub);

  b1 = gt_block_new();
  b2 = gt_block_new();

  gt_block_insert_element(b1, (GtFeatureNode*) parent);
  gt_block_insert_element(b1, (GtFeatureNode*) gn1);
  gt_block_insert_element(b1, (GtFeatureNode*) gn2);
  gt_block_insert_element(b2, (GtFeatureNode*) gn3);
  gt_block_set_range(b1, r1);
  gt_block_set_range(b2, r2);

  /* test gt_line_insert_block */
  gt_ensure((0 == gt_array_size(gt_line_get_blocks(l1))));
  gt_line_insert_block(l1, b1);
  gt_ensure((1 == gt_array_size(gt_line_get_blocks(l1))));
  gt_line_insert_block(l1, b2);
  gt_ensure((2 == gt_array_size(gt_line_get_blocks(l1))));

  /* test gt_line_get_blocks */
  blocks = gt_line_get_blocks(l1);
  gt_ensure((2 == gt_array_size(blocks)));

  /* test gt_line_get_height() */
  if (!had_err)
  {
    sty = gt_style_new(err);
    gt_ensure(sty && !gt_error_is_set(err));
    gt_ensure(gt_line_get_height(l1, &height, sty, err) == 0);
    gt_ensure(height == BAR_HEIGHT_DEFAULT);
    gt_ensure(!gt_error_is_set(err));
    gt_style_set_num(sty, "exon", "bar_height", 42);
    gt_ensure(gt_line_get_height(l1, &height, sty, err) == 0);
    gt_ensure(height == 42);
    gt_ensure(!gt_error_is_set(err));
    gt_style_set_num(sty, "gene", "bar_height", 23);
    gt_ensure(gt_line_get_height(l1, &height, sty, err) == 0);
    gt_ensure(height == 42);
    gt_ensure(!gt_error_is_set(err));
    gt_style_unset(sty, "exon", "bar_height");
    gt_ensure(gt_line_get_height(l1, &height, sty, err) == 0);
    gt_ensure(height == 23);
    gt_ensure(!gt_error_is_set(err));
    gt_style_unset(sty, "gene", "bar_height");
    gt_style_set_num(sty, "format", "bar_height", 99);
    gt_ensure(gt_line_get_height(l1, &height, sty, err) == 0);
    gt_ensure(height == 99);
    gt_ensure(!gt_error_is_set(err));
  }

  gt_str_delete(seqid1);
  gt_line_delete(l1);
  gt_style_delete(sty);
  gt_genome_node_delete(parent);
  gt_genome_node_delete(gn3);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
testq %rdi, %rdi
je 0x8e7f5
movq %rbx, %rdi
callq 0x34fea
testb %al, %al
jne 0x8f00b
movq %rbx, 0x8(%rsp)
leaq 0x682fa(%rip), %rdi     # 0xf6afb
callq 0x3b785
movq %rax, %r12
leaq 0x7deb0(%rip), %rsi     # 0x10c6c0
movl $0xa, %edx
movl $0x50, %ecx
movq %rax, %rdi
xorl %r8d, %r8d
callq 0x3f280
movq %rax, %r13
leaq 0x6e0c3(%rip), %rbx     # 0xfc8f2
movl $0xa, %edx
movl $0x28, %ecx
movq %r12, %rdi
movq %rbx, %rsi
xorl %r8d, %r8d
callq 0x3f280
movq %rax, %r14
movl $0x33, %edx
movl $0x50, %ecx
movq %r12, %rdi
movq %rbx, %rsi
xorl %r8d, %r8d
callq 0x3f280
movq %rax, %r15
leaq 0x563ae(%rip), %rsi     # 0xe4c1a
movl $0x7, %ecx
movq %r12, 0x30(%rsp)
movq %r12, %rdi
xorl %edx, %edx
xorl %r8d, %r8d
callq 0x3f280
movq %rax, 0x20(%rsp)
movq %r13, %rdi
movq %r14, %rsi
movq %r14, %r12
movq %r14, 0x18(%rsp)
callq 0x3f6eb
movq %r13, %rdi
movq %r15, %rsi
callq 0x3f6eb
leaq 0x681a1(%rip), %rdx     # 0xf6a4e
movl $0x1, %edi
movl $0x10, %esi
movl $0x26, %ecx
callq 0x359a6
movq %rax, %r14
movl $0x8, %edi
callq 0x6ef7c
movq %rax, 0x8(%r14)
movb $0x0, (%r14)
leaq 0x58f61(%rip), %rbx     # 0xe783e
leaq 0x632fd(%rip), %rdx     # 0xf1be1
movq %r13, %rdi
movq %rbx, %rsi
callq 0x40229
leaq 0x62981(%rip), %rbp     # 0xf1277
movq %r12, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x40229
movq %r15, %rdi
movq %r15, %r12
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x40229
leaq 0x681c8(%rip), %rdx     # 0xf6ae4
movq 0x20(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x40229
callq 0x8a805
movq %rax, %rbx
callq 0x8a805
movq %rax, %rbp
movq %rbx, %rdi
movq %r13, 0x28(%rsp)
movq %r13, %rsi
callq 0x8a8b1
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x8a8b1
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8a8b1
movq %rbp, %rdi
movq %r15, %rsi
callq 0x8a8b1
movl $0xa, %esi
movl $0x28, %edx
movq %rbx, %rdi
callq 0x8aae4
movl $0x33, %esi
movl $0x50, %edx
movq %rbp, %rdi
callq 0x8aae4
movq %r14, %rdi
callq 0x8e639
movq %rax, %rdi
callq 0x6f310
testq %rax, %rax
je 0x8e9e6
leaq 0x547aa(%rip), %rsi     # 0xe3159
leaq 0x6814b(%rip), %rdx     # 0xf6b01
leaq 0x6812c(%rip), %rcx     # 0xf6ae9
leaq 0x6808a(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xa2, %r9d
xorl %eax, %eax
callq 0x34f1f
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8e5e1
jmp 0x8eac7
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8e5e1
movq %r14, %rdi
callq 0x8e639
movq %rax, %rdi
callq 0x6f310
cmpq $0x1, %rax
jne 0x8ea99
movq %r14, %rdi
movq %rbp, %rsi
callq 0x8e5e1
movq %r14, %rdi
callq 0x8e639
movq %rax, %rdi
callq 0x6f310
cmpq $0x2, %rax
movq 0x8(%rsp), %rbx
jne 0x8eb1e
movq %r14, %rdi
callq 0x8e639
movq %rax, %rdi
callq 0x6f310
cmpq $0x2, %rax
jne 0x8eb4c
movq %rbx, %rdi
callq 0x52810
movq %rax, %rbp
testq %rax, %rax
je 0x8ea6f
movq %rbx, %rdi
callq 0x34fea
testb %al, %al
je 0x8eb7f
leaq 0x546e3(%rip), %rsi     # 0xe3159
leaq 0x68128(%rip), %rdx     # 0xf6ba5
leaq 0x68065(%rip), %rcx     # 0xf6ae9
leaq 0x67fc3(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb0, %r9d
jmp 0x8ebbf
leaq 0x546b9(%rip), %rsi     # 0xe3159
leaq 0x68087(%rip), %rdx     # 0xf6b2e
leaq 0x6803b(%rip), %rcx     # 0xf6ae9
leaq 0x67f99(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xa4, %r9d
xorl %eax, %eax
callq 0x34f1f
movq %r14, %rdi
movq %rbp, %rsi
callq 0x8e5e1
movq %r14, %rdi
callq 0x8e639
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %ebp, %ebp
movq 0x30(%rsp), %rdi
callq 0x3c87b
movq %r14, %rdi
callq 0x8f03c
movq %rbp, %rdi
callq 0x53f50
movq 0x28(%rsp), %rdi
callq 0x4210c
movq %r15, %rdi
callq 0x4210c
movl %ebx, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x54634(%rip), %rsi     # 0xe3159
leaq 0x6802f(%rip), %rdx     # 0xf6b5b
leaq 0x67fb6(%rip), %rcx     # 0xf6ae9
leaq 0x67f14(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xa6, %r9d
xorl %eax, %eax
callq 0x34f1f
jmp 0x8ead2
leaq 0x54606(%rip), %rsi     # 0xe3159
leaq 0x6802e(%rip), %rdx     # 0xf6b88
leaq 0x67f88(%rip), %rcx     # 0xf6ae9
leaq 0x67ee6(%rip), %r8      # 0xf6a4e
xorl %ebp, %ebp
movq %rbx, %rdi
movl $0xaa, %r9d
xorl %eax, %eax
callq 0x34f1f
jmp 0x8ec4b
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x8e6cf
testl %eax, %eax
je 0x8ec55
leaq 0x545b8(%rip), %rsi     # 0xe3159
leaq 0x6801a(%rip), %rdx     # 0xf6bc2
leaq 0x67f3a(%rip), %rcx     # 0xf6ae9
leaq 0x67e98(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb1, %r9d
xorl %eax, %eax
callq 0x34f1f
leaq 0x6dd25(%rip), %rsi     # 0xfc8f2
leaq 0x5e42d(%rip), %rdx     # 0xed001
movsd 0x5e0dc(%rip), %xmm0    # 0xeccb8
movq %rbp, %rdi
callq 0x53956
leaq 0x7dad5(%rip), %rsi     # 0x10c6c0
leaq 0x5e40f(%rip), %rdx     # 0xed001
movsd 0x5e0c6(%rip), %xmm0    # 0xeccc0
movq %rbp, %rdi
callq 0x53956
leaq 0x6dce9(%rip), %rsi     # 0xfc8f2
leaq 0x5e3f1(%rip), %rdx     # 0xed001
movq %rbp, %rdi
callq 0x53ca3
leaq 0x7daa1(%rip), %rsi     # 0x10c6c0
leaq 0x5e3db(%rip), %rbx     # 0xed001
movq %rbp, %rdi
movq %rbx, %rdx
callq 0x53ca3
leaq 0x5255e(%rip), %rsi     # 0xe1196
movsd 0x5e088(%rip), %xmm0    # 0xeccc8
movq %rbp, %rdi
movq %rbx, %rdx
callq 0x53956
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x8eae1
movsd 0x10(%rsp), %xmm0
ucomisd 0x5e04d(%rip), %xmm0    # 0xeccb0
jne 0x8ec9d
jp 0x8ec9d
movq %rbx, %rdi
callq 0x34fea
testb %al, %al
je 0x8ecc7
leaq 0x544df(%rip), %rsi     # 0xe3159
leaq 0x5d24d(%rip), %rdx     # 0xebece
leaq 0x67e61(%rip), %rcx     # 0xf6ae9
leaq 0x67dbf(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb3, %r9d
jmp 0x8ebbf
leaq 0x544b5(%rip), %rsi     # 0xe3159
leaq 0x67558(%rip), %rdx     # 0xf6203
leaq 0x67e37(%rip), %rcx     # 0xf6ae9
leaq 0x67d95(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb2, %r9d
jmp 0x8ebbf
leaq 0x6dc24(%rip), %rsi     # 0xfc8f2
leaq 0x5e32c(%rip), %rdx     # 0xed001
movsd 0x5dfdb(%rip), %xmm0    # 0xeccb8
movq %rbp, %rdi
callq 0x53956
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x8e6cf
testl %eax, %eax
je 0x8ed2d
leaq 0x54456(%rip), %rsi     # 0xe3159
leaq 0x67eb8(%rip), %rdx     # 0xf6bc2
leaq 0x67dd8(%rip), %rcx     # 0xf6ae9
leaq 0x67d36(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb5, %r9d
xorl %eax, %eax
callq 0x34f1f
jmp 0x8ebe4
movsd 0x10(%rsp), %xmm0
ucomisd 0x5df7d(%rip), %xmm0    # 0xeccb8
jne 0x8ed72
jp 0x8ed72
movq %rbx, %rdi
callq 0x34fea
testb %al, %al
je 0x8ed99
leaq 0x54407(%rip), %rsi     # 0xe3159
leaq 0x5d175(%rip), %rdx     # 0xebece
leaq 0x67d89(%rip), %rcx     # 0xf6ae9
leaq 0x67ce7(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb7, %r9d
jmp 0x8ed21
leaq 0x543e0(%rip), %rsi     # 0xe3159
leaq 0x674a0(%rip), %rdx     # 0xf6220
leaq 0x67d62(%rip), %rcx     # 0xf6ae9
leaq 0x67cc0(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb6, %r9d
jmp 0x8ed21
leaq 0x7d920(%rip), %rsi     # 0x10c6c0
leaq 0x5e25a(%rip), %rdx     # 0xed001
movsd 0x5df11(%rip), %xmm0    # 0xeccc0
movq %rbp, %rdi
callq 0x53956
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x8e6cf
testl %eax, %eax
je 0x8edff
leaq 0x54384(%rip), %rsi     # 0xe3159
leaq 0x67de6(%rip), %rdx     # 0xf6bc2
leaq 0x67d06(%rip), %rcx     # 0xf6ae9
leaq 0x67c64(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xb9, %r9d
xorl %eax, %eax
callq 0x34f1f
jmp 0x8ec02
movsd 0x10(%rsp), %xmm0
ucomisd 0x5deab(%rip), %xmm0    # 0xeccb8
jne 0x8ee46
jp 0x8ee46
movq %rbx, %rdi
callq 0x34fea
testb %al, %al
je 0x8ee6d
leaq 0x54335(%rip), %rsi     # 0xe3159
leaq 0x5d0a3(%rip), %rdx     # 0xebece
leaq 0x67cb7(%rip), %rcx     # 0xf6ae9
leaq 0x67c15(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xbb, %r9d
jmp 0x8edf3
leaq 0x5430c(%rip), %rsi     # 0xe3159
leaq 0x673cc(%rip), %rdx     # 0xf6220
leaq 0x67c8e(%rip), %rcx     # 0xf6ae9
leaq 0x67bec(%rip), %r8      # 0xf6a4e
movq %rbx, %rdi
movl $0xba, %r9d
jmp 0x8edf3
leaq 0x6da7e(%rip), %rsi     # 0xfc8f2
leaq 0x5e186(%rip), %rdx     # 0xed001
movq %rbp, %rdi
callq 0x53ca3
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbp, %rdx
movq 0x8(%rsp), %rcx
callq 0x8e6cf
testl %eax, %eax
je 0x8eecf
leaq 0x542b6(%rip), %rsi     # 0xe3159
leaq 0x67d18(%rip), %rdx     # 0xf6bc2
leaq 0x67c38(%rip), %rcx     # 0xf6ae9
leaq 0x67b96(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xbd, %r9d
xorl %eax, %eax
callq 0x34f1f
jmp 0x8ec18
movsd 0x10(%rsp), %xmm0
ucomisd 0x5dde3(%rip), %xmm0    # 0xeccc0
jne 0x8ef18
jp 0x8ef18
movq 0x8(%rsp), %rdi
callq 0x34fea
testb %al, %al
je 0x8ef41
leaq 0x54263(%rip), %rsi     # 0xe3159
leaq 0x5cfd1(%rip), %rdx     # 0xebece
leaq 0x67be5(%rip), %rcx     # 0xf6ae9
leaq 0x67b43(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xbf, %r9d
jmp 0x8eec3
leaq 0x5423a(%rip), %rsi     # 0xe3159
leaq 0x67307(%rip), %rdx     # 0xf622d
leaq 0x67bbc(%rip), %rcx     # 0xf6ae9
leaq 0x67b1a(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xbe, %r9d
jmp 0x8eec3
leaq 0x7d778(%rip), %rsi     # 0x10c6c0
leaq 0x5e0b2(%rip), %rbx     # 0xed001
movq %rbp, %rdi
movq %rbx, %rdx
callq 0x53ca3
leaq 0x52235(%rip), %rsi     # 0xe1196
movsd 0x5dd5f(%rip), %xmm0    # 0xeccc8
movq %rbp, %rdi
movq %rbx, %rdx
callq 0x53956
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbp, %rdx
movq 0x8(%rsp), %rcx
callq 0x8e6cf
testl %eax, %eax
je 0x8efb9
leaq 0x541c5(%rip), %rsi     # 0xe3159
leaq 0x67c27(%rip), %rdx     # 0xf6bc2
leaq 0x67b47(%rip), %rcx     # 0xf6ae9
leaq 0x67aa5(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xc2, %r9d
jmp 0x8eb73
movsd 0x10(%rsp), %xmm0
ucomisd 0x5dd01(%rip), %xmm0    # 0xeccc8
jne 0x8f010
jp 0x8f010
movq 0x8(%rsp), %rdi
callq 0x34fea
xorl %ebx, %ebx
testb %al, %al
je 0x8eae1
leaq 0x54173(%rip), %rsi     # 0xe3159
leaq 0x5cee1(%rip), %rdx     # 0xebece
leaq 0x67af5(%rip), %rcx     # 0xf6ae9
leaq 0x67a53(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xc4, %r9d
jmp 0x8eb73
callq 0x21c19
leaq 0x54142(%rip), %rsi     # 0xe3159
leaq 0x67bd3(%rip), %rdx     # 0xf6bf1
leaq 0x67ac4(%rip), %rcx     # 0xf6ae9
leaq 0x67a22(%rip), %r8      # 0xf6a4e
movq 0x8(%rsp), %rdi
movl $0xc3, %r9d
jmp 0x8eb73