// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/range.c
// Function: gt_range_overlap_delta
bool gt_range_overlap_delta(const GtRange *range_a, const GtRange *range_b,
                            GtUword delta)
{
  GtUword range_a_length, range_b_length;
  gt_assert(range_a->start <= range_a->end && range_b->start <= range_b->end);

  range_a_length = range_a->end - range_a->start + 1;
  range_b_length = range_b->end - range_b->start + 1;

  if (range_a_length < delta || range_b_length < delta) {
    /* no overlap of delta possible */
    return false;
  }

  if (gt_range_overlap(range_a, range_b)) {
    if (range_a->start <= range_b->start) {
      if (range_a->end >= range_b->end) {
        /* ----A----
            ---B---  */
        if (range_b_length >= delta)
          return true;
      }
      else { /* range_a->end < range_b->end */
        /* ----A----
            ----B---- */
        if (range_a->end - range_b->start + 1 >= delta)
          return true;
      }
    }
    else { /* range_a->start > range_b->start */
      if (range_a->end <= range_b->end) {
        /*  ---A---
           ----B---- */
        if (range_a_length >= delta)
          return true;
      }
      else { /* range_a->end > range_b->end */
        /*  ----A----
           ----B----  */
        if (range_b->end - range_a->start + 1 >= delta)
          return true;
      }
    }
  }

  return false;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x8(%rcx), %rax
ja 0x93d29
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jbe 0x93d61
movq 0x1202a8(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xca32c(%rip), %rsi     # 0x15e066
leaq 0xdc278(%rip), %rdx     # 0x16ffb9
leaq 0xdc333(%rip), %rcx     # 0x17007b
leaq 0xdc2bc(%rip), %r8      # 0x17000b
movl $0x58, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x93d63
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rsp), %rcx
subq (%rcx), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rsp), %rcx
subq (%rcx), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
cmpq 0x18(%rsp), %rax
jb 0x93daf
movq 0x8(%rsp), %rax
cmpq 0x18(%rsp), %rax
jae 0x93db9
movb $0x0, 0x37(%rsp)
jmp 0x93e8d
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x93c40
testb $0x1, %al
jne 0x93dd1
jmp 0x93e88
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rsp), %rcx
cmpq (%rcx), %rax
ja 0x93e36
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jb 0x93e0f
movq 0x8(%rsp), %rax
cmpq 0x18(%rsp), %rax
jb 0x93e0d
movb $0x1, 0x37(%rsp)
jmp 0x93e8d
jmp 0x93e34
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rsp), %rcx
subq (%rcx), %rax
addq $0x1, %rax
cmpq 0x18(%rsp), %rax
jb 0x93e32
movb $0x1, 0x37(%rsp)
jmp 0x93e8d
jmp 0x93e34
jmp 0x93e86
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rsp), %rcx
cmpq 0x8(%rcx), %rax
ja 0x93e5f
movq 0x10(%rsp), %rax
cmpq 0x18(%rsp), %rax
jb 0x93e5d
movb $0x1, 0x37(%rsp)
jmp 0x93e8d
jmp 0x93e84
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rsp), %rcx
subq (%rcx), %rax
addq $0x1, %rax
cmpq 0x18(%rsp), %rax
jb 0x93e82
movb $0x1, 0x37(%rsp)
jmp 0x93e8d
jmp 0x93e84
jmp 0x93e86
jmp 0x93e88
movb $0x0, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
addq $0x38, %rsp
retq
nopl (%rax,%rax)