// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/examples/sketch_constructed.c
// Function: create_example_features
static GtArray* create_example_features(void)
{
  GtArray *features;
  GtGenomeNode *gene, *exon, *intron; /* features */
  GtStr *seqid; /* holds the sequence id the features refer to */

  /* construct the example features */
  features = gt_array_new(sizeof (GtGenomeNode*));
  seqid = gt_str_new_cstr("chromosome_21");

  /* construct a gene on the forward strand with two exons */
  gene = gt_feature_node_new(seqid, "gene", 100, 900, GT_STRAND_FORWARD);
  exon = gt_feature_node_new(seqid, "exon", 100, 200, GT_STRAND_FORWARD);
  gt_feature_node_add_child((GtFeatureNode*) gene, (GtFeatureNode*) exon);
  intron = gt_feature_node_new(seqid, "intron", 201, 799, GT_STRAND_FORWARD);
  gt_feature_node_add_child((GtFeatureNode*) gene, (GtFeatureNode*) intron);
  exon = gt_feature_node_new(seqid, "exon", 800, 900, GT_STRAND_FORWARD);
  gt_feature_node_add_child((GtFeatureNode*) gene, (GtFeatureNode*) exon);

  /* store forward gene in feature array */
  gt_array_add(features, gene);

  /* construct a single-exon gene on the reverse strand
     (within the intron of the forward strand gene) */
  gene = gt_feature_node_new(seqid, "gene", 400, 600, GT_STRAND_REVERSE);
  exon = gt_feature_node_new(seqid, "exon", 400, 600, GT_STRAND_REVERSE);
  gt_feature_node_add_child((GtFeatureNode*) gene, (GtFeatureNode*) exon);

  /* store reverse gene in feature array */
  gt_array_add(features, gene);

  /* free */
  gt_str_delete(seqid);

  return features;
}

// Assembly:
subq $0x28, %rsp
movl $0x8, %edi
callq 0xc200
movq %rax, 0x20(%rsp)
leaq 0x1521cc(%rip), %rdi    # 0x15e026
callq 0x22350
movq %rax, (%rsp)
movq (%rsp), %rdi
leaq 0x1836a7(%rip), %rsi    # 0x18f515
movl $0x64, %edx
movl $0x384, %ecx            # imm = 0x384
xorl %r8d, %r8d
callq 0x26b20
movq %rax, 0x18(%rsp)
movq (%rsp), %rdi
leaq 0x16dff2(%rip), %rsi    # 0x179e82
movl $0x64, %edx
movl $0xc8, %ecx
xorl %r8d, %r8d
callq 0x26b20
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x27350
movq (%rsp), %rdi
leaq 0x152173(%rip), %rsi    # 0x15e034
movl $0xc9, %edx
movl $0x31f, %ecx            # imm = 0x31F
xorl %r8d, %r8d
callq 0x26b20
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x27350
movq (%rsp), %rdi
leaq 0x16df90(%rip), %rsi    # 0x179e82
movl $0x320, %edx            # imm = 0x320
movl $0x384, %ecx            # imm = 0x384
xorl %r8d, %r8d
callq 0x26b20
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x27350
movq 0x20(%rsp), %rdi
leaq 0x18(%rsp), %rsi
movl $0x8, %edx
callq 0xc970
movq (%rsp), %rdi
leaq 0x1835de(%rip), %rsi    # 0x18f515
movl $0x190, %edx            # imm = 0x190
movl $0x258, %ecx            # imm = 0x258
movl $0x1, %r8d
callq 0x26b20
movq %rax, 0x18(%rsp)
movq (%rsp), %rdi
leaq 0x16df26(%rip), %rsi    # 0x179e82
movl $0x190, %edx            # imm = 0x190
movl $0x258, %ecx            # imm = 0x258
movl $0x1, %r8d
callq 0x26b20
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x27350
movq 0x20(%rsp), %rdi
leaq 0x18(%rsp), %rsi
movl $0x8, %edx
callq 0xc970
movq (%rsp), %rdi
callq 0x243a0
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax)