// File: /workspace/github_cpp_makefile_star2_O1/chhylp123[P]hifiasm/gfa_ut.cpp
// Function: worker_update_ul_arc_drop(void*, long, int)
static void worker_update_ul_arc_drop(void *data, long i, int tid) // callback for kt_for()
{
    ul_resolve_t *uidx = (ul_resolve_t *)data; integer_t *buf = &(uidx->str_b.buf[tid]);
    ul_str_idx_t *str_idx = &(uidx->pstr); uinfo_srt_warp_t *seq = uidx->uovl.iug_seq;
    uint32_t v = seq->a[i].v, z, vz; uint64_t *hid_a, hid_n; ul_str_t *str;
    int64_t s_n, s, p, p_n = seq->n; uint64_t cutoff = uidx->uovl.iug_cov_thre, occ;

    hid_a = str_idx->occ.a + str_idx->idx.a[v>>1];
    hid_n = str_idx->idx.a[(v>>1)+1] - str_idx->idx.a[v>>1];
    for (z = occ = 0; z < hid_n; z++) {
        str = &(str_idx->str.a[hid_a[z]>>32]); s_n = str->cn;
        if(s_n < 2) continue;
        vz = (uint32_t)(str->a[(uint32_t)hid_a[z]]);
        assert((v>>1) == (vz>>1)); 

        if(v == vz) {
            s = ((uint32_t)hid_a[z]) + 1; p = i + 1; 
            if((s < s_n) && (p < p_n) && ((uint32_t)(str->a[s]) == seq->a[p].v)) {
                occ++;
            }
        } else {
            s = ((int32_t)((uint32_t)hid_a[z]))-1; p = i + 1; 
            if((s >= 0) && (p < p_n) && ((uint32_t)(str->a[s]) == (seq->a[p].v^1))) {
                occ++;
            }
        }
        if(occ >= cutoff) break;
    }

    if(occ < cutoff) kv_push(uint64_t, buf->res_dump, i);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %edx, 0xc(%rsp)
movq 0x1a0(%rdi), %rdx
movq 0x1d8(%rdi), %rax
movq %rax, 0x18(%rsp)
movq 0x298(%rdi), %rax
movq 0x10(%rax), %rbx
movq %rsi, %rcx
shlq $0x4, %rcx
movl (%rbx,%rcx), %r8d
movq 0x2a0(%rdi), %rcx
movl %r8d, %r9d
shrl %r9d
movq (%rdx,%r9,8), %r10
movq 0x8(%rdx,%r9,8), %r11
subq %r10, %r11
movq %rsi, 0x20(%rsp)
jne 0x21c4a6
xorl %r12d, %r12d
jmp 0x21c589
shlq $0x3, %r10
addq 0x1b8(%rdi), %r10
movq (%rax), %r14
movq 0x1d0(%rdi), %rdi
leaq 0x1(%rsi), %r15
movq %r15, %rax
shlq $0x4, %rax
addq %rax, %rbx
movq %rbx, 0x10(%rsp)
movl $0x1, %ebp
xorl %eax, %eax
xorl %r12d, %r12d
movq (%r10,%rax,8), %r13
movq %r13, %rax
shrq $0x1b, %rax
andq $-0x20, %rax
movl 0x18(%rdi,%rax), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
cmpl $0x2, %edx
jb 0x21c57c
addq %rdi, %rax
movq 0x10(%rax), %rax
movl %r13d, %ebx
movl (%rax,%rbx,8), %esi
movl %esi, %ebx
shrl %ebx
cmpl %ebx, %r9d
jne 0x21c5fe
cmpl %esi, %r8d
jne 0x21c547
cmpq %r14, %r15
setl %sil
incl %r13d
cmpq %rdx, %r13
setb %dl
andb %sil, %dl
cmpb $0x1, %dl
jne 0x21c577
movq 0x10(%rsp), %rdx
movl (%rdx), %edx
xorl %esi, %esi
cmpl (%rax,%r13,8), %edx
sete %sil
addq %rsi, %r12
jmp 0x21c577
cmpq %r14, %r15
setl %sil
decl %r13d
movslq %r13d, %rdx
testq %rdx, %rdx
setns %bl
andb %sil, %bl
cmpb $0x1, %bl
jne 0x21c577
movq 0x10(%rsp), %rsi
movl (%rsi), %esi
xorl (%rax,%rdx,8), %esi
xorl %eax, %eax
cmpl $0x1, %esi
sete %al
addq %rax, %r12
cmpq %rcx, %r12
jae 0x21c589
movl %ebp, %eax
incl %ebp
cmpq %rax, %r11
ja 0x21c4d8
cmpq %rcx, %r12
jae 0x21c5ef
movslq 0xc(%rsp), %rax
imulq $0x328, %rax, %rax      # imm = 0x328
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax), %r14
addq $0x300, %r14            # imm = 0x300
movq 0x8(%r14), %rax
cmpq %rax, (%r14)
jne 0x21c5d8
leaq (%rax,%rax), %rcx
testq %rax, %rax
movl $0x2, %esi
cmovneq %rcx, %rsi
movq %rsi, 0x8(%r14)
movq 0x10(%r14), %rdi
shlq $0x3, %rsi
callq 0x2370
movq %rax, 0x10(%r14)
movq (%r14), %rax
movq 0x10(%r14), %rcx
leaq 0x1(%rax), %rdx
movq %rdx, (%r14)
movq 0x20(%rsp), %rdx
movq %rdx, (%rcx,%rax,8)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1f766(%rip), %rdi     # 0x23bd6b
leaq 0x1cd19(%rip), %rsi     # 0x239325
leaq 0x21da6(%rip), %rcx     # 0x23e3b9
movl $0x2924, %edx           # imm = 0x2924
callq 0x2110