// File: chhylp123[P]hifiasm/gfa_ut.cpp
// Function: shrink_ul0(all_ul_t*, ul_str_t*, unsigned long, integer_t*, ma_ug_t*)
void shrink_ul0(all_ul_t *uls, ul_str_t *str, uint64_t id, integer_t *buf, ma_ug_t *ug)
{
    uint32_t k, c_k, p_k, cv, pv, bl, i; uc_block_t *xi, *yi; buf->u.n = 0; nid_t *np = NULL;
    asg_arc_t *av; uint32_t nv, s, e, m, d, mm, is_conn; uint64_t *z; ul_vec_t *x;
    if(str->cn < 2) return;
    for (k = 0, bl = 0, c_k = p_k = pv = (uint32_t)-1; k < str->cn; k++) {
        xi = &(uls->a[id].bb.a[str->a[k]>>32]); is_conn = 0;
        c_k = k; cv = ((uint32_t)str->a[k])^1;
        assert(((xi->hid<<1)+xi->rev)==((uint32_t)str->a[k]));
        if(p_k != (uint32_t)-1) {
            if(xi->pidx == (str->a[p_k]>>32)) {
                av = asg_arc_a(ug->g, cv); nv = asg_arc_n(ug->g, cv);
                for (i = 0; i < nv; i++) {
                    if(av[i].del) continue;
                    if(av[i].v == pv) break;
                }
                if(i < nv) {
                    s = (uint32_t)av[i].ul;
                    if(s == xi->pdis) {
                        is_conn = 1;
                    } else {
                        d = (s>=xi->pdis?s-xi->pdis:xi->pdis-s);
                        mm = MAX(s, xi->pdis);
                        if((d <= (mm*0.08)) || (d <= 512)) is_conn = 1;
                    }
                }
            } else if(xi->pidx == (uint32_t)-1) {
                is_conn = 1;
            }
        }
        if(is_conn) {
            is_conn = 0; assert(k);
            yi = &(uls->a[id].bb.a[str->a[k-1]>>32]);
            if((xi->qs >= yi->qs) && (xi->qe >= yi->qe)) is_conn = 1;
        }
        if(is_conn) {
            bl++;
        } else {
            if(bl > 0) {
                kv_pushp(uint64_t, buf->u, &z);
                (*z) = k - 1 - bl; (*z) <<= 32; (*z) += bl + 1;
            }
            bl = 0;
        }
        p_k = c_k; pv = cv;
    }

    if(bl > 0) {
        kv_pushp(uint64_t, buf->u, &z);
        (*z) = k - 1 - bl; (*z) <<= 32; (*z) += bl + 1;
    }
    // fprintf(stderr, "[M::%s::] buf->u.n::%u, str->cn::%u\n", __func__, buf->u.n, str->cn);
    if(buf->u.n <= 0) {
        str->cn = str->n = 0;
    } else if(buf->u.n > 0) {
        uint32_t pidx, aidx, pdis;
        for (i = 0; i + 1 < buf->u.n; i++) {
            s = (buf->u.a[i]>>32); e = s + ((uint32_t)buf->u.a[i]); 
            ///new id
            kv_pushp(nid_t, uls->nid, &np);
            np->n = uls->nid.a[id].n; MALLOC(np->a, np->n+1);
            memcpy(np->a, uls->nid.a[id].a, np->n); np->a[np->n] = '\0';
            ///new ovlps
            kv_pushp(ul_vec_t, *uls, &x); memset(x, 0, sizeof(*x));
            MALLOC(x->bb.a, e - s); x->bb.n = x->bb.m = e - s;

            for (k = s, m = 0; k < e; k++, m++) {
                pidx = uls->a[id].bb.a[str->a[k]>>32].pidx; 
                aidx = uls->a[id].bb.a[str->a[k]>>32].aidx; 
                pdis = uls->a[id].bb.a[str->a[k]>>32].pdis;
                x->bb.a[m] = uls->a[id].bb.a[str->a[k]>>32];
                if(k == s) {
                    x->bb.a[m].pidx = x->bb.a[m].pdis = (uint32_t)-1;
                } else if(pidx != (uint32_t)-1) {
                    x->bb.a[m].pidx = m - 1; x->bb.a[m].pdis = pdis;
                }
                if(k + 1 == e) {
                    x->bb.a[m].aidx = (uint32_t)-1;
                } else if(aidx != (uint32_t)-1) {
                    x->bb.a[m].aidx = m + 1;
                }
            }
            x->bb.n = m;
            assert(x->bb.n > 1);

            shrink_1b(ug, &(x->bb.a[0]), ((x->bb.n>=2)?&(x->bb.a[1]):(NULL)), 1);
            shrink_1b(ug, &(x->bb.a[x->bb.n-1]), ((x->bb.n>=2)?&(x->bb.a[x->bb.n-2]):(NULL)), 0);
            
            d = x->bb.a[0].qs;
            for (k = 0; k < x->bb.n; k++) {
                x->bb.a[k].qs -= d; x->bb.a[k].qe -= d;
            }
            x->rlen = x->bb.a[x->bb.n-1].qe;
            renew_ul_vec_t(x, ug);
        }

        ///the last one; update in-place
        s = (buf->u.a[i]>>32); e = s + ((uint32_t)buf->u.a[i]); x = &(uls->a[id]);
        for (k = s, m = 0; k < e; k++, m++) {
            pidx = x->bb.a[str->a[k]>>32].pidx; 
            aidx = x->bb.a[str->a[k]>>32].aidx; 
            pdis = x->bb.a[str->a[k]>>32].pdis;
            x->bb.a[m] = x->bb.a[str->a[k]>>32];
            if(k == s) {
                x->bb.a[m].pidx = x->bb.a[m].pdis = (uint32_t)-1;
            } else if(pidx != (uint32_t)-1) {
                x->bb.a[m].pidx = m - 1; x->bb.a[m].pdis = pdis;
            }
            if(k + 1 == e) {
                x->bb.a[m].aidx = (uint32_t)-1;
            } else if(aidx != (uint32_t)-1) {
                x->bb.a[m].aidx = m + 1;
            }
        }
        x->bb.n = m;
        assert(x->bb.n > 1);
        shrink_1b(ug, &(x->bb.a[0]), ((x->bb.n>=2)?&(x->bb.a[1]):(NULL)), 1);
        shrink_1b(ug, &(x->bb.a[x->bb.n-1]), ((x->bb.n>=2)?&(x->bb.a[x->bb.n-2]):(NULL)), 0);
        d = x->bb.a[0].qs;
        for (k = 0; k < x->bb.n; k++) {
            x->bb.a[k].qs -= d; x->bb.a[k].qe -= d;
        }
        x->rlen = x->bb.a[x->bb.n-1].qe;
        renew_ul_vec_t(x, ug);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq $0x0, 0x90(%rax)
movq $0x0, -0x60(%rbp)
movq -0x10(%rbp), %rax
movl 0x18(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
cmpl $0x2, %eax
jge 0x33d95c
jmp 0x33e977
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x40(%rbp)
movl $0xffffffff, -0x3c(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x34(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x30(%rbp) # imm = 0xFFFFFFFF
movl -0x2c(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0x18(%rcx), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %eax
jae 0x33ddce
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
xorl $0x1, %eax
movl %eax, -0x38(%rbp)
movq -0x50(%rbp), %rax
movl (%rax), %eax
shll %eax
movq -0x50(%rbp), %rcx
movb 0x20(%rcx), %cl
shrb $0x5, %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
cmpl %ecx, %eax
jne 0x33da1d
jmp 0x33da3c
leaq 0x5a7a4(%rip), %rdi     # 0x3981c8
leaq 0x5878e(%rip), %rsi     # 0x3961b9
movl $0x1e46, %edx           # imm = 0x1E46
leaq 0x5ad8e(%rip), %rcx     # 0x3987c5
callq 0x2130
cmpl $-0x1, -0x34(%rbp)
je 0x33dbee
movq -0x50(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x34(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
cmpq %rcx, %rax
jne 0x33dbd6
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0x38(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x38(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x6c(%rbp)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x33dafc
movq -0x68(%rbp), %rax
movl -0x44(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x33dad7
jmp 0x33daf1
movq -0x68(%rbp), %rax
movl -0x44(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpl -0x3c(%rbp), %eax
jne 0x33daef
jmp 0x33dafc
jmp 0x33daf1
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x33dab4
movl -0x44(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jae 0x33dbd4
movq -0x68(%rbp), %rax
movl -0x44(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movq -0x50(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jne 0x33db37
movl $0x1, -0x84(%rbp)
jmp 0x33dbd2
movl -0x70(%rbp), %eax
movq -0x50(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jb 0x33db55
movl -0x70(%rbp), %eax
movq -0x50(%rbp), %rcx
subl 0x18(%rcx), %eax
movl %eax, -0xa8(%rbp)
jmp 0x33db65
movq -0x50(%rbp), %rax
movl 0x18(%rax), %eax
subl -0x70(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movl %eax, -0x7c(%rbp)
movl -0x70(%rbp), %eax
movq -0x50(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jb 0x33db85
movl -0x70(%rbp), %eax
movl %eax, -0xac(%rbp)
jmp 0x33db92
movq -0x50(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0x80(%rbp)
movl -0x7c(%rbp), %eax
cvtsi2sd %rax, %xmm1
movl -0x80(%rbp), %eax
cvtsi2sd %rax, %xmm0
movsd 0x446dd(%rip), %xmm2    # 0x382290
mulsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x33dbc6
cmpl $0x200, -0x7c(%rbp)     # imm = 0x200
ja 0x33dbd0
movl $0x1, -0x84(%rbp)
jmp 0x33dbd2
jmp 0x33dbd4
jmp 0x33dbec
movq -0x50(%rbp), %rax
cmpl $-0x1, 0x14(%rax)
jne 0x33dbea
movl $0x1, -0x84(%rbp)
jmp 0x33dbec
jmp 0x33dbee
cmpl $0x0, -0x84(%rbp)
je 0x33dc8f
movl $0x0, -0x84(%rbp)
cmpl $0x0, -0x2c(%rbp)
je 0x33dc0d
jmp 0x33dc2c
leaq 0x59ff2(%rip), %rdi     # 0x397c06
leaq 0x5859e(%rip), %rsi     # 0x3961b9
movl $0x1e5d, %edx           # imm = 0x1E5D
leaq 0x5ab9e(%rip), %rcx     # 0x3987c5
callq 0x2130
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
subl $0x1, %edx
movl %edx, %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x58(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jb 0x33dc8d
movq -0x50(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x58(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jb 0x33dc8d
movl $0x1, -0x84(%rbp)
jmp 0x33dc8f
cmpl $0x0, -0x84(%rbp)
je 0x33dca6
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x33ddb4
cmpl $0x0, -0x40(%rbp)
jbe 0x33ddad
jmp 0x33dcb2
movq -0x20(%rbp), %rax
movq 0x90(%rax), %rax
movq -0x20(%rbp), %rcx
cmpq 0x98(%rcx), %rax
jne 0x33dd3c
movq -0x20(%rbp), %rax
cmpq $0x0, 0x98(%rax)
je 0x33dcef
movq -0x20(%rbp), %rax
movq 0x98(%rax), %rax
shlq %rax
movq %rax, -0xb8(%rbp)
jmp 0x33dcfd
movl $0x2, %eax
movq %rax, -0xb8(%rbp)
jmp 0x33dcfd
movq -0xb8(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x98(%rax)
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x98(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0xa0(%rax)
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rax
movq -0x20(%rbp), %rdx
movq 0x90(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x90(%rdx)
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movl -0x2c(%rbp), %eax
subl $0x1, %eax
subl -0x40(%rbp), %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movq %rcx, (%rax)
movq -0x90(%rbp), %rax
movq (%rax), %rcx
shlq $0x20, %rcx
movq %rcx, (%rax)
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x90(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movl $0x0, -0x40(%rbp)
movl -0x30(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x33d97f
cmpl $0x0, -0x40(%rbp)
jbe 0x33ded5
jmp 0x33ddda
movq -0x20(%rbp), %rax
movq 0x90(%rax), %rax
movq -0x20(%rbp), %rcx
cmpq 0x98(%rcx), %rax
jne 0x33de64
movq -0x20(%rbp), %rax
cmpq $0x0, 0x98(%rax)
je 0x33de17
movq -0x20(%rbp), %rax
movq 0x98(%rax), %rax
shlq %rax
movq %rax, -0xc0(%rbp)
jmp 0x33de25
movl $0x2, %eax
movq %rax, -0xc0(%rbp)
jmp 0x33de25
movq -0xc0(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x98(%rax)
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x98(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0xa0(%rax)
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rax
movq -0x20(%rbp), %rdx
movq 0x90(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x90(%rdx)
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movl -0x2c(%rbp), %eax
subl $0x1, %eax
subl -0x40(%rbp), %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movq %rcx, (%rax)
movq -0x90(%rbp), %rax
movq (%rax), %rcx
shlq $0x20, %rcx
movq %rcx, (%rax)
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x90(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x90(%rax)
ja 0x33df06
movq -0x10(%rbp), %rax
movq $0x0, (%rax)
movq -0x10(%rbp), %rax
movl 0x18(%rax), %ecx
andl $0x80000000, %ecx       # imm = 0x80000000
orl $0x0, %ecx
movl %ecx, 0x18(%rax)
jmp 0x33e977
movq -0x20(%rbp), %rax
cmpq $0x0, 0x90(%rax)
jbe 0x33e975
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movq -0x20(%rbp), %rcx
cmpq 0x90(%rcx), %rax
jae 0x33e561
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rax
movl -0x44(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movq -0x20(%rbp), %rcx
movq 0xa0(%rcx), %rcx
movl -0x44(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
addl %ecx, %eax
movl %eax, -0x74(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x33dfdc
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x33df9b
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xc8(%rbp)
jmp 0x33dfa9
movl $0x2, %eax
movq %rax, -0xc8(%rbp)
jmp 0x33dfa9
movq -0xc8(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x4, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x60(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x60(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %edi
shlq $0x0, %rdi
callq 0x2270
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, (%rax)
movq -0x60(%rbp), %rax
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movq -0x60(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edx
callq 0x2180
movq -0x60(%rbp), %rax
movq (%rax), %rax
movq -0x60(%rbp), %rcx
movl 0x8(%rcx), %ecx
movb $0x0, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x58(%rcx), %rax
jne 0x33e0ea
movq -0x8(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x33e0ac
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
shlq %rax
movq %rax, -0xd0(%rbp)
jmp 0x33e0ba
movl $0x2, %eax
movq %rax, -0xd0(%rbp)
jmp 0x33e0ba
movq -0xd0(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x8(%rbp), %rax
imulq $0x58, 0x58(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq -0x8(%rbp), %rdx
movq 0x50(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x50(%rdx)
imulq $0x58, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
xorl %esi, %esi
movl $0x58, %edx
callq 0x2100
movl -0x74(%rbp), %eax
subl -0x70(%rbp), %eax
movl %eax, %eax
imulq $0x24, %rax, %rdi
callq 0x2270
movq %rax, %rcx
movq -0x98(%rbp), %rax
movq %rcx, 0x30(%rax)
movl -0x74(%rbp), %eax
subl -0x70(%rbp), %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x98(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x98(%rbp), %rax
movq %rcx, 0x20(%rax)
movl -0x70(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x78(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x74(%rbp), %eax
jae 0x33e364
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movl %eax, -0x9c(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movl %eax, -0xa0(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x18(%rax), %eax
movl %eax, -0xa4(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
imulq $0x24, %rax, %rax
addq %rax, %rsi
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0x78(%rbp), %eax
imulq $0x24, %rax, %rax
addq %rax, %rdi
movl $0x24, %edx
callq 0x2180
movl -0x2c(%rbp), %eax
cmpl -0x70(%rbp), %eax
jne 0x33e2b2
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x18(%rax) # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x14(%rax) # imm = 0xFFFFFFFF
jmp 0x33e2f9
cmpl $-0x1, -0x9c(%rbp)
je 0x33e2f7
movl -0x78(%rbp), %ecx
subl $0x1, %ecx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x14(%rax)
movl -0xa4(%rbp), %ecx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x18(%rax)
jmp 0x33e2f9
movl -0x2c(%rbp), %eax
addl $0x1, %eax
cmpl -0x74(%rbp), %eax
jne 0x33e322
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
jmp 0x33e34b
cmpl $-0x1, -0xa0(%rbp)
je 0x33e349
movl -0x78(%rbp), %ecx
addl $0x1, %ecx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x1c(%rax)
jmp 0x33e34b
jmp 0x33e34d
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x33e172
movl -0x78(%rbp), %eax
movl %eax, %ecx
movq -0x98(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x98(%rbp), %rax
cmpq $0x1, 0x20(%rax)
jbe 0x33e384
jmp 0x33e3a3
leaq 0x5a484(%rip), %rdi     # 0x39880f
leaq 0x57e27(%rip), %rsi     # 0x3961b9
movl $0x1e91, %edx           # imm = 0x1E91
leaq 0x5a427(%rip), %rcx     # 0x3987c5
callq 0x2130
movq -0x28(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xd8(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x2, 0x20(%rax)
jb 0x33e3e6
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
addq $0x24, %rax
movq %rax, -0xe8(%rbp)
jmp 0x33e3f1
xorl %eax, %eax
movq %rax, -0xe8(%rbp)
jmp 0x33e3f1
movq -0xd8(%rbp), %rsi
movq -0xe0(%rbp), %rdi
movq -0xe8(%rbp), %rdx
movl $0x1, %ecx
callq 0x33d2d0
movq -0x28(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x1, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xf0(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x2, 0x20(%rax)
jb 0x33e47b
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x2, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x100(%rbp)
jmp 0x33e486
xorl %eax, %eax
movq %rax, -0x100(%rbp)
jmp 0x33e486
movq -0xf0(%rbp), %rsi
movq -0xf8(%rbp), %rdi
movq -0x100(%rbp), %rdx
xorl %ecx, %ecx
callq 0x33d2d0
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl 0x4(%rax), %eax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x98(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jae 0x33e515
movl -0x7c(%rbp), %edx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
movl -0x7c(%rbp), %edx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x8(%rax)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x33e4ba
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x1, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x98(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x98(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x33d510
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x33df1f
movq -0x20(%rbp), %rax
movq 0xa0(%rax), %rax
movl -0x44(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movq -0x20(%rbp), %rcx
movq 0xa0(%rcx), %rcx
movl -0x44(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
addl %ecx, %eax
movl %eax, -0x74(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
imulq $0x58, -0x18(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movl -0x70(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x78(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x74(%rbp), %eax
jae 0x33e786
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movl %eax, -0x9c(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movl %eax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x2c(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x18(%rax), %eax
movl %eax, -0xa4(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x2c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
imulq $0x24, %rax, %rax
addq %rax, %rsi
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0x78(%rbp), %eax
imulq $0x24, %rax, %rax
addq %rax, %rdi
movl $0x24, %edx
callq 0x2180
movl -0x2c(%rbp), %eax
cmpl -0x70(%rbp), %eax
jne 0x33e6d4
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x18(%rax) # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x14(%rax) # imm = 0xFFFFFFFF
jmp 0x33e71b
cmpl $-0x1, -0x9c(%rbp)
je 0x33e719
movl -0x78(%rbp), %ecx
subl $0x1, %ecx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x14(%rax)
movl -0xa4(%rbp), %ecx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x18(%rax)
jmp 0x33e71b
movl -0x2c(%rbp), %eax
addl $0x1, %eax
cmpl -0x74(%rbp), %eax
jne 0x33e744
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
jmp 0x33e76d
cmpl $-0x1, -0xa0(%rbp)
je 0x33e76b
movl -0x78(%rbp), %ecx
addl $0x1, %ecx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x78(%rbp), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x1c(%rax)
jmp 0x33e76d
jmp 0x33e76f
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x33e5b8
movl -0x78(%rbp), %eax
movl %eax, %ecx
movq -0x98(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x98(%rbp), %rax
cmpq $0x1, 0x20(%rax)
jbe 0x33e7a6
jmp 0x33e7c5
leaq 0x5a062(%rip), %rdi     # 0x39880f
leaq 0x57a05(%rip), %rsi     # 0x3961b9
movl $0x1eb1, %edx           # imm = 0x1EB1
leaq 0x5a005(%rip), %rcx     # 0x3987c5
callq 0x2130
movq -0x28(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x108(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x2, 0x20(%rax)
jb 0x33e808
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
addq $0x24, %rax
movq %rax, -0x118(%rbp)
jmp 0x33e813
xorl %eax, %eax
movq %rax, -0x118(%rbp)
jmp 0x33e813
movq -0x108(%rbp), %rsi
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rdx
movl $0x1, %ecx
callq 0x33d2d0
movq -0x28(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x1, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x120(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x2, 0x20(%rax)
jb 0x33e89d
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x2, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x130(%rbp)
jmp 0x33e8a8
xorl %eax, %eax
movq %rax, -0x130(%rbp)
jmp 0x33e8a8
movq -0x120(%rbp), %rsi
movq -0x128(%rbp), %rdi
movq -0x130(%rbp), %rdx
xorl %ecx, %ecx
callq 0x33d2d0
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl 0x4(%rax), %eax
movl %eax, -0x7c(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x98(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jae 0x33e937
movl -0x7c(%rbp), %edx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
movl -0x7c(%rbp), %edx
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x2c(%rbp), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x8(%rax)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x33e8dc
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x1, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x98(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x98(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x33d510
jmp 0x33e977
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq