// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: output_trio_mmhap(asg_t*, ma_sub_t*, char*, ma_hit_t_alloc*, ma_hit_t_alloc*, long long, float, long long, R_to_U*, float, float, int, int, long long, bub_label_t*, ug_opt_t*, ma_ug_t*, mmhap_t*, unsigned int)
void output_trio_mmhap(asg_t *sg, ma_sub_t* coverage_cut, char* output_file_name, ma_hit_t_alloc* sources, 
ma_hit_t_alloc* reverse_sources, long long tipsLen, float tip_drop_ratio, long long stops_threshold, R_to_U* ruIndex, 
float chimeric_rate, float drop_ratio, int max_hang, int min_ovlp, long long gap_fuzz, bub_label_t* b_mask_t, ug_opt_t *opt, 
ma_ug_t *mm_ug, mmhap_t *rh, uint32_t n_hap)
{
    uint32_t i; char *fp = NULL; MALLOC(fp, 100);
    memset(R_INF.trio_flag, 0, sizeof((*(R_INF.trio_flag)))*sg->n_seq);
    for (i = 0; i < n_hap; i++){
        sprintf(fp, "hap%u", i+1);
        update_trio_mmhap(i, mm_ug, rh, sg, n_hap);
        output_trio_unitig_graph(sg, coverage_cut, output_file_name, FATHER, sources, reverse_sources, tipsLen, tip_drop_ratio, 
        stops_threshold, ruIndex, chimeric_rate, drop_ratio, max_hang, min_ovlp, gap_fuzz, 0, b_mask_t, fp, NULL, NULL);
    }
    free(fp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movl 0x58(%rbp), %eax
movq 0x50(%rbp), %rax
movq 0x48(%rbp), %rax
movq 0x40(%rbp), %rax
movq 0x38(%rbp), %rax
movq 0x30(%rbp), %rax
movl 0x28(%rbp), %eax
movl 0x20(%rbp), %eax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movq %rdx, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %r8, -0x50(%rbp)
movq %r9, -0x58(%rbp)
movss %xmm0, -0x5c(%rbp)
movss %xmm1, -0x60(%rbp)
movss %xmm2, -0x64(%rbp)
movq $0x0, -0x70(%rbp)
movl $0x64, %edi
callq 0x2270
movq %rax, -0x70(%rbp)
leaq 0x2b7733(%rip), %rax    # 0x3c52d0
movq 0x28(%rax), %rdi
movq -0x30(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %edx
shlq $0x0, %rdx
xorl %esi, %esi
callq 0x2100
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl 0x58(%rbp), %eax
jae 0x10dca8
movq -0x70(%rbp), %rdi
movl -0x68(%rbp), %edx
addl $0x1, %edx
leaq 0x2799a7(%rip), %rsi    # 0x387587
movb $0x0, %al
callq 0x2050
movl -0x68(%rbp), %edi
movq 0x48(%rbp), %rsi
movq 0x50(%rbp), %rdx
movq -0x30(%rbp), %rcx
movl 0x58(%rbp), %r8d
callq 0x10d750
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %r8
movq -0x50(%rbp), %r9
movq -0x58(%rbp), %r13
movss -0x5c(%rbp), %xmm0
movq 0x10(%rbp), %r12
movq 0x18(%rbp), %r15
movss -0x60(%rbp), %xmm1
movss -0x64(%rbp), %xmm2
movl 0x20(%rbp), %r14d
movl 0x28(%rbp), %ebx
movq 0x30(%rbp), %rax
movl %eax, %r11d
movq 0x38(%rbp), %r10
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x1, %ecx
xorl %eax, %eax
xorl %eax, %eax
movq -0x78(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl $0x0, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movq $0x0, 0x50(%rsp)
callq 0x100cf0
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x10dbc3
movq -0x70(%rbp), %rdi
callq 0x2210
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)