// File: /workspace/github_cpp_makefile_star2_O2/chhylp123[P]hifiasm/inter.cpp
// Function: gen_contig_self(ug_opt_t const*, asg_t*, ma_ug_t*, scaf_res_t*, ma_ug_t*, kv_u_trans_t*, unsigned long, bubble_type*, kv_u_trans_t*, unsigned int)
void gen_contig_self(const ug_opt_t *uopt, asg_t *sg, ma_ug_t *db, scaf_res_t *db_sc, ma_ug_t *gfa, kv_u_trans_t *ta, uint64_t soff, bubble_type *bu, kv_u_trans_t *res, uint32_t is_exact)
{
	mg_idxopt_t opt; uldat_t sl; int32_t cutoff; 
	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, ((is_exact)?(0.333333):(asm_opt.ul_error_rate)), asm_opt.ul_error_rate_low, asm_opt.ul_error_rate_hpc, asm_opt.ul_ec_round);
	ul_idx_t *uu = gen_ul_idx_t_sc(db, sg, db_sc, gfa->u.n);
	init_uldat_t(&sl, NULL, NULL, &opt, CHUNK_SIZE, asm_opt.thread_num, uopt, uu); sl.rg = sg; sl.ug = db;

	work_ctg_path_trans_self(&sl, sg, db, db_sc, gfa, ta, soff, is_exact, bu, res); 

	uu->ug = NULL; destroy_ul_idx_t(uu);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %r9, 0x38(%rsp)
movq %r8, %r13
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %rbp
movq %rdi, 0x30(%rsp)
movl 0x208(%rsp), %r14d
callq 0x6b0f
leaq 0xb75bb(%rip), %rbx     # 0x253758
movl 0xd0(%rbx), %esi
movq %rbx, %rdi
callq 0x3430
movl (%rbx), %ecx
movl 0xe8(%rbx), %eax
notl %ecx
andl $0x1, %ecx
movsd 0x228(%rbx), %xmm0
movaps %xmm0, %xmm1
cmpq $0x0, %r14
je 0x19c1d1
movsd 0x473d7(%rip), %xmm1    # 0x1e35a8
movl 0x240(%rbx), %edx
leaq 0x130(%rsp), %r14
movl %eax, 0x14(%r14)
movl %ecx, 0x10(%r14)
movaps 0x557f2(%rip), %xmm2    # 0x1f19e0
movaps %xmm2, (%r14)
movaps 0x55757(%rip), %xmm2    # 0x1f1950
movups %xmm2, 0x28(%r14)
movsd 0x5575a(%rip), %xmm2    # 0x1f1960
movsd %xmm2, 0x50(%r14)
movaps 0x5575d(%rip), %xmm2    # 0x1f1970
movups %xmm2, 0x18(%r14)
movaps 0x55761(%rip), %xmm2    # 0x1f1980
movups %xmm2, 0x38(%r14)
movabsq $0x500000006, %rcx      # imm = 0x500000006
movq %rcx, 0x48(%r14)
movl $0x3f4ccccd, 0x58(%r14) # imm = 0x3F4CCCCD
movl %eax, 0x80(%r14)
movsd %xmm0, 0x60(%r14)
movsd %xmm1, 0x68(%r14)
movups 0x230(%rbx), %xmm0
movaps %xmm0, 0x70(%r14)
movl %edx, 0x84(%r14)
movq (%r13), %rcx
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x199ebd
movq %rbp, 0x20(%rsp)
movq %rax, %rbp
movq %r15, 0x28(%rsp)
movslq 0x7c(%rbx), %r15
leaq 0x78(%rsp), %rbx
movl $0xb0, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20e0
xorps %xmm0, %xmm0
movaps %xmm0, -0x38(%rbx)
movq %r14, -0x28(%rbx)
movq $0x3b9aca00, 0x18(%rbx) # imm = 0x3B9ACA00
movq %r15, 0x20(%rbx)
movq %rbp, -0x8(%rbx)
movq 0x30(%rsp), %rax
movq %rax, -0x10(%rbx)
movq 0x20(%rsp), %rax
movq %rax, -0x18(%rbx)
movq %r12, -0x20(%rbx)
movups 0x1f8(%rsp), %xmm0
movups %xmm0, 0x10(%rsp)
movl 0x208(%rsp), %eax
movq %rax, 0x8(%rsp)
movq 0x1f0(%rsp), %rax
movq %rax, (%rsp)
leaq 0x40(%rsp), %rdi
movq %r12, %rdx
movq 0x28(%rsp), %rcx
movq %r13, %r8
movq 0x38(%rsp), %r9
callq 0x191d2b
andq $0x0, (%rbp)
movq %rbp, %rdi
callq 0x199f0f
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq