// File: /workspace/github_c_makefile_star2_O0/lh3[P]fermi-lite/bfc.c
// Function: worker_ec
static void worker_ec(void *_data, long k, int tid)
{
	ec_step_t *es = (ec_step_t*)_data;
	bseq1_t *s = &es->seqs[k];
	if (es->flt_uniq) {
		uint64_t max;
		max = max_streak(es->opt->k, es->ch, s);
		if (max>>32 && (double)((max>>32) + es->opt->k - 1) / s->l_seq > es->opt->min_trim_frac) {
			int start = (uint32_t)max, end = start + (max>>32);
			start -= es->opt->k - 1;
			assert(start >= 0 && end <= s->l_seq);
			memmove(s->seq, s->seq + start, end - start);
			s->l_seq = end - start;
			s->seq[s->l_seq] = 0;
			if (s->qual) {
				memmove(s->qual, s->qual + start, s->l_seq);
				s->qual[s->l_seq] = 0;
			}
		} else {
			free(s->seq); free(s->qual);
			s->l_seq = 0, s->seq = s->qual = 0;
		}
	} else bfc_ec1(es->e[tid], s->seq, s->qual);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x8ee3
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl 0x8(%rax), %edi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x28(%rbp), %rdx
callq 0x9a00
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
shrq $0x20, %rax
cmpq $0x0, %rax
je 0x8ea5
movl -0x2c(%rbp), %eax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movslq 0x8(%rcx), %rcx
leaq -0x1(%rax,%rcx), %rax
movq %rax, %xmm0
movaps 0x1c5b3(%rip), %xmm1    # 0x25330
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x1c5b7(%rip), %xmm1    # 0x25340
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x28(%rbp), %rax
cvtsi2sdl (%rax), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movq (%rax), %rax
movss 0x1c(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8ea5
movq -0x30(%rbp), %rax
movl %eax, -0x34(%rbp)
movslq -0x34(%rbp), %rax
movq -0x30(%rbp), %rcx
shrq $0x20, %rcx
addq %rcx, %rax
movl %eax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl 0x8(%rax), %ecx
subl $0x1, %ecx
movl -0x34(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
jl 0x8dff
movl -0x38(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl (%rcx), %eax
jg 0x8dff
jmp 0x8e1e
leaq 0x1c6f3(%rip), %rdi     # 0x254f9
leaq 0x1c636(%rip), %rsi     # 0x25443
movl $0x264, %edx            # imm = 0x264
leaq 0x1c6fe(%rip), %rcx     # 0x25517
callq 0x20f0
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
movslq -0x34(%rbp), %rax
addq %rax, %rsi
movl -0x38(%rbp), %eax
subl -0x34(%rbp), %eax
movslq %eax, %rdx
callq 0x2220
movl -0x38(%rbp), %ecx
subl -0x34(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movslq (%rcx), %rcx
movb $0x0, (%rax,%rcx)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x8ea3
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rsi
movslq -0x34(%rbp), %rax
addq %rax, %rsi
movq -0x28(%rbp), %rax
movslq (%rax), %rdx
callq 0x2220
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movslq (%rcx), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x8ee1
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2040
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x2040
movq -0x28(%rbp), %rax
movl $0x0, (%rax)
movq -0x28(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x28(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x8f0c
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x6e30
movq %rax, -0x40(%rbp)
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)