// File: chhylp123[P]hifiasm/gfa_ut.cpp
// Function: ava_pass_unique_bridge_tips(usg_t*, asg64_v*, unsigned long, unsigned long, unsigned long*, unsigned char*, unsigned long, double, unsigned long)
uint32_t ava_pass_unique_bridge_tips(usg_t *g, asg64_v *b64, uint64_t g_s, uint64_t g_e, uint64_t *integer_seq, uint8_t *f, uint64_t max_ext, double max_ext_rate, uint64_t ext_up)
{
    uint64_t i, k, z, s, e, v, nv, bn = b64->n, kv, kv_t, n_ext = 0, nkeep = 0, ncut = 0, is_telo; usg_arc_t *av;
    for (i = g_s; i < g_e; i++) {///available intervals within the same cluster
        s = b64->a[((uint32_t)b64->a[i])]>>32; e = ((uint32_t)b64->a[((uint32_t)b64->a[i])]); assert(s < e);
        for (k = s + 1; k < e; k++) {///note: here is [s, e]
            f[integer_seq[k]] = f[integer_seq[k]^1] = 1; 
            nkeep += g->a[integer_seq[k]>>1].occ;
        }
        f[integer_seq[s]] = f[integer_seq[e]^1] = 1;
    }
    nkeep = nkeep*max_ext_rate;

    ///collect nodes within raw unitig graph that are linked by the clusters but not in the cluster
    for (i = g_s; i < g_e; i++) {
        s = b64->a[((uint32_t)b64->a[i])]>>32; e = ((uint32_t)b64->a[((uint32_t)b64->a[i])]); assert(s < e);
        for (k = s + 1; k < e; k++) {///note: here is [s, e]
            v = integer_seq[k]; av = usg_arc_a(g, v); nv = usg_arc_n(g, v);
            for (z = 0; z < nv; z++) {
                if(av[z].del || f[av[z].v^1]) continue;
                kv_push(uint64_t, *b64, av[z].v);
            }

            v = integer_seq[k]^1; av = usg_arc_a(g, v); nv = usg_arc_n(g, v);
            for (z = 0; z < nv; z++) {
                if(av[z].del || f[av[z].v^1]) continue;
                kv_push(uint64_t, *b64, av[z].v);
            }
        }

        v = integer_seq[s]; av = usg_arc_a(g, v); nv = usg_arc_n(g, v);
        for (z = 0; z < nv; z++) {
            if(av[z].del || f[av[z].v^1]) continue;
            kv_push(uint64_t, *b64, av[z].v);
        }

        v = integer_seq[e]^1; av = usg_arc_a(g, v); nv = usg_arc_n(g, v);
        for (z = 0; z < nv; z++) {
            if(av[z].del || f[av[z].v^1]) continue;
            kv_push(uint64_t, *b64, av[z].v);
        }
    }

    ncut = MAX(nkeep, max_ext); is_telo = 0;
    if(ncut > ext_up) ncut = ext_up;
    if(ncut < max_ext) ncut = max_ext;
    while ((b64->n > bn) && (n_ext < ncut) && (!is_telo)) {
        v = b64->a[--b64->n]; if(f[v]) continue;
        av = usg_arc_a(g, v^1); nv = usg_arc_n(g, v^1);
        for (i = kv = 0; i < nv && kv < 1; i++) {
            if (av[i].del || f[av[i].v^1]) continue;
            kv++; 
        }
        if(kv > 0) continue;
        n_ext += g->a[v>>1].occ; f[v] = f[v^1] = 1;

        av = usg_arc_a(g, v); nv = usg_arc_n(g, v);
        for (i = kv_t = 0; i < nv; i++) {
            if(av[i].del) continue;
            kv_t++;
            if (f[av[i].v^1]) continue;
            kv_push(uint64_t, *b64, av[i].v);
        }
        if((!kv_t) && (g->a[v>>1].telo)) is_telo = 1;     
    }

    ///reset f[] to 0
    for (i = g_s; i < g_e; i++) { 
        s = b64->a[((uint32_t)b64->a[i])]>>32; e = ((uint32_t)b64->a[((uint32_t)b64->a[i])]); assert(s < e);
        for (k = s + 1; k < e; k++) {///note: here is [s, e]
            kv_push(uint64_t, *b64, integer_seq[k]); 
            kv_push(uint64_t, *b64, (integer_seq[k]^1));
            f[integer_seq[k]] = f[integer_seq[k]^1] = 0; 
        }
        kv_push(uint64_t, *b64, integer_seq[s]); 
        kv_push(uint64_t, *b64, (integer_seq[e]^1));
        f[integer_seq[s]] = f[integer_seq[e]^1] = 0;
    }

    while (b64->n > bn) {
        v = b64->a[--b64->n]; 
        f[v] = f[v^1] = 0;

        av = usg_arc_a(g, v); nv = usg_arc_n(g, v);
        for (i = 0; i < nv; i++) {
            if (av[i].del) continue;
            if(f[av[i].v] || f[av[i].v^1]) {
                kv_push(uint64_t, *b64, av[i].v);
            }
        }

        av = usg_arc_a(g, v^1); nv = usg_arc_n(g, v^1);
        for (i = 0; i < nv; i++) {
            if (av[i].del) continue;
            if(f[av[i].v] || f[av[i].v^1]) {
                kv_push(uint64_t, *b64, av[i].v);
            }
        }
    }
    if((n_ext < ncut) && (n_ext > max_ext - 1)) n_ext = max_ext - 1;
    if(is_telo) n_ext = max_ext + 1;
    return n_ext;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movsd %xmm0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movq $0x0, -0x90(%rbp)
movq $0x0, -0x98(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x357392
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x60(%rbp), %rax
jae 0x3572b8
jmp 0x3572d7
leaq 0x423b9(%rip), %rdi     # 0x399678
leaq 0x3eef3(%rip), %rsi     # 0x3961b9
movl $0x2fdd, %edx           # imm = 0x2FDD
leaq 0x423ac(%rip), %rcx     # 0x39967e
callq 0x2130
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jae 0x357355
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
xorq $0x1, %rcx
movb $0x1, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movb $0x1, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
addq -0x98(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x3572e3
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
xorq $0x1, %rcx
movb $0x1, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x58(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movb $0x1, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x357254
movaps 0x2ac77(%rip), %xmm1    # 0x382010
movq -0x98(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2ac73(%rip), %xmm1    # 0x382020
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x2ac1c(%rip), %xmm1    # 0x381ff8
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x357ae5
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x60(%rbp), %rax
jae 0x35745e
jmp 0x35747d
leaq 0x42213(%rip), %rdi     # 0x399678
leaq 0x3ed4d(%rip), %rsi     # 0x3961b9
movl $0x2fe8, %edx           # imm = 0x2FE8
leaq 0x42206(%rip), %rcx     # 0x39967e
callq 0x2130
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jae 0x3577be
movq -0x28(%rbp), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x35761f
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x357560
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x50(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x357565
jmp 0x35760e
jmp 0x357567
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x3575d8
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x357597
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xb8(%rbp)
jmp 0x3575a5
movl $0x2, %eax
movq %rax, -0xb8(%rbp)
jmp 0x3575a5
movq -0xb8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x35760e
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x357511
movq -0x28(%rbp), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
xorq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x3577ab
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x3576ec
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x50(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x3576f1
jmp 0x35779a
jmp 0x3576f3
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x357764
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x357723
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xc0(%rbp)
jmp 0x357731
movl $0x2, %eax
movq %rax, -0xc0(%rbp)
jmp 0x357731
movq -0xc0(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x35779a
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x35769d
jmp 0x3577ad
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x357489
movq -0x28(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x357946
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x357887
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x50(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x35788c
jmp 0x357935
jmp 0x35788e
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x3578ff
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3578be
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xc8(%rbp)
jmp 0x3578cc
movl $0x2, %eax
movq %rax, -0xc8(%rbp)
jmp 0x3578cc
movq -0xc8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x357935
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x357838
movq -0x28(%rbp), %rax
movq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
xorq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x357ad2
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x357a13
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x50(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x357a18
jmp 0x357ac1
jmp 0x357a1a
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x357a8b
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x357a4a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xd0(%rbp)
jmp 0x357a58
movl $0x2, %eax
movq %rax, -0xd0(%rbp)
jmp 0x357a58
movq -0xd0(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x50(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x357ac1
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x3579c4
jmp 0x357ad4
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x3573fa
movq -0x98(%rbp), %rax
cmpq 0x10(%rbp), %rax
jb 0x357b02
movq -0x98(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x357b0d
movq 0x10(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq $0x0, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
cmpq 0x18(%rbp), %rax
jbe 0x357b3e
movq 0x18(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
cmpq 0x10(%rbp), %rax
jae 0x357b56
movq 0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0x357b58
movq -0x10(%rbp), %rax
movq (%rax), %rcx
xorl %eax, %eax
cmpq -0x78(%rbp), %rcx
movb %al, -0xd9(%rbp)
jbe 0x357b98
movq -0x90(%rbp), %rcx
xorl %eax, %eax
cmpq -0xa0(%rbp), %rcx
movb %al, -0xd9(%rbp)
jae 0x357b98
cmpq $0x0, -0xa8(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0xd9(%rbp)
movb -0xd9(%rbp), %al
testb $0x1, %al
jne 0x357ba7
jmp 0x357f07
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $-0x1, %rsi
movq %rsi, (%rdx)
movq -0x8(%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x30(%rbp), %rax
movq -0x68(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x357bdc
jmp 0x357b58
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x80(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rcx
xorl %eax, %eax
cmpq -0x70(%rbp), %rcx
movb %al, -0xda(%rbp)
jae 0x357c7e
cmpq $0x1, -0x80(%rbp)
setb %al
movb %al, -0xda(%rbp)
movb -0xda(%rbp), %al
testb $0x1, %al
jne 0x357c8a
jmp 0x357cea
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
jne 0x357ccb
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x357ccd
jmp 0x357cd9
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x357c5e
cmpq $0x0, -0x80(%rbp)
jbe 0x357cf6
jmp 0x357b58
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
addq -0x90(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
movb $0x1, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq -0x68(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x357ed2
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x357ddd
jmp 0x357ec1
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x357e18
jmp 0x357ec1
jmp 0x357e1a
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x357e8b
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x357e4a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xe8(%rbp)
jmp 0x357e58
movl $0x2, %eax
movq %rax, -0xe8(%rbp)
jmp 0x357e58
movq -0xe8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x357ec1
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x357dad
cmpq $0x0, -0x88(%rbp)
jne 0x357f02
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
cmpb $0x0, 0x71(%rax)
je 0x357f02
movq $0x1, -0xa8(%rbp)
jmp 0x357b58
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x35829e
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x40(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x60(%rbp), %rax
jae 0x357f73
jmp 0x357f92
leaq 0x416fe(%rip), %rdi     # 0x399678
leaq 0x3e238(%rip), %rsi     # 0x3961b9
movl $0x301d, %edx           # imm = 0x301D
leaq 0x416f1(%rip), %rcx     # 0x39967e
callq 0x2130
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jae 0x358125
jmp 0x357fae
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x35801f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x357fde
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xf0(%rbp)
jmp 0x357fec
movl $0x2, %eax
movq %rax, -0xf0(%rbp)
jmp 0x357fec
movq -0xf0(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x35804a
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x3580bb
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x35807a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xf8(%rbp)
jmp 0x358088
movl $0x2, %eax
movq %rax, -0xf8(%rbp)
jmp 0x358088
movq -0xf8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
xorq $0x1, %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
xorq $0x1, %rcx
movb $0x0, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movb $0x0, (%rax,%rcx)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x357f9e
jmp 0x358127
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x358198
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x358157
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x100(%rbp)
jmp 0x358165
movl $0x2, %eax
movq %rax, -0x100(%rbp)
jmp 0x358165
movq -0x100(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x3581c3
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x358234
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3581f3
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x108(%rbp)
jmp 0x358201
movl $0x2, %eax
movq %rax, -0x108(%rbp)
jmp 0x358201
movq -0x108(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
xorq $0x1, %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
xorq $0x1, %rcx
movb $0x0, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq -0x58(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movb $0x0, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x357f0f
jmp 0x3582a0
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq -0x78(%rbp), %rax
jbe 0x35863e
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $-0x1, %rsi
movq %rsi, (%rdx)
movq -0x8(%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x30(%rbp), %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
movb $0x0, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq -0x68(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x35848c
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x358389
jmp 0x35847b
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
cmpb $0x0, (%rax,%rcx)
jne 0x3583d0
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x358479
jmp 0x3583d2
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x358443
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x358402
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x110(%rbp)
jmp 0x358410
movl $0x2, %eax
movq %rax, -0x110(%rbp)
jmp 0x358410
movq -0x110(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x358479
jmp 0x35847b
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x358359
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
shrq %rcx
imulq $0x78, %rcx, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x68(%rbp), %rcx
xorq $0x1, %rcx
andq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x358639
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x358536
jmp 0x358628
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
cmpb $0x0, (%rax,%rcx)
jne 0x35857d
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
je 0x358626
jmp 0x35857f
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x3585f0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3585af
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x118(%rbp)
jmp 0x3585bd
movl $0x2, %eax
movq %rax, -0x118(%rbp)
jmp 0x3585bd
movq -0x118(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x358626
jmp 0x358628
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x358506
jmp 0x3582a0
movq -0x90(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jae 0x358671
movq -0x90(%rbp), %rax
movq 0x10(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x358671
movq 0x10(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x90(%rbp)
cmpq $0x0, -0xa8(%rbp)
je 0x35868a
movq 0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw (%rax,%rax)