// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/sfx-diffcov.c
// Function: dc_init_sfxstrategy_for_sample
static void dc_init_sfxstrategy_for_sample(Sfxstrategy *sfxstrategy,
                                           const Sfxstrategy *mainsfxstrategy,
                                           bool bitwise_cmp_ok,
                                           GtUword effectivesamplesize,
                                           GtUword totallength,
                                           GtLogger *logger)
{
  if (mainsfxstrategy != NULL)
  {
    double sampledproportion = (double) effectivesamplesize/totallength;

    *sfxstrategy = *mainsfxstrategy;
#define SETMAXCOUNT(COMP)\
    if (mainsfxstrategy->COMP >= 1UL)\
    {\
      sfxstrategy->COMP = GT_MAX(2UL,\
                                 mainsfxstrategy->COMP * sampledproportion);\
    }
    SETMAXCOUNT(maxcountingsort);
    SETMAXCOUNT(maxbltriesort);
    SETMAXCOUNT(maxinsertionsort);
  } else
  {
    defaultsfxstrategy(sfxstrategy,bitwise_cmp_ok);
  }
  gt_logger_log(logger,"samplesort.maxinsertionsort="GT_WU"",
                sfxstrategy->maxinsertionsort);
  gt_logger_log(logger,"samplesort.maxbltriesort="GT_WU"",
                sfxstrategy->maxbltriesort);
  gt_logger_log(logger,"samplesort.maxcountingsort="GT_WU"",
                sfxstrategy->maxcountingsort);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %r9, %rbx
movq %rdi, %r14
testq %rsi, %rsi
je 0x1eb32c
movq %rcx, %xmm1
movq 0x15c72f(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x15c733(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %r8, %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq 0x30(%rsi), %rax
movq %rax, 0x30(%r14)
movupd (%rsi), %xmm1
movupd 0x10(%rsi), %xmm2
movups 0x20(%rsi), %xmm3
movups %xmm3, 0x20(%r14)
movupd %xmm2, 0x10(%r14)
movupd %xmm1, (%r14)
movq 0x18(%rsi), %rax
testq %rax, %rax
je 0x1eb26c
movq %rax, %xmm1
punpckldq 0x15c6bb(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x15c6c3(%rip), %xmm1   # 0x3478f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
mulsd %xmm0, %xmm2
movsd 0x17e163(%rip), %xmm1   # 0x3693a8
maxsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rcx
subsd 0x15cac7(%rip), %xmm1   # 0x347d20
cvttsd2si %xmm1, %rdx
sarq $0x3f, %rcx
andq %rcx, %rdx
orq %rax, %rdx
movq %rdx, 0x18(%r14)
movq 0x10(%rsi), %rax
testq %rax, %rax
je 0x1eb2c9
movq %rax, %xmm1
punpckldq 0x15c65e(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x15c666(%rip), %xmm1   # 0x3478f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
mulsd %xmm0, %xmm2
movsd 0x17e106(%rip), %xmm1   # 0x3693a8
maxsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rcx
subsd 0x15ca6a(%rip), %xmm1   # 0x347d20
cvttsd2si %xmm1, %rdx
sarq $0x3f, %rcx
andq %rcx, %rdx
orq %rax, %rdx
movq %rdx, 0x10(%r14)
movq 0x8(%rsi), %rax
testq %rax, %rax
je 0x1eb376
movq %rax, %xmm1
punpckldq 0x15c5fd(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x15c605(%rip), %xmm1   # 0x3478f0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
mulsd %xmm2, %xmm0
movsd 0x17e0a5(%rip), %xmm1   # 0x3693a8
maxsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rcx
subsd 0x15ca09(%rip), %xmm1   # 0x347d20
cvttsd2si %xmm1, %rdx
sarq $0x3f, %rcx
andq %rcx, %rdx
orq %rax, %rdx
movq %rdx, 0x8(%r14)
jmp 0x1eb37a
movq $0x1, (%r14)
movq $0x3, 0x8(%r14)
movq $0x3e8, 0x10(%r14)      # imm = 0x3E8
movq $0xfa0, 0x18(%r14)      # imm = 0xFA0
xorl %eax, %eax
movl %eax, 0x20(%r14)
movb %dl, 0x2c(%r14)
movl %eax, 0x2d(%r14)
movabsq $0x10000000000, %rax    # imm = 0x10000000000
movq %rax, 0x30(%r14)
movq $0x0, 0x24(%r14)
movl $0x3, %edx
jmp 0x1eb37a
movq 0x8(%r14), %rdx
leaq 0x1cc0ad(%rip), %rsi    # 0x3b742e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x10(%r14), %rdx
leaq 0x1cc0b8(%rip), %rsi    # 0x3b744e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x18(%r14), %rdx
leaq 0x1cc0c0(%rip), %rsi    # 0x3b746b
movq %rbx, %rdi
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x103fe1