LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/htab.cpp
// Function: ha_pt_ug_gen(hifiasm_opt_t const*, void const*, ma_utg_v*, int, int, int, int)
ha_pt_t *ha_pt_ug_gen(const hifiasm_opt_t *asm_opt, const void *flt_tab, ma_utg_v *us, int is_HPC, int k, int w, int min_freq)
{
	ha_ct_t *ct;
	ha_pt_t *pt;
	///HAF_COUNT_EXACT: no bf
	ct = ha_count(asm_opt, HAF_COUNT_EXACT|HAF_UG_READ, is_HPC, k, w, NULL, flt_tab, NULL, us, 0, NULL, 1);
	fprintf(stderr, "[M::%s::%.3f*%.2f] ==> counted %ld distinct minimizer k-mers\n", __func__,
			yak_realtime(), yak_cpu_usage(), (long)ct->tot);
	///minimizer with YAK_MAX_COUNT occ may apper > YAK_MAX_COUNT times, so it may lead to overflow at ha_pt_gen
	ha_ct_shrink(ct, min_freq, YAK_MAX_COUNT - 1, asm_opt->thread_num);

	pt = ha_pt_gen(ct, asm_opt->thread_num, 1);
	ha_count(asm_opt, HAF_COUNT_EXACT|HAF_UG_READ, is_HPC, k, w, pt, flt_tab, NULL, us, 0, NULL, 1);
	//ha_pt_sort(pt, asm_opt->thread_num);
	fprintf(stderr, "[M::%s::%.3f*%.2f] ==> indexed %ld positions\n", __func__,
			yak_realtime(), yak_cpu_usage(), (long)pt->tot_pos);
	return pt;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r9d, %ebp
movl %r8d, %r15d
movl %ecx, %r12d
movq %rdx, 0x10(%rsp)
movq %rsi, (%rsp)
movq %rdi, %r13
subq $0x30, %rsp
andq $0x0, 0x20(%rsp)
pushq $0x1
popq %rax
andl $0x0, 0x18(%rsp)
movl %eax, 0x28(%rsp)
andq $0x0, 0x8(%rsp)
movq %rdx, 0x10(%rsp)
movq %rsi, (%rsp)
movl $0x81, %esi
movl %ecx, %edx
movl %r8d, %ecx
movl %r9d, %r8d
xorl %r9d, %r9d
callq 0xd5694
addq $0x30, %rsp
movq %rax, %rbx
movq 0x17c7c4(%rip), %rax    # 0x252fe0
movq (%rax), %r14
callq 0xefea7
movsd %xmm0, 0x8(%rsp)
callq 0xefef4
movaps %xmm0, %xmm1
movq 0x10(%rbx), %rcx
leaq 0x1156ce(%rip), %rsi    # 0x1ebf0b
leaq 0x115740(%rip), %rdx    # 0x1ebf84
movq %r14, %rdi
movsd 0x8(%rsp), %xmm0
movb $0x2, %al
callq 0x22b0
movl 0x7c(%r13), %ecx
movq %rbx, %rdi
movl 0x50(%rsp), %esi
movl $0xffe, %edx            # imm = 0xFFE
callq 0xd5e5c
movl 0x7c(%r13), %esi
movq %rbx, %rdi
pushq $0x1
popq %r14
movl %r14d, %edx
callq 0xd463b
movq %rax, %rbx
movq %r13, %rdi
movl $0x81, %esi
movl %r12d, %edx
movl %r15d, %ecx
movl %ebp, %r8d
movq %rax, %r9
pushq %r14
pushq $0x0
pushq $0x0
pushq 0x28(%rsp)
pushq $0x0
pushq 0x28(%rsp)
callq 0xd5694
addq $0x30, %rsp
movq 0x17c72d(%rip), %rax    # 0x252fe0
movq (%rax), %r14
callq 0xefea7
movsd %xmm0, (%rsp)
callq 0xefef4
movaps %xmm0, %xmm1
movq 0x10(%rbx), %rcx
leaq 0x115683(%rip), %rsi    # 0x1ebf56
movq %r14, %rdi
leaq 0x1156a7(%rip), %rdx    # 0x1ebf84
movsd (%rsp), %xmm0
movb $0x2, %al
callq 0x22b0
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/htab.cpp
// Function: worker_ct_shrink(void*, long, int)
static void worker_ct_shrink(void *data, long i, int tid) // callback for kt_for()
{
	shrink_aux_t *a = (shrink_aux_t*)data;
	ha_ct_t *h = a->h;
	yak_ct_t *g = h->h[i].h, *f;
	khint_t k;
	f = yak_ct_init();
	yak_ct_resize(f, kh_size(g));
	for (k = 0; k < kh_end(g); ++k) {
		if (kh_exist(g, k)) {
			int absent, c = kh_key(g, k) & YAK_MAX_COUNT;
			if (c >= a->min && c <= a->max)
				yak_ct_put(f, kh_key(g, k), &absent);
		}
	}
	yak_ct_destroy(g);
	h->h[i].h = f;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rdi), %rax
movq %rax, 0x8(%rsp)
movq 0x20(%rax), %rax
shlq $0x4, %rbx
movq (%rax,%rbx), %r15
callq 0xda119
movq %rax, %r12
movl 0x4(%r15), %esi
movq %rax, %rdi
callq 0xda62b
xorl %ebp, %ebp
pushq $0x1
popq %r13
movq 0x10(%r15), %rax
testq %rax, %rax
je 0xdaa38
movb (%r15), %cl
movq %r13, %rdx
shlq %cl, %rdx
jmp 0xdaa3a
xorl %edx, %edx
cmpq %rdx, %rbp
jae 0xdaa7a
movq 0x8(%r15), %rcx
movq %rbp, %rdx
shrq $0x5, %rdx
movl (%rcx,%rdx,4), %ecx
btl %ebp, %ecx
jae 0xdaa75
movq (%rax,%rbp,8), %rsi
movl %esi, %eax
andl $0xfff, %eax            # imm = 0xFFF
cmpl (%r14), %eax
jl 0xdaa75
cmpl 0x4(%r14), %eax
jg 0xdaa75
movq %r12, %rdi
leaq 0x14(%rsp), %rdx
callq 0xda538
incq %rbp
jmp 0xdaa24
movq %r15, %rdi
callq 0xd8459
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rax
movq %r12, (%rax,%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/htab.cpp
// Function: worker_ct_hist(void*, long, int)
static void worker_ct_hist(void *data, long i, int tid) // callback for kt_for()
{
	hist_aux_t *a = (hist_aux_t*)data;
	uint64_t *cnt = a->cnt[tid].c;
	yak_ct_t *g = a->h->h[i].h;
	khint_t k;
	for (k = 0; k < kh_end(g); ++k)
		if (kh_exist(g, k))
			++cnt[kh_key(g, k)&YAK_MAX_COUNT];
}

// Assembly:
movslq %edx, %rax
shlq $0xf, %rax
addq 0x8(%rdi), %rax
movq (%rdi), %rcx
movq 0x20(%rcx), %rcx
shlq $0x4, %rsi
movq (%rcx,%rsi), %rdx
movq 0x10(%rdx), %rsi
xorl %edi, %edi
movl $0xfff, %r8d            # imm = 0xFFF
pushq $0x1
popq %r9
testq %rsi, %rsi
je 0xdacdc
movb (%rdx), %cl
movq %r9, %r10
shlq %cl, %r10
jmp 0xdacdf
xorl %r10d, %r10d
cmpq %r10, %rdi
jae 0xdad07
movq 0x8(%rdx), %rcx
movq %rdi, %r10
shrq $0x5, %r10
movl (%rcx,%r10,4), %ecx
btl %edi, %ecx
jae 0xdad02
movl (%rsi,%rdi,8), %ecx
andl %r8d, %ecx
incq (%rax,%rcx,8)
incq %rdi
jmp 0xdaccd
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/htab.cpp
// Function: flt_quals(char*, unsigned long, unsigned long, long)
inline uint64_t flt_quals(char *sc_a, uint64_t sc_l, uint64_t sc_off, int64_t sc_cut)
{
	int64_t sc_min = sc_l * sc_cut, sc_tot; uint64_t k;
	for (k = sc_tot = 0; (k < sc_l) && (sc_tot < sc_min); k++) {
		sc_tot += (((uint8_t)sc_a[k]) - sc_off);
	}

	// if(sc_tot < sc_min) {
	// 	fprintf(stderr, "[M::%s] sc_tot::%ld, sc_min::%ld, sc_l::%lu\n", __func__, sc_tot, sc_min, sc_l);
	// }

	if(sc_tot < sc_min) return 0;
	return 1;
}

// Assembly:
imulq %rsi, %rcx
xorl %r8d, %r8d
xorl %eax, %eax
cmpq %rsi, %rax
jae 0xdae24
cmpq %rcx, %r8
jge 0xdae24
movzbl (%rdi,%rax), %r9d
subq %rdx, %r8
addq %r9, %r8
incq %rax
jmp 0xdae0a
xorl %eax, %eax
cmpq %rcx, %r8
setge %al
retq
nopl (%rax)
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hist.cpp
// Function: print_hist_lines(int, int, long const*)
void print_hist_lines(int n_cnt, int start_cnt, const int64_t *cnt)
{
	const int hist_max = 100;
	int i, start, low_i, max_i, max;
	// determine the start point
	assert(n_cnt > start_cnt);
	start = cnt[1] > 0? 1 : 2;

	// find the low point from the left
	low_i = start > start_cnt? start : start_cnt;
	for (i = low_i; i < n_cnt; ++i)
		if (cnt[i] > cnt[i-1]) break;
	low_i = i - 1;
	fprintf(stderr, "[M::%s] lowest: count[%d] = %ld\n", __func__, low_i, (long)cnt[low_i]);

	// find the highest peak
	max_i = start > start_cnt? start : start_cnt, max = cnt[max_i];
	for (i = max_i; i < n_cnt; ++i)
		if (cnt[i] > max)
			max = cnt[i], max_i = i;
	fprintf(stderr, "[M::%s] highest: count[%d] = %ld\n", __func__, max_i, (long)cnt[max_i]);

	for (i = start; i < n_cnt; ++i) {
		int x, exceed = 0;
		x = (int)((double)hist_max * cnt[i] / cnt[max_i] + .499);
		if (x > hist_max) exceed = 1, x = hist_max; // may happen if cnt[2] is higher
		if (i > max_i && x == 0) break;
		ha_hist_line(i, x, exceed, cnt[i]);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
cmpl %esi, %edi
jle 0xdaf52
movq %rdx, %rbx
movl %esi, %ebp
movl %edi, %ecx
xorl %r15d, %r15d
cmpq $0x0, 0x8(%rdx)
setle %r15b
incl %r15d
cmpl %esi, %r15d
cmovgl %r15d, %ebp
movl %ebp, %r14d
movslq %edi, %r12
cmpl %edi, %ebp
cmovgl %ebp, %ecx
movq %r14, %rax
cmpq %r12, %rax
jge 0xdae85
movq (%rbx,%rax,8), %rdx
cmpq -0x8(%rbx,%rax,8), %rdx
jg 0xdae83
incq %rax
jmp 0xdae6e
movl %eax, %ecx
movq 0x178154(%rip), %r13    # 0x252fe0
movq (%r13), %rdi
movslq %ecx, %rax
decl %ecx
movq -0x8(%rbx,%rax,8), %r8
leaq 0x1116a7(%rip), %rsi    # 0x1ec548
leaq 0x1116c1(%rip), %rdx    # 0x1ec569
xorl %eax, %eax
callq 0x22b0
movl (%rbx,%r14,8), %eax
cmpq %r12, %r14
jge 0xdaecd
movq (%rbx,%r14,8), %rcx
cltq
cmpq %rax, %rcx
cmovgl %r14d, %ebp
cmovgl %ecx, %eax
incq %r14
jmp 0xdaeb3
movq (%r13), %rdi
movslq %ebp, %r14
movq (%rbx,%r14,8), %r8
leaq 0x11169b(%rip), %rsi    # 0x1ec57a
leaq 0x111683(%rip), %rdx    # 0x1ec569
movl %r14d, %ecx
xorl %eax, %eax
callq 0x22b0
movl %r15d, %r15d
pushq $0x64
popq %rbp
cmpq %r12, %r15
jge 0xdaf43
movq (%rbx,%r15,8), %rcx
cvtsi2sd %rcx, %xmm0
mulsd 0x110684(%rip), %xmm0   # 0x1eb590
cvtsi2sdq (%rbx,%r14,8), %xmm1
divsd %xmm1, %xmm0
addsd 0x1050f2(%rip), %xmm0   # 0x1e0010
cvttsd2si %xmm0, %esi
cmpq %r14, %r15
jle 0xdaf2b
testl %esi, %esi
je 0xdaf43
xorl %edx, %edx
cmpl $0x64, %esi
cmovgel %ebp, %esi
setg %dl
movl %r15d, %edi
callq 0xdaf6f
incq %r15
jmp 0xdaef6
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1115a3(%rip), %rdi    # 0x1ec4fc
leaq 0x1115ae(%rip), %rsi    # 0x1ec50e
leaq 0x1115b0(%rip), %rcx    # 0x1ec517
pushq $0x14
popq %rdx
callq 0x2110
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hist.cpp
// Function: adj_m_peak_hom(int, int, int, int, int*)
int adj_m_peak_hom(int m_peak_hom, int max_i, int max2_i, int max3_i, int *peak_het)
{
	int64_t mm[3], d, min_i, min_d, i;
	mm[0] = max2_i; mm[1] = max_i; mm[2] = max3_i;
	for (i = 0, min_i = -1, min_d = -1; i < 3; i++){
		if(mm[i] <= 0) continue;
		d = (mm[i] >= m_peak_hom?mm[i]-m_peak_hom:m_peak_hom-mm[i]);
		if(min_d == -1 || min_d > d || (min_d == d && i == 1)){
			min_d = d; min_i = i;
		}
	}
	if(min_i < 0) return m_peak_hom;
	if(mm[min_i] < m_peak_hom){
		d = m_peak_hom - mm[min_i];
		if(d >= mm[min_i]*0.51) {
			*peak_het = mm[min_i];
			return m_peak_hom;
		}
	}

	for (i = min_i-1; i >= 0; i--){
		if(mm[i] <= 0) continue;
		*peak_het = mm[i];
		break;
	}
	return mm[min_i];
}

// Assembly:
movl %edi, %eax
movslq %edx, %rdx
movq %rdx, -0x18(%rsp)
movslq %esi, %rdx
movq %rdx, -0x10(%rsp)
movslq %ecx, %rcx
movq %rcx, -0x8(%rsp)
movslq %edi, %rdx
movabsq $-0x1, %rcx
xorl %esi, %esi
movq %rcx, %rdi
cmpq $0x3, %rsi
je 0xdb081
movq -0x18(%rsp,%rsi,8), %r10
testq %r10, %r10
jle 0xdb07c
subq %rdx, %r10
movq %r10, %r9
negq %r9
cmovsq %r10, %r9
cmpq $-0x1, %rdi
sete %r10b
cmpq %r9, %rdi
setg %r11b
orb %r10b, %r11b
jne 0xdb076
cmpq $0x1, %rsi
jne 0xdb07c
cmpq %r9, %rdi
jne 0xdb07c
movq %rsi, %rcx
movq %r9, %rdi
incq %rsi
jmp 0xdb03a
testq %rcx, %rcx
js 0xdb0bf
movq -0x18(%rsp,%rcx,8), %rsi
subq %rsi, %rdx
jle 0xdb0a8
cvtsi2sd %rdx, %xmm0
cvtsi2sd %rsi, %xmm1
mulsd 0x1084f6(%rip), %xmm1   # 0x1e3598
ucomisd %xmm1, %xmm0
jae 0xdb0c0
testq %rcx, %rcx
jle 0xdb0bd
movq -0x20(%rsp,%rcx,8), %rax
decq %rcx
testq %rax, %rax
jle 0xdb0a8
movl %eax, (%r8)
movl %esi, %eax
retq
movl %esi, (%r8)
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/./htab.h
// Function: tq_shift(tiny_queue_t*)
static inline int tq_shift(tiny_queue_t *q)
{
	int x;
	if (q->count == 0) return -1;
	x = q->a[q->front++];
	q->front &= 0x3f;
	--q->count;
	return x;
}

// Assembly:
movl 0x4(%rdi), %ecx
testl %ecx, %ecx
je 0xdbe8c
movslq (%rdi), %rax
leal 0x1(%rax), %edx
movl %edx, (%rdi)
movl 0x8(%rdi,%rax,4), %eax
andl $0x3f, %edx
movl %edx, (%rdi)
decl %ecx
movl %ecx, 0x4(%rdi)
retq
pushq $-0x1
popq %rax
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: lable_matched_ovlp(overlap_region_alloc*, ma_hit_t_alloc*)
void lable_matched_ovlp(overlap_region_alloc* overlap_list, ma_hit_t_alloc* paf)
{
	uint64_t j = 0, inner_j = 0;
	while (j < overlap_list->length && inner_j < paf->length)
    {
        if(overlap_list->list[j].y_id < paf->buffer[inner_j].tn)
        {
            j++;
        }
        else if(overlap_list->list[j].y_id > paf->buffer[inner_j].tn)
        {
            inner_j++;
        }
        else
        {
            if(overlap_list->list[j].y_pos_strand == paf->buffer[inner_j].rev)
            {
				overlap_list->list[j].is_match = 1;
            }
            j++;
            inner_j++;
        }
    }
}

// Assembly:
pushq %rbp
pushq %rbx
movq 0x10(%rdi), %rax
xorl %ecx, %ecx
xorl %edx, %edx
imulq $0x28, %rdx, %r8
addq $0x18, %r8
imulq $0xa8, %rcx, %r9
cmpq %rax, %rcx
jae 0xe53a1
movl 0xc(%rsi), %r10d
cmpq %r10, %rdx
jae 0xe53a1
movq (%rdi), %rbx
leaq (%rbx,%r9), %r10
movq (%rsi), %r11
movl -0xc(%r11,%r8), %ebp
cmpl %ebp, 0x10(%rbx,%r9)
jb 0xe539c
jbe 0xe5386
incq %rdx
addq $0x28, %r8
jmp 0xe5357
movl (%r11,%r8), %r8d
shrl $0x1f, %r8d
cmpl %r8d, 0x1c(%r10)
jne 0xe5399
movb $0x1, 0x2c(%r10)
incq %rdx
incq %rcx
jmp 0xe5348
popq %rbx
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: ha_get_ul_candidates_interface(ha_abufl_s*, long, char*, unsigned long, unsigned long, unsigned long, ul_idx_t const*, overlap_region_alloc*, overlap_region_alloc*, Candidates_list*, double, int, int, kvec_t_u8_warp*, kvec_t_u64_warp*, overlap_region*, kvec_t_u64_warp*, st_mt_t*, unsigned int, void*)
void ha_get_ul_candidates_interface(ha_abufl_t *ab, int64_t rid, char* rs, uint64_t rl, uint64_t mz_w, uint64_t mz_k, const ul_idx_t *uref, overlap_region_alloc *overlap_list, overlap_region_alloc *overlap_list_hp, Candidates_list *cl, double bw_thres, 
								 int max_n_chain, int keep_whole_chain, kvec_t_u8_warp* k_flag, kvec_t_u64_warp* chain_idx, overlap_region* f_cigar, kvec_t_u64_warp* dbg_ct, st_mt_t *sp, uint32_t high_occ, void *km)
{
	extern void *ha_flt_tab;
	extern ha_pt_t *ha_idx;

	ha_get_new_ul_candidates(ab, rid, rs, rl, mz_w, mz_k, uref, overlap_list, cl, bw_thres, max_n_chain, keep_whole_chain, k_flag, chain_idx, ha_flt_tab, ha_idx, f_cigar, dbg_ct, sp, high_occ, km);
	if(km) {
		ha_abufl_free_buf(km, ab, 1); 
		destory_Candidates_list_buf(km, cl, 1); 
	}
	ks_introsort_or_xs(overlap_list->length, overlap_list->list);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, 0x70(%rsp)
movq 0x110(%rsp), %r14
movq 0xc8(%rsp), %r15
movq 0xb8(%rsp), %r12
movq 0xb0(%rsp), %rcx
movl 0xd0(%rsp), %eax
movl 0xd8(%rsp), %r10d
movaps 0xe0(%rsp), %xmm1
movaps 0xf0(%rsp), %xmm2
movq 0x100(%rsp), %r11
leaq 0x16ebef(%rip), %r13    # 0x254430
movq (%r13), %r13
leaq 0x16ebec(%rip), %rbp    # 0x254438
movq (%rbp), %rbp
movl 0x108(%rsp), %ebx
movl %ebx, 0x60(%rsp)
movq %r15, %rbx
movq %rdi, %r15
movq %r11, 0x58(%rsp)
movq %r14, 0x68(%rsp)
movups %xmm2, 0x48(%rsp)
movq %rbp, 0x40(%rsp)
movq %r13, 0x38(%rsp)
movups %xmm1, 0x28(%rsp)
movl %r10d, 0x20(%rsp)
movl %eax, 0x18(%rsp)
movq %rcx, (%rsp)
movq %rbx, 0x10(%rsp)
movq %r12, 0x8(%rsp)
movq 0x70(%rsp), %rcx
callq 0xe4189
testq %r14, %r14
je 0xe58c2
pushq $0x1
popq %rbp
movq %r14, %rdi
movq %r15, %rsi
movl %ebp, %edx
callq 0xe3a1b
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq 0x13d48
movq (%r12), %rsi
movq 0x10(%r12), %rdi
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xe1c6f
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: hpc_ext_check(All_reads*, unsigned int, long, long, long, unsigned long, char*)
void hpc_ext_check(All_reads *rref, uint32_t id, int64_t s0, int64_t e0, int64_t l, uint64_t rev, char *buf)
{
	if(s0 < 0) s0 = 0; if(e0 > l) e0 = l;
	int64_t s = s0 - 256, e = e0 + 256, n, k, os0, oe0, os1, oe1; char c; if(s < 0) s = 0; if(e > l) e = l;
	recover_UC_Read_sub_region(buf, s, e - s, rev, rref, id); 
	os0 = s0 - s; oe0 = e0 - s; n = e - s; os1 = os0; oe1 = oe0;
	c = buf[os0];
	for (k = os0 - 1; k >= 0 && buf[k] == c; k--); os1 = k + 1;

	c = buf[oe0-1];
	for (k = oe0; k < n && buf[k] == c; k++); oe1 = k;

	if(os1 != os0 || oe1 != oe0) {
		fprintf(stderr, "[M::%s]\to0::[%ld,%ld)\to1::[%ld,%ld)\n", __func__, os0 + s0, oe0 + s0, os1 + s0, oe1 + s0);
	}

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r14
movq %rcx, %rbx
movq %rdi, %r8
xorl %r13d, %r13d
testq %rdx, %rdx
cmovgq %rdx, %r13
movq 0x40(%rsp), %r15
cmpq %r14, %rcx
cmovgeq %r14, %rbx
leaq 0x100(%rbx), %rax
movl $0x101, %ecx            # imm = 0x101
cmpq %rcx, %rdx
movl $0x100, %ebp            # imm = 0x100
cmovgeq %rdx, %rbp
leaq -0x100(%rbp), %r12
cmpq %r14, %rax
cmovlq %rax, %r14
subq %r12, %r14
movl %esi, %eax
movzbl %r9b, %ecx
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movq %rax, %r9
callq 0x6c9e
movq %r13, %rcx
subq %r12, %rcx
subq %r12, %rbx
movb (%r15,%rcx), %dl
movq %rcx, %rax
sarq $0x3f, %rax
andq %rcx, %rax
movq %r13, %rsi
subq %rbp, %rsi
movl $0x101, %edi            # imm = 0x101
addq %rdi, %rsi
leaq -0x1(%rsi), %r9
testq %r9, %r9
jle 0xec694
cmpb %dl, -0x2(%r15,%rsi)
movq %r9, %rsi
je 0xec67f
jmp 0xec697
movq %rax, %r9
movb -0x1(%r15,%rbx), %dl
cmpq %r14, %rbx
movq %r14, %rax
cmovgq %rbx, %rax
movq %rbx, %rsi
cmpq %r14, %rsi
jge 0xec6bc
cmpb %dl, (%r15,%rsi)
jne 0xec6b9
incq %rsi
jmp 0xec6a9
movq %rsi, %rax
cmpq %rcx, %r9
jne 0xec6d5
cmpq %rbx, %rax
jne 0xec6d5
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x166904(%rip), %rdx    # 0x252fe0
movq (%rdx), %rdi
addq %r13, %rcx
addq %r13, %rbx
addq %r13, %r9
addq %r13, %rax
movq %rax, (%rsp)
leaq 0x100973(%rip), %rsi    # 0x1ed069
leaq 0x100991(%rip), %rdx    # 0x1ed08e
movq %rbx, %r8
xorl %eax, %eax
callq 0x22b0
jmp 0xec6c6
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: h_ec_lchain_re_gen_qry(ha_abuf_s*, unsigned long*, unsigned long*, unsigned long*, unsigned long*, unsigned long, unsigned long*, unsigned long*)
uint64_t h_ec_lchain_re_gen_qry(ha_abuf_t *ab, uint64_t *k, uint64_t *l, uint64_t *i, uint64_t *idx_a, uint64_t idx_n, uint64_t *tid, uint64_t *trev)
{
	while ((*k) <= ab->n_a) {
        if ((*k) == ab->n_a || (ab->a[*k].srt>>32) != (ab->a[*l].srt>>32)) {
			for (; ((*i) < idx_n) && ((idx_a[*i]>>32) < (ab->a[*l].srt>>32)); (*i)++);
			if(((*i) < idx_n) && ((ab->a[*l].srt>>32) == (idx_a[*i]>>32))) {
				(*tid) = ab->a[*l].srt>>33; (*trev) = (ab->a[*l].srt>>32) & 1; 
				
				return 1;
			}
            (*l) = (*k);
        }
		++(*k);
    }
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq 0x40(%rsp), %r10
movq 0x38(%rsp), %r11
movq (%rsi), %rbx
xorl %eax, %eax
cmpq (%rdi), %rbx
ja 0xed936
je 0xed8c9
movq 0x30(%rdi), %r14
imulq $0x18, %rbx, %r15
imulq $0x18, (%rdx), %r12
movq (%r14,%r12), %r12
xorq (%r14,%r15), %r12
shrq $0x20, %r12
je 0xed90b
movq (%rcx), %rbx
cmpq %r9, %rbx
jae 0xed905
movq (%r8,%rbx,8), %r12
movq %r12, %r13
shrq $0x20, %r13
movq 0x30(%rdi), %r14
imulq $0x18, (%rdx), %r15
movq (%r14,%r15), %r15
movq %r15, %rbp
shrq $0x20, %rbp
cmpl %ebp, %r13d
jae 0xed8fc
incq %rbx
movq %rbx, (%rcx)
jmp 0xed8cc
xorq %r15, %r12
shrq $0x20, %r12
je 0xed913
movq (%rsi), %rbx
movq %rbx, (%rdx)
incq %rbx
movq %rbx, (%rsi)
jmp 0xed8a4
shrq $0x21, %r15
movq %r15, (%r11)
imulq $0x18, (%rdx), %rax
movq (%r14,%rax), %rax
shrq $0x20, %rax
andl $0x1, %eax
movq %rax, (%r10)
movabsq $0x1, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: get_mz1(char const*, int, int, int, unsigned int, int, ha_abuf_s*, void const*, ha_pt_s*, int, kvec_t_u8_warp*, kvec_t_u64_warp*, ha_pt_s*, int, int, float, st_mt_t*, int, int, void*, unsigned long)
uint64_t get_mz1(const char *str, int len, int w, int k, uint32_t rid, int is_hpc, ha_abuf_t *ab, const void *hf, ha_pt_t *ha_idx, int sample_dist, kvec_t_u8_warp* k_flag, kvec_t_u64_warp* dbg_ct, ha_pt_t *pt, int min_freq, int32_t dp_min_len, float dp_e, st_mt_t *mt, int32_t ws, int32_t is_unique, void *km, uint64_t beg_i)
{
	ab->mz.n = beg_i;
	// get the list of anchors
	mz1_ha_sketch(str, len, w, k, 0, !(asm_opt.flag & HA_F_NO_HPC), &ab->mz, hf, asm_opt.mz_sample_dist, k_flag, dbg_ct, NULL, -1, asm_opt.dp_min_len, -1, mt, asm_opt.mz_rewin, 0, NULL);

	radix_sort_ha_mz1_v_srt(ab->mz.a + beg_i, ab->mz.a + ab->mz.n);

	if(ha_idx) {
		uint64_t i;

		if (ab->mz.m > ab->old_mz_m) {
			ab->old_mz_m = ab->mz.m;
			REALLOC(ab->seed, ab->old_mz_m);
		}

		for (i = 0; i < ab->mz.n; ++i) {
			ab->seed[i].a = NULL;
			ab->seed[i].n = ha_pt_cnt(ha_idx, ab->mz.a[i].x);
		}
	}

	return ab->mz.n;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq 0xb0(%rsp), %rbx
movq 0xa0(%rsp), %r15
movq 0xa8(%rsp), %rax
movaps 0xc0(%rsp), %xmm0
movq 0xe8(%rsp), %r8
movq 0x108(%rsp), %r14
leaq 0x18(%r15), %r12
movl %r14d, 0x18(%r15)
leaq 0x1659cc(%rip), %r10    # 0x253758
movl (%r10), %r9d
movl 0xa0(%r10), %r11d
notl %r9d
andl $0x1, %r9d
movl 0xa8(%r10), %ebp
movl 0x1f8(%r10), %r10d
movl %r11d, 0x48(%rsp)
movq %r8, 0x40(%rsp)
movl %r10d, 0x38(%rsp)
movups %xmm0, 0x18(%rsp)
andq $0x0, 0x58(%rsp)
movl %ebp, 0x10(%rsp)
andl $0x0, 0x50(%rsp)
movq %rax, 0x8(%rsp)
orl $-0x1, 0x30(%rsp)
movq %r12, (%rsp)
andq $0x0, 0x28(%rsp)
movss 0xfecb6(%rip), %xmm0    # 0x1ecaa0
xorl %r8d, %r8d
callq 0xdd581
movq 0x20(%r15), %rax
shlq $0x4, %r14
addq %rax, %r14
movl 0x18(%r15), %esi
shlq $0x4, %rsi
addq %rax, %rsi
movq %r14, %rdi
callq 0xe38fe
testq %rbx, %rbx
je 0xede6e
movl 0x1c(%r15), %esi
cmpl 0x10(%r15), %esi
jbe 0xede34
movl %esi, 0x10(%r15)
movq 0x28(%r15), %rdi
shlq $0x4, %rsi
callq 0x2370
movq %rax, 0x28(%r15)
xorl %r14d, %r14d
xorl %r13d, %r13d
movl (%r12), %eax
cmpq %rax, %r13
jae 0xede72
movq 0x28(%r15), %rax
andq $0x0, 0x8(%rax,%r14)
movq 0x20(%r15), %rax
movq (%rax,%r14), %rsi
movq %rbx, %rdi
callq 0xd4eec
movq 0x28(%r15), %rcx
movl %eax, (%rcx,%r14)
incq %r13
addq $0x10, %r14
jmp 0xede3a
movl (%r12), %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: get_pi_ec_chain(ha_abuf_s*, unsigned long, unsigned long, unsigned int, char*, unsigned long, unsigned long, unsigned long, overlap_region_alloc*, Candidates_list*, double, int, kvec_t_u8_warp*, kvec_t_u64_warp*, st_mt_t*, unsigned int*, unsigned int*, unsigned int, long, double, unsigned int, long, long, long, long, double, double)
void get_pi_ec_chain(ha_abuf_t *ab, uint64_t rid, uint64_t rl, uint32_t tid, char* ts, uint64_t tl, uint64_t mz_w, uint64_t mz_k, overlap_region_alloc *overlap_list, Candidates_list *cl, double bw_thres, 
								int apend_be, kvec_t_u8_warp* k_flag, kvec_t_u64_warp* dbg_ct, st_mt_t *sp, uint32_t *high_occ, uint32_t *low_occ, /**uint32_t is_accurate,**/ uint32_t gen_off, int64_t enable_mcopy, double mcopy_rate, uint32_t mcopy_khit_cut, 
								int64_t max_skip, int64_t max_iter, int64_t max_dis, int64_t quick_check, double chn_pen_gap, double chn_pen_skip)
{
	extern void *ha_flt_tab;
	extern ha_pt_t *ha_idx;
	uint64_t rn = ab->mz.n, tn, cn = 0;

	tn = get_mz1(ts, tl, mz_w, mz_k, 0, !(asm_opt.flag & HA_F_NO_HPC), ab, ha_flt_tab, NULL, asm_opt.mz_sample_dist, k_flag, dbg_ct, NULL, -1, asm_opt.dp_min_len, -1, sp, asm_opt.mz_rewin, 0, NULL, rn);

	cn = lchain_qgen_mcopy_fast_re0(ab, ha_idx, ab->mz.a, rn, ab->mz.a + rn, tn - rn, tid, cl, high_occ, low_occ);

	if(cn) {
		lchain_qgen_mcopy_fast_re1(cl, cl->length - cn, overlap_list, rid, rl, tl, apend_be, max_skip, max_iter, max_dis, chn_pen_gap, chn_pen_skip, bw_thres, quick_check, gen_off, enable_mcopy, mcopy_rate, mcopy_khit_cut);
	}

	ab->mz.n = rn;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movsd %xmm3, 0x18(%rsp)
movsd %xmm2, 0x8(%rsp)
movsd %xmm1, 0x20(%rsp)
movsd %xmm0, 0x10(%rsp)
movq %r9, %r15
movl %ecx, %r12d
movq %rdx, (%rsp)
movq %rsi, %r13
movq %rdi, %rbx
movq 0x78(%rsp), %rbp
movl 0x60(%rsp), %edx
movl 0x68(%rsp), %ecx
movups 0x88(%rsp), %xmm0
movq 0x98(%rsp), %rax
movl 0x18(%rdi), %r14d
leaq 0x166551(%rip), %rsi    # 0x254430
movq (%rsi), %rsi
subq $0x70, %rsp
movq %r14, 0x68(%rsp)
movq %rax, 0x48(%rsp)
movups %xmm0, 0x20(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdi, (%rsp)
andq $0x0, 0x10(%rsp)
movq %r8, %rdi
movl %r15d, %esi
callq 0xedd3f
addq $0x70, %rsp
movq 0x20(%rbx), %rdx
movq %r14, %r8
shlq $0x4, %r8
addq %rdx, %r8
subq %r14, %rax
movl %r12d, %ecx
subq $0x20, %rsp
movaps 0xc0(%rsp), %xmm0
movups %xmm0, 0x10(%rsp)
movq %rbp, 0x8(%rsp)
movq %rcx, (%rsp)
movq %rbx, %rdi
movq %r14, %rcx
movq %rax, %r9
callq 0xe6e4a
addq $0x20, %rsp
testq %rax, %rax
je 0xedfd1
movl 0xc0(%rsp), %r11d
movl 0xb0(%rsp), %r12d
movl 0x80(%rsp), %r10d
movq 0x70(%rsp), %rdx
movl 0x8(%rbp), %esi
subl %eax, %esi
movq %rbp, %rdi
movl %r13d, %ecx
movq (%rsp), %r8
movq %r15, %r9
movsd 0x8(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
pushq %r11
pushq 0xc0(%rsp)
pushq %r12
pushq 0xf8(%rsp)
pushq 0xf8(%rsp)
pushq 0xf8(%rsp)
pushq 0xf8(%rsp)
pushq %r10
callq 0xe9d05
addq $0x40, %rsp
movl %r14d, 0x18(%rbx)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/anchor.cpp
// Function: reset_k_mer_hit(k_mer_hit*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long*)
void inline reset_k_mer_hit(k_mer_hit *a, uint64_t a_n, uint64_t xl, uint64_t yl, uint64_t rev, uint64_t *nid)
{
	uint64_t z, han = a_n>>1; k_mer_hit *ai, *aj, ka;
	if(rev) {
		for (z = 0; z < han; z++) {
			ai = &(a[z]); aj = &(a[a_n-z-1]); 
			ka = (*ai); (*ai) = (*aj); (*aj) = ka;

			ai->self_offset = xl-ai->self_offset-1;
			ai->offset = yl-ai->offset-1;

			aj->self_offset = xl-aj->self_offset-1;
			aj->offset = yl-aj->offset-1;
			if(nid) ai->readID = aj->readID = (*nid);
		}
		if(a_n&1) {
			a[z].self_offset = xl-a[z].self_offset-1;
			a[z].offset = yl-a[z].offset-1;
			if(nid) a[z].readID = (*nid);
		}
	} else if(nid) {
		for (z = 0; z < a_n; z++) a[z].readID = (*nid);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
testq %r8, %r8
je 0xee5ad
movq %rsi, %rax
shrq %rax
movq %rsi, %r8
shlq $0x4, %r8
addq %rdi, %r8
addq $-0x10, %r8
movl $0x7fffffff, %r10d      # imm = 0x7FFFFFFF
movl $0x80000000, %r11d      # imm = 0x80000000
movq %rdi, %rbx
movq %rax, %r14
subq $0x1, %r14
jb 0xee56b
movups (%rbx), %xmm0
movaps %xmm0, -0x18(%rsp)
movups (%r8), %xmm0
movups %xmm0, (%rbx)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r8)
movl 0x4(%rbx), %ebp
movl 0x8(%rbx), %r15d
notl %r15d
addl %edx, %r15d
movl %r15d, 0x8(%rbx)
notl %ebp
addl %ecx, %ebp
movl %ebp, 0x4(%rbx)
movl 0x4(%r8), %ebp
movl 0x8(%r8), %r15d
notl %r15d
addl %edx, %r15d
notl %ebp
addl %ecx, %ebp
movl %r15d, 0x8(%r8)
movl %ebp, 0x4(%r8)
testq %r9, %r9
je 0xee561
movl (%r9), %ebp
andl %r10d, %ebp
movl (%r8), %r15d
andl %r11d, %r15d
orl %ebp, %r15d
movl %r15d, (%r8)
movl (%rbx), %r15d
andl %r11d, %r15d
orl %ebp, %r15d
movl %r15d, (%rbx)
addq $-0x10, %r8
addq $0x10, %rbx
jmp 0xee4ee
testb $0x1, %sil
je 0xee5d9
shlq $0x4, %rax
movl 0x4(%rdi,%rax), %esi
movl 0x8(%rdi,%rax), %r8d
notl %r8d
addl %r8d, %edx
notl %esi
addl %esi, %ecx
movl %edx, 0x8(%rdi,%rax)
movl %ecx, 0x4(%rdi,%rax)
testq %r9, %r9
je 0xee5d9
addq %rax, %rdi
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
andl (%r9), %eax
movl $0x80000000, %ecx       # imm = 0x80000000
andl (%rdi), %ecx
orl %eax, %ecx
movl %ecx, (%rdi)
jmp 0xee5d9
testq %r9, %r9
je 0xee5d9
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl $0x80000000, %ecx       # imm = 0x80000000
subq $0x1, %rsi
jb 0xee5d9
movl (%r9), %edx
andl %eax, %edx
movl (%rdi), %r8d
andl %ecx, %r8d
orl %edx, %r8d
movl %r8d, (%rdi)
addq $0x10, %rdi
jmp 0xee5bc
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/./Levenshtein_distance.h
// Function: pop_trace_bp_f(asg16_v*, unsigned int, unsigned short*, unsigned short*, unsigned short*, unsigned int*)
inline uint32_t pop_trace_bp_f(asg16_v *res, uint32_t i, uint16_t *c, uint16_t *bq, uint16_t *bt, uint32_t *len)
{
	(*c) = (res->a[i]>>14); (*bq) = (*bt) = (uint16_t)-1;
	if((*c) == 2 || (*c) == 3) {
		(*bt) = ((res->a[i]>>12)&3); 
		(*len) = (res->a[i]&(0xfff));
	} else if((*c) == 1) {
		(*bt) = ((res->a[i]>>12)&3);
		(*bq) = ((res->a[i]>>10)&3);
		(*len) = (res->a[i]&(0x3ff));
	} else {
		(*len) = (res->a[i]&(0x3fff));
	}

	uint32_t sl; uint16_t sbq, sbt;
	for (i++; (i < res->n) && ((*c) == (res->a[i]>>14)); i++) {
		sbq = sbt = (uint16_t)-1;
		if((*c) == 2 || (*c) == 3) {
			sbt = ((res->a[i]>>12)&3); 
			sl = (res->a[i]&(0xfff));
		} else if((*c) == 1) {
			sbt = ((res->a[i]>>12)&3);
			sbq = ((res->a[i]>>10)&3);
			sl = (res->a[i]&(0x3ff));
		} else {
			sl = (res->a[i]&(0x3fff));
		}
		if((*bq) != sbq || (*bt) != sbt) break;
		(*len) += sl;
	}
	if((*c) == 3) {
		(*bq) = (*bt); (*bt) = (uint16_t)-1;
	}
	return i;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
movl %esi, %eax
movq 0x10(%rdi), %r10
movl %esi, %r11d
movzwl (%r10,%r11,2), %esi
shrl $0xe, %esi
movw %si, (%rdx)
orw $-0x1, (%r8)
movq %rcx, %rsi
orw $-0x1, (%rcx)
movzwl (%rdx), %ecx
leal -0x2(%rcx), %ebx
cmpl $0x2, %ebx
jae 0xeeae7
movw $0xfff, %bx             # imm = 0xFFF
movw $0xc, %cx
movq %r8, %r14
jmp 0xeeb0a
movw $0x3fff, %bx            # imm = 0x3FFF
cmpl $0x1, %ecx
jne 0xeeb18
movzwl (%r10,%r11,2), %ecx
shrl $0xc, %ecx
andl $0x3, %ecx
movw %cx, (%r8)
movw $0x3ff, %bx             # imm = 0x3FF
movw $0xa, %cx
movq %rsi, %r14
movzwl (%r10,%r11,2), %ebp
shrl %cl, %ebp
andl $0x3, %ebp
movw %bp, (%r14)
andw (%r10,%r11,2), %bx
movzwl %bx, %ecx
movl %ecx, (%r9)
movq (%rdi), %rdi
movzwl (%rdx), %edx
incl %eax
leal -0x2(%rdx), %r11d
movl %eax, %eax
cmpq %rax, %rdi
jbe 0xeeba2
movzwl (%r10,%rax,2), %ebx
movl %ebx, %ebp
shrl $0xe, %ebp
cmpl %edx, %ebp
jne 0xeeba2
cmpl $0x2, %r11d
jae 0xeeb5a
movl %ebx, %ebp
shrl $0xc, %ebp
andl $0x3, %ebp
andl $0xfff, %ebx            # imm = 0xFFF
jmp 0xeeb84
cmpl $0x1, %edx
jne 0xeeb7a
movl %ebx, %ebp
shrl $0xc, %ebp
andl $0x3, %ebp
movl %ebx, %r14d
shrl $0xa, %r14d
andl $0x3, %r14d
andl $0x3ff, %ebx            # imm = 0x3FF
jmp 0xeeb8a
andl $0x3fff, %ebx           # imm = 0x3FFF
movw $0xffff, %bp            # imm = 0xFFFF
movl $0xffff, %r14d          # imm = 0xFFFF
movzwl (%rsi), %r15d
cmpl %r15d, %r14d
jne 0xeeba2
cmpw %bp, (%r8)
jne 0xeeba2
addl %ebx, %ecx
movl %ecx, (%r9)
incl %eax
jmp 0xeeb2f
cmpl $0x3, %edx
jne 0xeebb3
movzwl (%r8), %ecx
movw %cx, (%rsi)
orw $-0x1, (%r8)
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/extract.cpp
// Function: ha_extract_print_list(All_reads const*, int, char const*)
void ha_extract_print_list(const All_reads *rs, int n_rounds, const char *o)
{
	int i, n;
	char **list;
	list = gv_read_list(o, &n);
	ha_extract_print(rs, n_rounds, n, list);
	for (i = 0; i < n; ++i) free(list[i]);
	free(list);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %r15
leaq 0x4(%rsp), %r14
movq %rdx, %rdi
movq %r14, %rsi
callq 0xeec1d
movq %rax, %rbx
movl (%r14), %r14d
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
movq %rax, %rcx
callq 0xeef8c
xorl %r15d, %r15d
testl %r14d, %r14d
cmovlel %r15d, %r14d
cmpq %r15, %r14
je 0xefd97
movq (%rbx,%r15,8), %rdi
callq 0x2220
incq %r15
jmp 0xefd84
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x2220
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/./khashl.h
// Function: h64_m_hash(hm64_t_m_bucket_t)
static kh_inline khint_t kh_hash_uint64(khint64_t key) {
	key = ~key + (key << 21);
	key = key ^ key >> 24;
	key = (key + (key << 3)) + (key << 8);
	key = key ^ key >> 14;
	key = (key + (key << 2)) + (key << 4);
	key = key ^ key >> 28;
	key = key + (key << 31);
	return (khint_t)key;
}

// Assembly:
movq %rdi, %rax
notq %rax
shlq $0x15, %rdi
addq %rax, %rdi
movq %rdi, %rax
shrq $0x18, %rax
xorq %rdi, %rax
imulq $0x109, %rax, %rax      # imm = 0x109
movq %rax, %rcx
shrq $0xe, %rcx
xorq %rax, %rcx
imulq $0x15, %rcx, %rax
movq %rax, %rcx
shrq $0x1c, %rcx
xorl %eax, %ecx
imull $0x80000001, %ecx, %eax # imm = 0x80000001
retq
nopl (%rax)
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: init_ha_ug_index_opt(ha_ug_index*, ma_ug_t*, int, pldat_t*, unsigned long, unsigned long, unsigned long)
void init_ha_ug_index_opt(ha_ug_index* idx, ma_ug_t *ug, int k, pldat_t* p, uint64_t up_occ, 
uint64_t low_occ, uint64_t thread_num)
{
    uint64_t i, n;
    for (idx->uID_bits=1; (uint64_t)(1<<idx->uID_bits)<(uint64_t)ug->u.n; idx->uID_bits++);
    idx->pos_bits = 64 - idx->uID_bits - 1;
    idx->uID_mode = (((uint64_t)-1) << (64-idx->uID_bits))>>1;
    idx->pos_mode = ((uint64_t)-1) >> (64-idx->pos_bits);
    idx->rev_mode = ((uint64_t)1) << 63;
    idx->ug = ug;
    idx->k = k;
    idx->pre = HIC_COUNTER_BITS;
    idx->tot = 1 << idx->pre;
    idx->tot_pos = 0;
    ///idx->up_bound = 1;
    idx->up_bound = up_occ;
    idx->low_bound = low_occ;
    CALLOC(idx->idx_buf, idx->tot);
    for (i = 0; i < idx->tot; i++)
    {
        idx->idx_buf[i].h = hc_pt_init();
    }
    for (i = n = 0; i < ug->u.n; i++)
    {
        n += ug->u.a[i].len;
    }
    n = n << 3;
    p->h = idx;
    p->buf_bytes = n>>7;
    CALLOC(p->cnt, idx->tot);
    CALLOC(p->buf, idx->tot);
    for (i = 0; i < idx->tot; i++)
    {
        kv_init(p->cnt[i].a);
        kv_init(p->buf[i].a);
    }
    p->n_thread = thread_num;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq (%rsi), %rbp
pushq $0x1
popq %rax
xorl %esi, %esi
pushq $0x1
popq %rdi
movl %edi, %r10d
movl %eax, %ecx
shll %cl, %r10d
movslq %r10d, %rcx
incq %rax
decq %rsi
cmpq %rcx, %rbp
ja 0xf39bf
movq %rsi, %rcx
negq %rcx
movq %rcx, 0x18(%r14)
leaq 0x3f(%rsi), %rcx
movq %rcx, 0x28(%r14)
pushq $-0x1
popq %rdi
movq %rdi, %r10
movl %esi, %ecx
shlq %cl, %r10
shrq %r10
movl %eax, %ecx
shrq %cl, %rdi
movq %r10, 0x20(%r14)
movq %rdi, 0x30(%r14)
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
movq %rax, 0x38(%r14)
movq %r15, (%r14)
movslq %edx, %rax
movq %rax, 0x40(%r14)
movq $0xc, 0x50(%r14)
movq $0x1000, 0x58(%r14)     # imm = 0x1000
andq $0x0, 0x60(%r14)
movq %r8, 0x68(%r14)
movq %r9, 0x70(%r14)
pushq $0x20
popq %rsi
movl $0x1000, %edi           # imm = 0x1000
callq 0x2120
movq %rax, %r12
movq %rax, 0x78(%r14)
xorl %r13d, %r13d
cmpq $0x20000, %r13          # imm = 0x20000
je 0xf3a66
callq 0x120359
movq %rax, (%r12,%r13)
addq $0x20, %r13
jmp 0xf3a4e
xorl %ecx, %ecx
xorl %eax, %eax
subq $0x1, %rbp
jb 0xf3a86
movq 0x10(%r15), %rdx
movl (%rdx,%rcx), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
addq %rdx, %rax
addq $0x28, %rcx
jmp 0xf3a6a
movq %r14, 0x10(%rbx)
shrq $0x4, %rax
movabsq $0x1ffffffffffffff, %rcx # imm = 0x1FFFFFFFFFFFFFF
andq %rax, %rcx
movq %rcx, 0x8(%rbx)
pushq $0x18
popq %r14
movl $0x1000, %edi           # imm = 0x1000
movq %r14, %rsi
callq 0x2120
movq %rax, 0x18(%rbx)
movl $0x1000, %edi           # imm = 0x1000
movq %r14, %rsi
callq 0x2120
movq %rax, 0x20(%rbx)
movq 0x40(%rsp), %rax
movq %rax, 0x28(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: test_unitig_index(ha_ug_index*, ma_ug_t*)
void test_unitig_index(ha_ug_index* idx, ma_ug_t *ug)
{
    double index_time = yak_realtime();
    uint32_t i, j;
    ma_utg_t *u = NULL;
    hc_pt1_t *h = NULL;
    idx->ug = ug;
    for (i = 0; i < idx->ug->u.n; i++)
    {
        u = &(idx->ug->u.a[i]);
        if(u->m == 0) continue;
        test_hc_pt1(u->s, u->len, i, idx);
    }

    for (i = 0; i < idx->tot; i++)
    {
        h = &(idx->idx_buf[i]);
        for (j = 0; j < h->n; j++)
        {
            if(h->a[j] != (uint64_t)-1)
            {
                fprintf(stderr, "ERROR j\n");
            }
        }
        
    }

    fprintf(stderr, "[M::%s::%.3f] ==> Test has been passed\n", __func__, yak_realtime()-index_time);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %rbx
callq 0xefea7
movsd %xmm0, (%rsp)
movq %r15, (%rbx)
xorl %r14d, %r14d
movl %r14d, %r14d
cmpq %r14, (%r15)
jbe 0xf3d26
movq 0x10(%r15), %rax
imulq $0x28, %r14, %rcx
cmpl $0x0, 0xc(%rax,%rcx)
je 0xf3d21
addq %rcx, %rax
movq 0x20(%rax), %rdi
movl (%rax), %esi
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
movq %r14, %rdx
movq %rbx, %rcx
callq 0xf3add
movq (%rbx), %r15
incl %r14d
jmp 0xf3ced
xorl %r13d, %r13d
pushq $0x8
popq %r15
pushq $0x1
popq %r12
movl %r13d, %r13d
cmpq %r13, 0x58(%rbx)
jbe 0xf3d84
movq %r13, %rbp
shlq $0x5, %rbp
addq 0x78(%rbx), %rbp
xorl %r14d, %r14d
movl %r14d, %r14d
cmpq %r14, 0x8(%rbp)
jbe 0xf3d7f
movq 0x10(%rbp), %rax
cmpq $-0x1, (%rax,%r14,8)
jne 0xf3d61
incl %r14d
jmp 0xf3d48
movq 0x15f278(%rip), %rax    # 0x252fe0
movq (%rax), %rcx
leaq 0xf943f(%rip), %rdi     # 0x1ed1b1
movq %r15, %rsi
movq %r12, %rdx
callq 0x2410
jmp 0xf3d5c
incl %r13d
jmp 0xf3d31
movq 0x15f255(%rip), %rax    # 0x252fe0
movq (%rax), %rbx
callq 0xefea7
subsd (%rsp), %xmm0
leaq 0xf941b(%rip), %rsi     # 0x1ed1ba
leaq 0xf943c(%rip), %rdx     # 0x1ed1e2
movq %rbx, %rdi
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x22b0
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: hc_pt_t_gen_single(hc_pt1_t*, unsigned long*, unsigned long*)
void hc_pt_t_gen_single(hc_pt1_t* pt, uint64_t* up_bound, uint64_t* low_bound)
{
    khint_t k;
    uint64_t c;

    if(up_bound || low_bound)
    {
        for (k = 0; k != kh_end(pt->h); ++k) {
            if (kh_exist(pt->h, k)) {
                if((up_bound && kh_val(pt->h, k) > (*up_bound)) || 
                            (low_bound && kh_val(pt->h, k) < (*low_bound)))
                {
                    kh_val(pt->h, k) = 0;
                    kh_key(pt->h, k) = (kh_key(pt->h, k)&HIC_KEY_MODE)|
                                (kh_val(pt->h, k)<HIC_MAX_COUNT?kh_val(pt->h, k):HIC_MAX_COUNT);
                }
            }
        }
    }
    

    for (k = 0, pt->n = 0; k != kh_end(pt->h); ++k) {
        if (kh_exist(pt->h, k)) {
            c = kh_val(pt->h, k);
            kh_val(pt->h, k) = pt->n;
            pt->n += c;
            pt->end = k;
        }
    }
    CALLOC(pt->a, pt->n);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
movq 0x10(%rax), %r8
movq %rsi, %rcx
orq %rdx, %rcx
pushq $0x1
popq %r9
je 0xf3e46
xorl %edi, %edi
movl $0x0, %r10d
testq %r8, %r8
je 0xf3dea
movb (%rax), %cl
movl %r9d, %r10d
shll %cl, %r10d
cmpl %r10d, %edi
je 0xf3e46
movq 0x8(%rax), %rcx
movl %edi, %r10d
shrl $0x5, %r10d
movl (%rcx,%r10,4), %ecx
btl %edi, %ecx
jae 0xf3e42
movl %edi, %ecx
testq %rsi, %rsi
je 0xf3e1b
movq %rcx, %r10
shlq $0x4, %r10
movq 0x8(%r8,%r10), %r10
cmpq (%rsi), %r10
ja 0xf3e31
testq %rdx, %rdx
je 0xf3e42
movq %rcx, %r10
shlq $0x4, %r10
movq 0x8(%r8,%r10), %r10
cmpq (%rdx), %r10
jae 0xf3e42
shlq $0x4, %rcx
andq $0x0, 0x8(%r8,%rcx)
andw $0xf000, (%r8,%rcx)     # imm = 0xF000
incl %edi
jmp 0xf3dd7
andq $0x0, 0x8(%rbx)
xorl %edi, %edi
xorl %edx, %edx
movl $0x0, %esi
testq %r8, %r8
je 0xf3e60
movb (%rax), %cl
movl %r9d, %esi
shll %cl, %esi
cmpl %esi, %edx
je 0xf3e96
movq 0x8(%rax), %rcx
movl %edx, %esi
shrl $0x5, %esi
movl (%rcx,%rsi,4), %ecx
btl %edx, %ecx
jae 0xf3e92
movl %edx, %ecx
shlq $0x4, %rcx
movq 0x8(%r8,%rcx), %rsi
addq %rdi, %rsi
movq %rdi, 0x8(%r8,%rcx)
movq %rsi, 0x8(%rbx)
movl %edx, 0x18(%rbx)
movq %rsi, %rdi
incl %edx
jmp 0xf3e4f
pushq $0x8
popq %rsi
callq 0x2120
movq %rax, 0x10(%rbx)
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: destory_hc_pt_index(ha_ug_index*)
void destory_hc_pt_index(ha_ug_index* idx)
{
    if(idx->idx_buf)
    {
        uint64_t i = 0;
        for (i = 0; i < idx->tot; i++)
        {
            if(idx->idx_buf[i].a) free(idx->idx_buf[i].a);
            if(idx->idx_buf[i].h) hc_pt_destroy(idx->idx_buf[i].h);
        }
        free(idx->idx_buf);
    }
}

// Assembly:
cmpq $0x0, 0x78(%rdi)
je 0xf4578
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %r12d, %r12d
movq 0x78(%rbx), %rdi
cmpq 0x58(%rbx), %r12
jae 0xf4568
movq 0x10(%rdi,%r15), %rdi
callq 0x2220
movq 0x78(%rbx), %rax
movq (%rax,%r15), %r14
testq %r14, %r14
je 0xf455f
movq 0x10(%r14), %rdi
callq 0x2220
movq 0x8(%r14), %rdi
callq 0x2220
movq %r14, %rdi
callq 0x2220
incq %r12
addq $0x20, %r15
jmp 0xf4524
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x2220
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: hc_pt_t_gen(ha_ug_index*, pldat_t*)
void hc_pt_t_gen(ha_ug_index* idx, pldat_t* pl)
{
    if(pl == NULL)
    {
        uint64_t i;
        for (i = 0; i < idx->tot; i++)
        {
            hc_pt_t_gen_single(&(idx->idx_buf[i]), &(idx->up_bound), &(idx->low_bound));
        }
    }
    else
    {
        kt_for(pl->n_thread, worker_for_sort, pl, pl->h->tot);
    }
}

// Assembly:
testq %rsi, %rsi
je 0xf4598
movq %rsi, %rdx
movl 0x28(%rsi), %edi
movq 0x10(%rsi), %rax
movq 0x58(%rax), %rcx
leaq 0x4a(%rip), %rsi        # 0xf45dd
jmp 0xc67c0
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
leaq 0x68(%rdi), %r14
leaq 0x70(%rdi), %r15
xorl %r12d, %r12d
xorl %r13d, %r13d
cmpq 0x58(%rbx), %r13
jae 0xf45d3
movq 0x78(%rbx), %rdi
addq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0xf3dbe
incq %r13
addq $0x20, %r12
jmp 0xf45b2
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: worker_for_sort(void*, long, int)
static void worker_for_sort(void *data, long i, int tid) // callback for kt_for()
{
    pldat_t *pl = (pldat_t*)data;
    hc_pt1_t *h = &(pl->h->idx_buf[i]);
    khint_t k;
    uint64_t beg, cnt = 0;
    uint64_t* pos_list;
    for (k = 0; k != kh_end(h->h); ++k) {
        if (kh_exist(h->h, k)) {
            beg = kh_val(h->h, k);
            pos_list = h->a + beg;
            if((kh_key(h->h, k)&HIC_MAX_COUNT)<HIC_MAX_COUNT)
            {
                cnt = kh_key(h->h, k)&HIC_MAX_COUNT;
            }
            else if(k == h->end)
            {
                cnt = h->n - beg;
            }
            else
            {
                for (k++; k != kh_end(h->h); ++k)
                {
                    if (kh_exist(h->h, k)) 
                    {
                        cnt = kh_val(h->h, k) - beg;
                        break;
                    }
                }
            }
            if(cnt > 0) radix_sort_hc_pos(pos_list, pos_list+cnt);
        }
    }

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq 0x10(%rdi), %rax
shlq $0x5, %rbx
addq 0x78(%rax), %rbx
xorl %r12d, %r12d
movl $0xfff, %r14d           # imm = 0xFFF
pushq $0x1
popq %rbp
xorl %r15d, %r15d
movq (%rbx), %rdx
movq 0x10(%rdx), %rax
movl $0x0, %esi
testq %rax, %rax
je 0xf461a
movb (%rdx), %cl
movl %ebp, %esi
shll %cl, %esi
cmpl %esi, %r15d
je 0xf46ba
movq 0x8(%rdx), %rsi
movl %r15d, %ecx
shrl $0x5, %ecx
movl (%rsi,%rcx,4), %ecx
btl %r15d, %ecx
jae 0xf46b2
movl %r15d, %ecx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %rdi
movq (%rax,%rcx), %rcx
andq %r14, %rcx
cmpq %r14, %rcx
jne 0xf4694
cmpl 0x18(%rbx), %r15d
jne 0xf465a
movq 0x8(%rbx), %r12
jmp 0xf468f
testq %rax, %rax
je 0xf4669
movb (%rdx), %cl
movl %ebp, %r8d
shll %cl, %r8d
jmp 0xf466c
xorl %r8d, %r8d
incl %r15d
cmpl %r8d, %r15d
je 0xf4697
movl %r15d, %ecx
shrl $0x5, %ecx
movl (%rsi,%rcx,4), %ecx
btl %r15d, %ecx
jae 0xf465a
movl %r15d, %ecx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %r12
subq %rdi, %r12
jmp 0xf4697
movq %rcx, %r12
testq %r12, %r12
je 0xf46af
shlq $0x3, %rdi
addq 0x10(%rbx), %rdi
leaq (%rdi,%r12,8), %rsi
callq 0xf2b44
jmp 0xf46b2
xorl %r12d, %r12d
incl %r15d
jmp 0xf4603
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: debug_hash_value(char*, unsigned long, unsigned long)
uint64_t debug_hash_value(char *r, uint64_t end, uint64_t k_mer)
{
    uint64_t i;
    uint64_t x[4], mask = (1ULL<<k_mer) - 1, shift = k_mer - 1, skip;
    for (i = end + 1 - k_mer, x[0] = x[1] = x[2] = x[3] = 0; i <= end; i++)
    {
        int c = seq_nt4_table[(uint8_t)r[i]];
        ///c = 00, 01, 10, 11
        if (c < 4) { // not an "N" base
            ///x[0] & x[1] are the forward k-mer
            ///x[2] & x[3] are the reverse complementary k-mer
            x[0] = (x[0] << 1 | (c&1))  & mask;
            x[1] = (x[1] << 1 | (c>>1)) & mask;
            x[2] = x[2] >> 1 | (uint64_t)(1 - (c&1))  << shift;
            x[3] = x[3] >> 1 | (uint64_t)(1 - (c>>1)) << shift;
        }
    }

    return hc_hash_long(x, &skip, k_mer);
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
pushq $-0x1
popq %rax
movl %edx, %ecx
shlq %cl, %rax
notq %rax
leaq -0x1(%rdx), %rcx
movq %rsi, %r9
subq %rdx, %r9
incq %r9
xorl %r8d, %r8d
leaq 0xf6ac8(%rip), %r11     # 0x1ebb00
pushq $0x1
popq %rbx
xorl %r10d, %r10d
xorl %r15d, %r15d
xorl %r14d, %r14d
cmpq %rsi, %r9
ja 0xf50a1
movzbl (%rdi,%r9), %r12d
movzbl (%r11,%r12), %r12d
cmpq $0x3, %r12
ja 0xf509c
movl %r12d, %r13d
andl $0x1, %r13d
leaq (,%r14,2), %r14
addq %r13, %r14
andq %rax, %r14
addq %r15, %r15
shrl %r12d
movq %r12, %rbp
orq %r15, %rbp
xorl $0x1, %r13d
shlq %cl, %r13
andq %rax, %rbp
shrq %r10
movl %ebx, %r15d
subl %r12d, %r15d
shlq %cl, %r15
orq %r13, %r10
shrq %r8
orq %r15, %r8
movq %rbp, %r15
incq %r9
jmp 0xf5044
leaq 0x10(%rsp), %rdi
movq %r14, (%rdi)
movq %r15, 0x8(%rdi)
movq %r10, 0x10(%rdi)
movq %r8, 0x18(%rdi)
leaq 0x8(%rsp), %rsi
callq 0x120a71
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/hic.cpp
// Function: get_5_3_list(ha_ug_index*, s_hit*, unsigned long, s_hit**, unsigned long*, s_hit**, unsigned long*)
void get_5_3_list(ha_ug_index* idx, s_hit* p, uint64_t cnt, s_hit** l5, uint64_t* l5_occ, 
s_hit** l3, uint64_t* l3_occ)
{
    (*l5) = (*l3) = NULL;
    (*l5_occ) = (*l3_occ) = 0;
    uint64_t i, j, rev, uID, ref_p, self_p, eLen, tLen, cur_beg, num;
    uint64_t beg_5 = (uint64_t)-1;
    for (j = 1, i = 0, num = 0; j <= cnt; ++j)
    {
        if(j == cnt || p[j].off_cnt != p[i].off_cnt)
        {
            interpret_pos((ha_ug_index*)idx, &p[i], &rev, &uID, &ref_p, &self_p, &eLen, &tLen);
            ///cur_end = self_p;
            cur_beg = self_p + 1 - tLen;
            num++;
            if(cur_beg <= beg_5)
            {
                (*l3_occ) = (*l5_occ); (*l3) = (*l5);
                beg_5 = cur_beg; (*l5_occ) = j - i; (*l5) = p + i;
            }
            else
            {
                (*l3_occ) = j - i; (*l3) = p + i;
            }
            i = j;///must
        }
    }

    ///if(num > 2) fprintf(stderr, "ERROR: get_5_3_list\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %r9, (%rsp)
andq $0x0, (%r9)
movq %rcx, 0x8(%rsp)
andq $0x0, (%rcx)
movq 0x90(%rsp), %rax
andq $0x0, (%rax)
movq %rdx, 0x20(%rsp)
movq %r8, 0x10(%rsp)
andq $0x0, (%r8)
movq %rsi, %r13
movq %rdi, 0x18(%rsp)
leaq 0x18(%rsi), %r15
pushq $-0x1
popq %rbx
pushq $0x1
popq %rbp
xorl %r12d, %r12d
cmpq 0x20(%rsp), %rbp
ja 0xf6010
je 0xf5f73
movq (%r15), %rax
movq %r12, %rcx
shlq $0x4, %rcx
cmpq 0x8(%r13,%rcx), %rax
je 0xf6004
movq %r12, %r14
shlq $0x4, %r14
addq %r13, %r14
movq 0x18(%rsp), %rdi
movq %r14, %rsi
leaq 0x50(%rsp), %rdx
leaq 0x48(%rsp), %rcx
leaq 0x40(%rsp), %r8
leaq 0x30(%rsp), %r9
leaq 0x28(%rsp), %rax
pushq %rax
leaq 0x40(%rsp), %rax
pushq %rax
callq 0x120d2b
popq %rax
popq %rcx
movq 0x30(%rsp), %rax
subq 0x28(%rsp), %rax
incq %rax
movq 0x90(%rsp), %rcx
movq (%rsp), %rdx
cmpq %rbx, %rax
ja 0xf5ff5
movq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movq 0x90(%rsp), %rdx
movq %rcx, (%rdx)
movq 0x8(%rsp), %rdi
movq (%rdi), %rcx
movq (%rsp), %rdx
movq %rcx, (%rdx)
movq %rsi, %rcx
movq %rdi, %rdx
movq %rax, %rbx
movq %rbp, %rax
subq %r12, %rax
movq %rax, (%rcx)
movq %r14, (%rdx)
movq %rbp, %r12
incq %rbp
addq $0x10, %r15
jmp 0xf5f51
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq