// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index.c
// Function: gt_feature_index_add_gff3file
int gt_feature_index_add_gff3file(GtFeatureIndex *feature_index,
                                  const char *gff3file, GtError *err)
{
  GtNodeStream *gff3_in_stream;
  GtGenomeNode *gn;
  GtArray *tmp;
  int had_err = 0;
  GtUword i;
  gt_error_check(err);
  gt_assert(feature_index && gff3file);
  tmp = gt_array_new(sizeof (GtGenomeNode*));
  gff3_in_stream = gt_gff3_in_stream_new_unsorted(1, &gff3file);
  while (!(had_err = gt_node_stream_next(gff3_in_stream, &gn, err)) && gn)
    gt_array_add(tmp, gn);
  if (!had_err) {
    GtNodeVisitor *feature_visitor = gt_feature_visitor_new(feature_index);
    for (i=0;i<gt_array_size(tmp);i++) {
      gn = *(GtGenomeNode**) gt_array_get(tmp, i);
      /* no need to lock, add_*_node() is synchronized */
      had_err = gt_genome_node_accept(gn, feature_visitor, NULL);
      gt_assert(!had_err); /* cannot happen */
    }
    gt_node_visitor_delete(feature_visitor);
  }
  gt_node_stream_delete(gff3_in_stream);
  for (i=0;i<gt_array_size(tmp);i++)
    gt_genome_node_delete(*(GtGenomeNode**) gt_array_get(tmp, i));
  gt_array_delete(tmp);
  return had_err;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movl $0x0, 0x34(%rsp)
cmpq $0x0, 0x50(%rsp)
je 0x1d5bb
movq 0x50(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x1d583
jmp 0x1d5bb
movq 0x196a4e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x140ad2(%rip), %rsi    # 0x15e066
leaq 0x1410ad(%rip), %rdx    # 0x15e648
leaq 0x143e48(%rip), %rcx    # 0x1613ea
leaq 0x143cec(%rip), %r8     # 0x161295
movl $0xb7, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1d5bd
jmp 0x1d5bf
cmpq $0x0, 0x60(%rsp)
je 0x1d5cf
cmpq $0x0, 0x58(%rsp)
jne 0x1d607
movq 0x196a02(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x140a86(%rip), %rsi    # 0x15e066
leaq 0x143e21(%rip), %rdx    # 0x161408
leaq 0x143dfc(%rip), %rcx    # 0x1613ea
leaq 0x143ca0(%rip), %r8     # 0x161295
movl $0xb8, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1d609
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x38(%rsp)
movl $0x1, %edi
leaq 0x58(%rsp), %rsi
callq 0x278c0
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rdx
leaq 0x40(%rsp), %rsi
callq 0x34790
movl %eax, %ecx
movl %ecx, 0x34(%rsp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0x1f(%rsp)
jne 0x1d65e
cmpq $0x0, 0x40(%rsp)
setne %al
movb %al, 0x1f(%rsp)
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x1d668
jmp 0x1d67e
movq 0x38(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
jmp 0x1d62c
cmpl $0x0, 0x34(%rsp)
jne 0x1d754
movq 0x60(%rsp), %rdi
callq 0x25060
movq %rax, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0x1d74a
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
movq 0x20(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x25cc0
movl %eax, 0x34(%rsp)
cmpl $0x0, 0x34(%rsp)
je 0x1d733
movq 0x1968d6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x14095a(%rip), %rsi    # 0x15e066
leaq 0x1498ab(%rip), %rdx    # 0x166fbe
leaq 0x143cd0(%rip), %rcx    # 0x1613ea
leaq 0x143b74(%rip), %r8     # 0x161295
movl $0xc3, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1d735
jmp 0x1d737
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x1d6a1
movq 0x20(%rsp), %rdi
callq 0x353d0
movq 0x48(%rsp), %rdi
callq 0x346b0
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x1d7af
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x75c80
movq (%rax), %rdi
callq 0x26eb0
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x1d767
movq 0x38(%rsp), %rdi
callq 0x770a0
movl 0x34(%rsp), %eax
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)