// File: /workspace/github_cpp_makefile_star2_O1/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, 0x40(%rsp)
movq %r8, %r13
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %rbp
movq %rdi, 0x38(%rsp)
movl 0x208(%rsp), %r14d
callq 0x3366f
leaq 0x261ca8(%rip), %rbx    # 0x28a758
movl 0xd0(%rbx), %esi
movq %rbx, %rdi
callq 0x2f59
movl (%rbx), %ecx
movl 0xe8(%rbx), %eax
notl %ecx
andl $0x1, %ecx
movsd 0x228(%rbx), %xmm0
movaps %xmm0, %xmm1
cmpq $0x0, %r14
je 0x28ae4
movsd 0x1fca74(%rip), %xmm1   # 0x225558
movups 0x230(%rbx), %xmm2
movl 0x240(%rbx), %edx
movabsq $0x130000000a, %rsi     # imm = 0x130000000A
leaq 0x48(%rsp), %r14
movq %rsi, (%r14)
movl %eax, 0x14(%r14)
movl %ecx, 0x10(%r14)
movabsq $0x7a12000002710, %rcx  # imm = 0x7A12000002710
movq %rcx, 0x8(%r14)
movabsq $0x271000000014, %rcx   # imm = 0x271000000014
movq %rcx, 0x18(%r14)
movabsq $0x3f0000003e428f5c, %rcx # imm = 0x3F0000003E428F5C
movq %rcx, 0x50(%r14)
movabsq $0x271000000019, %rcx   # imm = 0x271000000019
movq %rcx, 0x28(%r14)
movaps 0x20acf6(%rip), %xmm3   # 0x233840
movups %xmm3, 0x30(%r14)
movabsq $0xb00000005, %rcx      # imm = 0xB00000005
movq %rcx, 0x20(%r14)
movaps 0x20acec(%rip), %xmm3   # 0x233850
movups %xmm3, 0x40(%r14)
movl $0x3f4ccccd, 0x58(%r14) # imm = 0x3F4CCCCD
movl %eax, 0x80(%r14)
movsd %xmm0, 0x60(%r14)
movsd %xmm1, 0x68(%r14)
movups %xmm2, 0x70(%r14)
movl %edx, 0x84(%r14)
movq (%r13), %rcx
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1dbc68
movq %rbp, 0x28(%rsp)
movq %rax, %rbp
movq %r15, 0x30(%rsp)
movslq 0x7c(%rbx), %r15
leaq 0xd0(%rsp), %rbx
movl $0xe8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20e0
movq %r14, 0x10(%rbx)
movq $0x3b9aca00, 0x50(%rbx) # imm = 0x3B9ACA00
movq %r15, 0x58(%rbx)
movq %rbp, 0x30(%rbx)
movq 0x38(%rsp), %rax
movq %rax, 0x28(%rbx)
movq 0x28(%rsp), %rax
movq %rax, 0x20(%rbx)
movq %r12, 0x18(%rbx)
movups 0x1f8(%rsp), %xmm0
movups %xmm0, 0x10(%rsp)
movl 0x208(%rsp), %eax
movq %rax, 0x8(%rsp)
movq 0x1f0(%rsp), %rax
movq %rax, (%rsp)
movq %rbx, %rdi
movq %r12, %rdx
movq 0x30(%rsp), %rcx
movq %r13, %r8
movq 0x40(%rsp), %r9
callq 0x25c22
andq $0x0, (%rbp)
movq %rbp, %rdi
callq 0x1dbcbe
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq