// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/dual-pivot-qsort.c
// Function: gt_dual_pivots_get
static void gt_dual_pivots_get(GtUword *pivot1,GtUword *pivot2,
                               GtUword *input,GtUword lowindex,
                               GtUword highindex)
{
  GtUword s7, idx, len = highindex - lowindex + 1, e[6], values[5];

  s7 = (len >> 3) + (len >> 6) + 1;
  e[3] = (lowindex + highindex) >> 1;
  gt_assert(e[3] >= s7);
  e[2] = e[3] - s7;
  e[1] = e[2] - s7;
  if (len == 8UL)
  {
    e[1]++;
  }
  e[4] = e[3] + s7;
  e[5] = e[4] + s7;
  for (idx = (GtUword) 1; idx <= (GtUword) 5; idx++)
  {
    gt_assert(lowindex <= e[idx] && e[idx] <= highindex);
    values[idx-1] = input[e[idx]];
  }
  gt_dual_insertion_sort(values,0,(GtUword) 4);
  for (idx = (GtUword) 1; idx <= (GtUword) 5; idx++)
  {
    input[e[idx]] = values[idx-1];
  }
  *pivot1 = input[e[2]];
  *pivot2 = input[e[4]];
  input[lowindex] = *pivot1;
  input[highindex] = *pivot2;
}

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movq %rdx, 0x90(%rsp)
movq %rcx, 0x88(%rsp)
movq %r8, 0x80(%rsp)
movq 0x80(%rsp), %rax
subq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
shrq $0x3, %rax
movq 0x68(%rsp), %rcx
shrq $0x6, %rcx
addq %rcx, %rax
addq $0x1, %rax
movq %rax, 0x78(%rsp)
movq 0x88(%rsp), %rax
addq 0x80(%rsp), %rax
shrq %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
cmpq 0x78(%rsp), %rax
jae 0xa7ed2
movq 0x5940ff(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x46e168(%rip), %rsi    # 0x516013
leaq 0x48c97d(%rip), %rdx    # 0x53482f
leaq 0x48c981(%rip), %rcx    # 0x53483a
leaq 0x48c93e(%rip), %r8     # 0x5347fe
movl $0x79, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0xa7ed4
movq 0x48(%rsp), %rax
subq 0x78(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
subq 0x78(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x8, 0x68(%rsp)
jne 0xa7f08
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
movq 0x48(%rsp), %rax
addq 0x78(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
addq 0x78(%rsp), %rax
movq %rax, 0x58(%rsp)
movq $0x1, 0x70(%rsp)
cmpq $0x5, 0x70(%rsp)
ja 0xa7fd5
jmp 0xa7f3d
movq 0x88(%rsp), %rax
movq 0x70(%rsp), %rcx
cmpq 0x30(%rsp,%rcx,8), %rax
ja 0xa7f65
movq 0x70(%rsp), %rax
movq 0x30(%rsp,%rax,8), %rax
cmpq 0x80(%rsp), %rax
jbe 0xa7f9d
movq 0x594034(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x46e09d(%rip), %rsi    # 0x516013
leaq 0x48c8d0(%rip), %rdx    # 0x53484d
leaq 0x48c8b6(%rip), %rcx    # 0x53483a
leaq 0x48c873(%rip), %r8     # 0x5347fe
movl $0x84, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0xa7f9f
movq 0x90(%rsp), %rax
movq 0x70(%rsp), %rcx
movq 0x30(%rsp,%rcx,8), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x70(%rsp), %rax
subq $0x1, %rax
movq %rcx, (%rsp,%rax,8)
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0xa7f2f
movq %rsp, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x4, %edx
callq 0xa7d50
movq $0x1, 0x70(%rsp)
cmpq $0x5, 0x70(%rsp)
ja 0xa802a
movq 0x70(%rsp), %rax
subq $0x1, %rax
movq (%rsp,%rax,8), %rdx
movq 0x90(%rsp), %rax
movq 0x70(%rsp), %rcx
movq 0x30(%rsp,%rcx,8), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0xa7fef
movq 0x90(%rsp), %rax
movq 0x40(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0xa0(%rsp), %rax
movq %rcx, (%rax)
movq 0x90(%rsp), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x98(%rsp), %rax
movq %rcx, (%rax)
movq 0xa0(%rsp), %rax
movq (%rax), %rdx
movq 0x90(%rsp), %rax
movq 0x88(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x98(%rsp), %rax
movq (%rax), %rdx
movq 0x90(%rsp), %rax
movq 0x80(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
addq $0xa8, %rsp
retq
nopl (%rax,%rax)