// File: chhylp123[P]hifiasm/gfa_ut.cpp
// Function: destroy_ul_resolve_t(ul_resolve_t*)
void destroy_ul_resolve_t(ul_resolve_t *uidx)
{
    ma_ug_destroy(uidx->l1_ug);
    uint32_t k;
    for (k = 0; k < uidx->str_b.n_thread; k++) {
        destroy_integer_t(&(uidx->str_b.buf[k]));
    }
    free(uidx->str_b.buf);

    for (k = 0; k < uidx->pstr.str.n; k++) {
        free(uidx->pstr.str.a[k].a);
    }
    free(uidx->pstr.str.a); 
    free(uidx->pstr.occ.a); 
    free(uidx->pstr.idx.a);

    
    free(uidx->uovl.telo);
    for (k = 0; k < uidx->uovl.n; k++) {
        free(uidx->uovl.a[k].a);
    }
    free(uidx->uovl.a);
    free(uidx->uovl.item_idx);
    asg_destroy(uidx->uovl.i_g);
    

    free(uidx->uovl.cc.uc); 
    free(uidx->uovl.cc.hc); 
    free(uidx->uovl.cc.raw_uc); 
    if(uidx->uovl.cc.iug_a) {
        for (k = 0; k < uidx->uovl.i_ug->u.n; k++) free(uidx->uovl.cc.iug_a[k].a);
    }
    free(uidx->uovl.cc.iug_a); 
    free(uidx->uovl.cc.iug_idx); 
    free(uidx->uovl.cc.iug_b);

    asg_destroy(uidx->uovl.bg.bg); 
    free(uidx->uovl.bg.w_n); 
    free(uidx->uovl.bg.a_n);
    ma_ug_destroy(uidx->uovl.i_ug);
    usg_t_destroy(uidx->uovl.h_usg);

    free(uidx);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0xcd6f0
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpq 0x1e0(%rcx), %rax
jae 0x378bb8
movq -0x8(%rbp), %rax
movq 0x1d8(%rax), %rdi
movl -0xc(%rbp), %eax
imulq $0x328, %rax, %rax      # imm = 0x328
addq %rax, %rdi
callq 0x378850
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x378b80
movq -0x8(%rbp), %rax
movq 0x1d8(%rax), %rdi
callq 0x2210
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpq 0x1c0(%rcx), %rax
jae 0x378c08
movq -0x8(%rbp), %rax
movq 0x1d0(%rax), %rax
movl -0xc(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rdi
callq 0x2210
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x378bcf
movq -0x8(%rbp), %rax
movq 0x1d0(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x1b8(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x1a0(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x2a8(%rax), %rdi
callq 0x2210
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpq 0x1f8(%rcx), %rax
jae 0x378c87
movq -0x8(%rbp), %rax
movq 0x1f0(%rax), %rax
movl -0xc(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rdi
callq 0x2210
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x378c4f
movq -0x8(%rbp), %rax
movq 0x1f0(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x220(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x228(%rax), %rdi
callq 0xcd170
movq -0x8(%rbp), %rax
movq 0x248(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x250(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x258(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
cmpq $0x0, 0x260(%rax)
je 0x378d3a
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x230(%rcx), %rcx
cmpq (%rcx), %rax
jae 0x378d38
movq -0x8(%rbp), %rax
movq 0x260(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rdi
callq 0x2210
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x378cfc
jmp 0x378d3a
movq -0x8(%rbp), %rax
movq 0x260(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x268(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x270(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x278(%rax), %rdi
callq 0xcd170
movq -0x8(%rbp), %rax
movq 0x280(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x288(%rax), %rdi
callq 0x2210
movq -0x8(%rbp), %rax
movq 0x230(%rax), %rdi
callq 0xcd6f0
movq -0x8(%rbp), %rax
movq 0x240(%rax), %rdi
callq 0x378a60
movq -0x8(%rbp), %rdi
callq 0x2210
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)