// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_direct_children_do_not_overlap_generic
bool gt_feature_node_direct_children_do_not_overlap_generic(GtFeatureNode
                                                            *parent,
                                                            GtFeatureNode
                                                            *child)
{
  GtArray *children_ranges;
  GtDlistelem *dlistelem;
  GtFeatureNode *child_fn;
  GtRange range;
  bool rval;

  gt_assert(parent);

  if (!parent->children)
    return true;

  /* get children ranges */
  children_ranges = gt_array_new(sizeof (GtRange));
  gt_assert(parent->children);
  for (dlistelem = gt_dlist_first(parent->children); dlistelem != NULL;
       dlistelem = gt_dlistelem_next(dlistelem)) {
    if (!child ||
        ((child_fn =
            gt_feature_node_try_cast(gt_dlistelem_get_data(dlistelem))) &&
         gt_feature_node_get_type(child) ==
         gt_feature_node_get_type(child_fn))) {
      range = gt_genome_node_get_range((GtGenomeNode*)
                                    gt_dlistelem_get_data(dlistelem));
      gt_array_add(children_ranges, range);
    }
  }

  gt_ranges_sort(children_ranges);
  gt_assert(gt_ranges_are_sorted(children_ranges));
  rval = gt_ranges_do_not_overlap(children_ranges);

  gt_array_delete(children_ranges);

  return rval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
testq %rdi, %rdi
je 0x1b44c
movq %rdi, %r15
cmpq $0x0, 0x70(%rdi)
je 0x1b438
movq %rsi, %r14
pushq $0x10
popq %rdi
callq 0x4b380
movq 0x70(%r15), %rdi
testq %rdi, %rdi
je 0x1b47a
movq %rax, %rbx
callq 0x505e0
movq %rax, %r13
leaq 0x8(%rsp), %r15
pushq $0x10
popq %r12
testq %r13, %r13
je 0x1b40c
testq %r14, %r14
je 0x1b3d7
movq %r13, %rdi
callq 0x506e7
movq %rax, %rdi
callq 0x1b4e0
testq %rax, %rax
je 0x1b3ff
movq 0x40(%r14), %rcx
cmpq 0x40(%rax), %rcx
jne 0x1b3ff
movq %r13, %rdi
callq 0x506e7
movq %rax, %rdi
callq 0x1c3c4
movq %rax, 0x8(%rsp)
movq %rdx, 0x10(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x4b801
movq %r13, %rdi
callq 0x5072a
movq %rax, %r13
jmp 0x1b3ae
movq %rbx, %rdi
callq 0x5db48
movq %rbx, %rdi
callq 0x5dc28
testb %al, %al
je 0x1b4a8
movq %rbx, %rdi
callq 0x5dcc6
movl %eax, %ebp
movq %rbx, %rdi
callq 0x4c19d
jmp 0x1b43b
movb $0x1, %bpl
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x112b65(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xaec09(%rip), %rsi     # 0xca066
leaq 0xc3523(%rip), %rdx     # 0xde987
leaq 0xb313c(%rip), %rcx     # 0xce5a7
leaq 0xb26c6(%rip), %r8      # 0xcdb38
movl $0x4cb, %r9d            # imm = 0x4CB
jmp 0x1b4d4
movq 0x112b37(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xaebdb(%rip), %rsi     # 0xca066
leaq 0xb314c(%rip), %rdx     # 0xce5de
leaq 0xb310e(%rip), %rcx     # 0xce5a7
leaq 0xb2698(%rip), %r8      # 0xcdb38
movl $0x4d2, %r9d            # imm = 0x4D2
jmp 0x1b4d4
movq 0x112b09(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xaebad(%rip), %rsi     # 0xca066
leaq 0xb312f(%rip), %rdx     # 0xce5ef
leaq 0xb30e0(%rip), %rcx     # 0xce5a7
leaq 0xb266a(%rip), %r8      # 0xcdb38
movl $0x4e1, %r9d            # imm = 0x4E1
xorl %eax, %eax
callq 0xb8c0
callq 0xb300