// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/inter.cpp
// Function: clean_contain_g(ug_opt_t const*, asg_t*, unsigned int)
uint32_t clean_contain_g(const ug_opt_t *uopt, asg_t *sg, uint32_t push_trans)
{
	mg_idxopt_t opt; uldat_t sl; int32_t cutoff, f = 0;
	init_aux_table(); ha_opt_update_cov(&asm_opt, asm_opt.hom_cov);
	cutoff = asm_opt.max_n_chain;
	init_mg_opt(&opt, !(asm_opt.flag&HA_F_NO_HPC), 19, 10, cutoff, asm_opt.max_n_chain, asm_opt.ul_error_rate, asm_opt.ul_error_rate, asm_opt.ul_error_rate_low, asm_opt.ul_error_rate_hpc, asm_opt.ul_ec_round);
	init_uldat_t(&sl, NULL, NULL, &opt, CHUNK_SIZE, asm_opt.thread_num, uopt, NULL); sl.rg = sg;
	
	if(push_trans) repush_contain_trans_archs(&sl);
	if(work_ul_gchains_consensus(&sl)) {
		free(UL_INF.ridx.idx.a); free(UL_INF.ridx.occ.a); memset(&(UL_INF.ridx), 0, sizeof(UL_INF.ridx));
		gen_ul_vec_rid_t(&UL_INF, &R_INF, NULL);
		// fprintf(stderr, "+[M::%s::]\n", __func__);
		kt_for(sl.n_thread, update_ovlp_src, &sl, R_INF.total_reads);
		// fprintf(stderr, "-[M::%s::]\n", __func__);
		kt_for(sl.n_thread, update_ovlp_src_bl, &sl, R_INF.total_reads);
		clean_contain_g0(&sl);
		f = 1;
	}
	if(push_trans) asg_arc_del_trans_ul(sg, sl.uopt->gap_fuzz);
	return f;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movl %edx, 0xc(%rsp)
movq %rsi, %rbp
movq %rdi, %r14
callq 0x6b0f
leaq 0xb7e05(%rip), %r15     # 0x253758
movl 0xd0(%r15), %esi
movq %r15, %rdi
callq 0x3430
movl (%r15), %eax
movl 0xe8(%r15), %ecx
notl %eax
andl $0x1, %eax
movsd 0x238(%r15), %xmm0
movl 0x240(%r15), %edx
leaq 0x100(%rsp), %r13
movl %ecx, 0x14(%r13)
movl %eax, 0x10(%r13)
movaps 0x56048(%rip), %xmm1    # 0x1f19e0
movaps %xmm1, (%r13)
movaps 0x55fac(%rip), %xmm1    # 0x1f1950
movups %xmm1, 0x28(%r13)
movsd 0x55faf(%rip), %xmm1    # 0x1f1960
movsd %xmm1, 0x50(%r13)
movaps 0x55fb2(%rip), %xmm1    # 0x1f1970
movups %xmm1, 0x18(%r13)
movaps 0x55fb6(%rip), %xmm1    # 0x1f1980
movups %xmm1, 0x38(%r13)
movabsq $0x500000006, %rax      # imm = 0x500000006
movq %rax, 0x48(%r13)
movl $0x3f4ccccd, 0x58(%r13) # imm = 0x3F4CCCCD
movl %ecx, 0x80(%r13)
movups 0x228(%r15), %xmm1
movlps %xmm1, 0x60(%r13)
movups %xmm1, 0x68(%r13)
movsd %xmm0, 0x78(%r13)
movl %edx, 0x84(%r13)
movslq 0x7c(%r15), %rbx
leaq 0x28(%rsp), %r12
xorl %r15d, %r15d
movl $0xd0, %edx
movq %r12, %rdi
xorl %esi, %esi
callq 0x20e0
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%r12)
movq %r13, -0x8(%r12)
movq $0x3b9aca00, 0x38(%r12) # imm = 0x3B9ACA00
movq %rbx, 0x40(%r12)
movq %rbp, %rbx
movl 0xc(%rsp), %ebp
movq %r14, 0x10(%r12)
movq %rbx, 0x8(%r12)
testl %ebp, %ebp
je 0x19ba61
leaq 0x10(%rsp), %rdi
callq 0x19b833
leaq 0x10(%rsp), %rdi
callq 0x191ff7
testq %rax, %rax
je 0x19baee
leaq 0xb88a1(%rip), %r14     # 0x254318
movq 0x28(%r14), %rdi
callq 0x2220
movq 0x40(%r14), %rdi
callq 0x2220
xorps %xmm0, %xmm0
movups %xmm0, 0x38(%r14)
movups %xmm0, 0x28(%r14)
movups %xmm0, 0x18(%r14)
leaq 0xb878e(%rip), %r15     # 0x254230
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x193ac1
leaq 0x10(%rsp), %r14
movl 0x58(%r14), %edi
movq 0x50(%r15), %rcx
leaq -0xb40(%rip), %rsi      # 0x19af83
movq %r14, %rdx
callq 0xc67c0
movl 0x58(%r14), %edi
movq 0x50(%r15), %rcx
leaq -0xab9(%rip), %rsi      # 0x19b021
movq %r14, %rdx
callq 0xc67c0
movq %r14, %rdi
callq 0x19b0f7
pushq $0x1
popq %r15
testl %ebp, %ebp
je 0x19bb02
movq 0x38(%rsp), %rax
movl 0x50(%rax), %esi
movq %rbx, %rdi
callq 0x70377
movl %r15d, %eax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq