// File: chhylp123[P]hifiasm/ecovlp.cpp
// Function: worker_hap_dc_ec(void*, long, int)
static void worker_hap_dc_ec(void *data, long i, int tid)
{
    ec_ovec_buf_t0 *b = &(((ec_ovec_buf_t*)data)->a[tid]);
    // fprintf(stderr, "-0-[M::%s-beg] rid->%ld\n", __func__, i);
    // if (memcmp("m64012_190921_234837/139067658/ccs", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    //     fprintf(stderr, "-0-[M::%s-beg] rid->%ld\n", __func__, i);
    // } else if (memcmp("m64012_190921_234837/28968323/ccs", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    //     fprintf(stderr, "-1-[M::%s-beg] rid->%ld\n", __func__, i);
    // } else {
    //     return;
    // }
    // if(i != 2851) return;

    // if(scb.a[i].m < scc.a[i].n) {
    //     scb.a[i].m = scc.a[i].n;
    //     REALLOC(scb.a[i].a, scb.a[i].m);
    // }
    // scb.a[i].n = scc.a[i].n;
    // memcpy(scb.a[i].a, scc.a[i].a, scc.a[i].n*sizeof((*(scb.a[i].a))));

    scc.f[i] = 0;

    if(!(R_INF.paf[i].length)) return;
    // if(scc.f[i]) return;
    asg64_v buf0;

    recover_UC_Read(&b->self_read, &R_INF, i);

    copy_asg_arr(buf0, b->sp);
    if(gen_hap_dc_cov(&(b->v64), &buf0, &(R_INF.paf[i]), &R_INF, WINDOW_HC_FAST, 4, 0.7, &b->self_read, &b->ovlp_read, &scc, i)) {
        scc.f[i] = 1; b->cnt[0]++;
        // fprintf(stderr, "-mm-[M::%s]\tqn::%u::%.*s\n", __func__, (uint32_t)(i), (int)Get_NAME_LENGTH(R_INF, i), Get_NAME((R_INF), i));
    } else {
        scc.f[i] = 0; b->cnt[1]++;
        // fprintf(stderr, "-um-[M::%s]\tqn::%u::%.*s\n", __func__, (uint32_t)(i), (int)Get_NAME_LENGTH(R_INF, i), Get_NAME((R_INF), i));
    }
    copy_asg_arr(b->sp, buf0);

    refresh_ec_ovec_buf_t0(b, REFRESH_N);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x58, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
imulq $0x5c0, %rcx, %rcx      # imm = 0x5C0
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq 0x15ccfc(%rip), %rax    # 0x3c55f0
movq -0x18(%rbp), %rcx
movb $0x0, (%rax,%rcx)
leaq 0x15c9cd(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rax
imulq $0x18, -0x18(%rbp), %rcx
addq %rcx, %rax
cmpl $0x0, 0xc(%rax)
jne 0x26891a
jmp 0x268a54
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x15c9a7(%rip), %rsi    # 0x3c52d0
callq 0xa380
movq -0x28(%rbp), %rax
movq 0x578(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq 0x568(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movq 0x570(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
addq $0x4d0, %rdi            # imm = 0x4D0
leaq 0x15c963(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rdx
imulq $0x18, -0x18(%rbp), %rax
addq %rax, %rdx
movq -0x28(%rbp), %rbx
movq -0x28(%rbp), %r11
addq $0x20, %r11
movq -0x18(%rbp), %rax
leaq -0x40(%rbp), %rsi
leaq 0x15c93c(%rip), %rcx    # 0x3c52d0
movl $0x200, %r8d            # imm = 0x200
movl $0x4, %r9d
movsd 0x119880(%rip), %xmm0   # 0x382228
leaq 0x15cc29(%rip), %r10    # 0x3c55d8
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x25a1e0
cmpq $0x0, %rax
je 0x2689f4
movq 0x15cc1c(%rip), %rax    # 0x3c55f0
movq -0x18(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movq -0x28(%rbp), %rax
movq 0xc0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xc0(%rax)
jmp 0x268a19
movq 0x15cbf5(%rip), %rax    # 0x3c55f0
movq -0x18(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x28(%rbp), %rax
movq 0xc8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xc8(%rax)
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x578(%rax)
movq -0x40(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x568(%rax)
movq -0x38(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x570(%rax)
movq -0x28(%rbp), %rdi
movl $0x80, %esi
callq 0x26e2d0
addq $0x58, %rsp
popq %rbx
popq %rbp
retq
nopl (%rax,%rax)