// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/priority_queue.c
// Function: gt_priority_queue_extract_min
void *gt_priority_queue_extract_min(GtPriorityQueue *pq)
{
  gt_assert(pq != NULL && !gt_priority_queue_is_empty(pq));
  if (pq->capacity < (GtUword) GT_MINPQSIZE)
  {
    gt_assert(pq->numofelements > 0);
    pq->minelement = pq->elements[--pq->numofelements];
  } else
  {
    GtUword idx, child;
    void *lastelement;

    pq->minelement = pq->elements[1];
    lastelement = pq->elements[pq->numofelements--];
    for (idx = 1UL; GT_HEAP_LEFT(idx) <= pq->numofelements; idx = child)
    {
      child = GT_HEAP_LEFT(idx);
      gt_assert(child > 0);
      if (child != pq->numofelements &&
          pq->cmpfun(pq->elements[child + 1],pq->elements[child]) < 0)
      {
        child++;
      }
      if (pq->cmpfun(lastelement,pq->elements[child]) > 0)
      {
        pq->elements[idx] = pq->elements[child];
      } else
      {
        break;
      }
    }
    gt_assert(idx > 0);
    pq->elements[idx] = lastelement;
  }
  return pq->minelement;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1b6381
movq 0x20(%rsp), %rdi
callq 0x1b6040
testb $0x1, %al
jne 0x1b6381
jmp 0x1b63b9
movq 0x485c18(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x35fc81(%rip), %rsi    # 0x516013
leaq 0x3aa67c(%rip), %rdx    # 0x560a15
leaq 0x3aa6a3(%rip), %rcx    # 0x560a43
leaq 0x3aa5cd(%rip), %r8     # 0x560974
movl $0x6e, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1b63bb
movq 0x20(%rsp), %rax
cmpq $0x10, 0x8(%rax)
jae 0x1b643f
jmp 0x1b63c9
movq 0x20(%rsp), %rax
cmpq $0x0, 0x10(%rax)
ja 0x1b640d
movq 0x485bc4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x35fc2d(%rip), %rsi    # 0x516013
leaq 0x3aa674(%rip), %rdx    # 0x560a61
leaq 0x3aa64f(%rip), %rcx    # 0x560a43
leaq 0x3aa579(%rip), %r8     # 0x560974
movl $0x71, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1b640f
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rsp), %rdx
movq 0x10(%rdx), %rcx
movq %rcx, %rsi
addq $-0x1, %rsi
movq %rsi, 0x10(%rdx)
movq -0x8(%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x18(%rax)
jmp 0x1b65f6
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rsp), %rdx
movq 0x10(%rdx), %rcx
movq %rcx, %rsi
addq $-0x1, %rsi
movq %rsi, 0x10(%rdx)
movq (%rax,%rcx,8), %rax
movq %rax, 0x8(%rsp)
movq $0x1, 0x18(%rsp)
movq 0x18(%rsp), %rax
shlq %rax
movq 0x20(%rsp), %rcx
cmpq 0x10(%rcx), %rax
ja 0x1b659b
movq 0x18(%rsp), %rax
shlq %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
ja 0x1b64e8
movq 0x485ae9(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x35fb52(%rip), %rsi    # 0x516013
leaq 0x3aa5af(%rip), %rdx    # 0x560a77
leaq 0x3aa574(%rip), %rcx    # 0x560a43
leaq 0x3aa49e(%rip), %r8     # 0x560974
movl $0x7d, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1b64ea
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rcx
cmpq 0x10(%rcx), %rax
je 0x1b653c
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x20(%rcx), %rcx
movq 0x10(%rsp), %rdx
movq 0x8(%rcx,%rdx,8), %rdi
movq 0x20(%rsp), %rcx
movq 0x20(%rcx), %rcx
movq 0x10(%rsp), %rdx
movq (%rcx,%rdx,8), %rsi
callq *%rax
cmpl $0x0, %eax
jge 0x1b653c
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rsp), %rdi
movq 0x20(%rsp), %rcx
movq 0x20(%rcx), %rcx
movq 0x10(%rsp), %rdx
movq (%rcx,%rdx,8), %rsi
callq *%rax
cmpl $0x0, %eax
jle 0x1b6588
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x10(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x1b658a
jmp 0x1b659b
jmp 0x1b658c
movq 0x10(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0x1b6484
jmp 0x1b659d
cmpq $0x0, 0x18(%rsp)
ja 0x1b65dd
movq 0x4859f4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x35fa5d(%rip), %rsi    # 0x516013
leaq 0x383956(%rip), %rdx    # 0x539f13
leaq 0x3aa47f(%rip), %rcx    # 0x560a43
leaq 0x3aa3a9(%rip), %r8     # 0x560974
movl $0x8b, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1b65df
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)