// File: /workspace/github_c_makefile_star2_O0/c-zhou[P]oatk/syncasm.c
// Function: scg_demultiplex
KDQ_INIT(uint64_t)

void scg_demultiplex(scg_t *g)
{
    uint64_t i, j, k, n, m, v, w, nv, pv, *a;
    int8_t *flag;
    kdq_t(uint64_t) *q;
    kvec_t(uint64_t) sub_g;
    asmg_arc_t *av;
    asmg_vtx_t *vtx;
    asmg_t *utg_g, *de_g;
    khint_t k1;
    kh_u64_t *h_scm;
    ks_u128_t *arc_s;
    int absent;

    utg_g = g->utg_asmg;
    q = kdq_init(uint64_t, 0);
    MYCALLOC(flag, utg_g->n_vtx * 2);
    MYCALLOC(de_g, 1);
    h_scm = kh_u64_init();
    arc_s = ks_u128_init();
    kv_init(sub_g);
    for (i = 0, n = utg_g->n_vtx * 2; i < n; ++i) {
        if (flag[i] || utg_g->vtx[i>>1].del)
            continue;

        // get a sub graph
        sub_g.n = 0;
        kdq_push(uint64_t, q, i);
        kdq_push(uint64_t, q, i^1);
        while (kdq_size(q) > 0) {
            v = *kdq_shift(uint64_t, q);
            if (flag[v]) continue;
            if (v & 1) kv_push(uint64_t, sub_g, v>>1);
            nv = asmg_arc_n(utg_g, v);
            av = asmg_arc_a(utg_g, v);
            for (j = 0; j < nv; ++j) {
                if (av[j].del) continue;
                if (flag[av[j].w] == 0)
                    kdq_push(uint64_t, q, av[j].w);
                if (flag[av[j].w^1] == 0)
                    kdq_push(uint64_t, q, av[j].w^1);
            }
            flag[v] = 1;
        }

#ifdef DEBUG_UTG_DEMULTIPLEX
        fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] processing subgraph:", __func__);
        for (j = 0; j < sub_g.n; ++j) fprintf(stderr, " u%lu", sub_g.a[j]);
        fprintf(stderr, "\n");
#endif
        // processing individual unitigs in sub_g
        for (j = 0; j < sub_g.n; ++j) {
#ifdef DEBUG_UTG_DEMULTIPLEX
            fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] process utg: u%lu\n", __func__, sub_g.a[j]);
#endif
            a = utg_g->vtx[sub_g.a[j]].a;
            m = utg_g->vtx[sub_g.a[j]].n;
            nv = 0;
            for (k = 0; k < m; ++k) {
                pv = nv;
                v = a[k] >> 1;
                k1 = kh_u64_put(h_scm, v, &absent);
                if (absent) {
                    // add v
                    nv = scg_add_utg_p(de_g, &vtx);
                    MYBZERO(vtx, 1);
                    MYMALLOC(vtx->a, 1);
                    vtx->n = 1;
                    vtx->a[0] = v << 1;
                    kh_val(h_scm, k1) = nv;
#ifdef DEBUG_UTG_DEMULTIPLEX
                    fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] add vtx: %lu [%lu%c]\n", 
                            __func__, nv, v, "+-"[a[k]&1]);
#endif
                } else {
                    // v has been added
                    nv = kh_val(h_scm, k1);
#ifdef DEBUG_UTG_DEMULTIPLEX
                    fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] existed vtx: %lu [%lu%c]\n", 
                            __func__, nv, v, "+-"[a[k]&1]);
#endif
                }
                if (k > 0) {
                    // add arc pv->nv
                    v = pv << 1 | (a[k-1]&1);
                    w = nv << 1 | (a[k]&1);
                    k1 = ks_u128_get(arc_s, (uint128_t) v<<64 | w);
                    if (k1 >= kh_end(arc_s)) {
                        // arc does not exist
                        asmg_arc_add2(de_g, v, w, 0, 0, 0, 0, 0);
                        ks_u128_put(arc_s, (uint128_t) v<<64 | w, &absent);
                        ks_u128_put(arc_s, (uint128_t) (w^1)<<64 | (v^1), &absent);
#ifdef DEBUG_UTG_DEMULTIPLEX
                        fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] add arc: %lu%c -> %lu%c\n", 
                                __func__, v>>1, "+-"[v&1], w>>1, "+-"[w&1]);
#endif
                    }
#ifdef DEBUG_UTG_DEMULTIPLEX
                    else {
                        fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] existed arc: %lu%c -> %lu%c\n",
                                __func__, v>>1, "+-"[v&1], w>>1, "+-"[w&1]);
                    }
#endif
                }
            }
        }
        
        // add arcs between unitigs
        m = sub_g.n * 2;
        for (j = 0; j < m; ++j) {
            v = sub_g.a[j>>1];
            a = utg_g->vtx[v].a;
            pv = (j&1)? a[0]^1 : a[utg_g->vtx[v].n-1];
            k1 = kh_u64_get(h_scm, pv>>1);
            pv = kh_val(h_scm, k1)<<1 | (pv&1);
            for (k = 0; k < m; ++k) {
                w = sub_g.a[k>>1];
                av = asmg_arc1(utg_g, v<<1|(j&1), w<<1|(k&1));
                if (av == 0 || av->ln > 0)
                    continue;
                a = utg_g->vtx[w].a;
                nv = (k&1)? a[utg_g->vtx[w].n-1]^1 : a[0];
                k1 = kh_u64_get(h_scm, nv>>1);
                nv = kh_val(h_scm, k1)<<1 | (nv&1);
                if (ks_u128_get(arc_s, (uint128_t) pv<<64 | nv) >= kh_end(arc_s)) {
                    // add vtx pv->nv
                    asmg_arc_add(de_g, pv, nv, 0, 0, 0, 0, 0);
                    ks_u128_put(arc_s, (uint128_t) pv<<64 | nv, &absent);
#ifdef DEBUG_UTG_DEMULTIPLEX
                    fprintf(stderr, "[DEBUG_UTG_DEMULTIPLEX::%s] add inter-utg arc: %lu%c -> %lu%c\n",
                            __func__, pv>>1, "+-"[pv&1], nv>>1, "+-"[nv&1]);
#endif
                }
            }
        }
        
        kh_u64_m_clear(h_scm);
        ks_u128_s_clear(arc_s);
    }
    
    kdq_destroy(uint64_t, q);
    kv_destroy(sub_g);
    kh_u64_destroy(h_scm);
    ks_u128_destroy(arc_s);
    free(flag);
    
    // sort arc and build index
    asmg_finalize(de_g, 1);
    
    // update utg graph
    asmg_destroy(utg_g);
    g->utg_asmg = de_g;

    // postprocessing for mergeable utgs after purging
    process_mergeable_unitigs(g);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0xa880
movq %rax, -0x68(%rbp)
movq -0x98(%rbp), %rax
movq (%rax), %rdi
shlq %rdi
movl $0x1, %esi
callq 0x2250
movq %rax, -0x60(%rbp)
movl $0x1, %edi
movl $0x40, %esi
callq 0x2250
movq %rax, -0xa0(%rbp)
callq 0xa8a0
movq %rax, -0xb0(%rbp)
callq 0x9c30
movq %rax, -0xb8(%rbp)
movq $0x0, -0x78(%rbp)
movq $0x0, -0x80(%rbp)
movq $0x0, -0x70(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x98(%rbp), %rax
movq (%rax), %rax
shlq %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
jae 0xa801
movq -0x60(%rbp), %rax
movq -0x10(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
jne 0x9fcb
movq -0x98(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
shrq %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x20(%rax), %eax
shrl $0x1e, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x9fd0
jmp 0xa7f0
movq $0x0, -0x80(%rbp)
movq -0x68(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xa8b0
movq -0x68(%rbp), %rdi
movq -0x10(%rbp), %rsi
xorq $0x1, %rsi
callq 0xa8b0
movq -0x68(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0xa1c0
movq -0x68(%rbp), %rdi
callq 0xa950
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x60(%rbp), %rax
movq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0xa025
jmp 0x9ff6
movq -0x38(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xa0a4
jmp 0xa035
movq -0x80(%rbp), %rax
cmpq -0x78(%rbp), %rax
jne 0xa084
cmpq $0x0, -0x78(%rbp)
je 0xa056
movq -0x78(%rbp), %rax
shlq %rax
movq %rax, -0x118(%rbp)
jmp 0xa064
movl $0x2, %eax
movq %rax, -0x118(%rbp)
jmp 0xa064
movq -0x118(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, -0x70(%rbp)
movq -0x38(%rbp), %rdx
shrq %rdx
movq -0x70(%rbp), %rax
movq -0x80(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x80(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0xa0a4
movq -0x98(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq -0x98(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x98(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq -0x38(%rbp), %rdx
imulq $0x30, (%rcx,%rdx,8), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x48(%rbp), %rax
jae 0xa1af
movq -0x88(%rbp), %rax
imulq $0x30, -0x18(%rbp), %rcx
addq %rcx, %rax
movl 0x20(%rax), %eax
shrl $0x1e, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xa11c
jmp 0xa19e
movq -0x60(%rbp), %rax
movq -0x88(%rbp), %rcx
imulq $0x30, -0x18(%rbp), %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
jne 0xa158
movq -0x68(%rbp), %rdi
movq -0x88(%rbp), %rax
imulq $0x30, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
callq 0xa8b0
movq -0x60(%rbp), %rax
movq -0x88(%rbp), %rcx
imulq $0x30, -0x18(%rbp), %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
xorq $0x1, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
jne 0xa19c
movq -0x68(%rbp), %rdi
movq -0x88(%rbp), %rax
imulq $0x30, -0x18(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
xorq $0x1, %rsi
callq 0xa8b0
jmp 0xa19e
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0xa0ec
movq -0x60(%rbp), %rax
movq -0x38(%rbp), %rcx
movb $0x1, (%rax,%rcx)
jmp 0x9ff6
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x80(%rbp), %rax
jae 0xa4ba
movq -0x98(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x70(%rbp), %rcx
movq -0x18(%rbp), %rdx
imulq $0x28, (%rcx,%rdx,8), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x98(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x70(%rbp), %rcx
movq -0x18(%rbp), %rdx
imulq $0x28, (%rcx,%rdx,8), %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0xa4a7
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x58(%rbp), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq %rax
movq %rax, -0x38(%rbp)
movq -0xb0(%rbp), %rdi
movq -0x38(%rbp), %rsi
leaq -0xbc(%rbp), %rdx
callq 0xaa30
movl %eax, -0xa4(%rbp)
cmpl $0x0, -0xbc(%rbp)
je 0xa305
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x9910
movq %rax, -0x48(%rbp)
movq -0x90(%rbp), %rdi
xorl %esi, %esi
movl $0x28, %edx
callq 0x21f0
movl $0x8, %edi
callq 0x2320
movq %rax, %rcx
movq -0x90(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x90(%rbp), %rax
movq $0x1, (%rax)
movq -0x38(%rbp), %rcx
shlq %rcx
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movq -0x48(%rbp), %rcx
movq -0xb0(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xa4(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
jmp 0xa325
movq -0xb0(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xa4(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x20(%rbp)
jbe 0xa494
movq -0x50(%rbp), %rcx
movq -0x58(%rbp), %rax
movq -0x20(%rbp), %rdx
movq -0x8(%rax,%rdx,8), %rax
andl $0x1, %eax
leaq (%rax,%rcx,2), %rax
movq %rax, -0x38(%rbp)
movq -0x48(%rbp), %rcx
movq -0x58(%rbp), %rax
movq -0x20(%rbp), %rdx
movq (%rax,%rdx,8), %rax
andl $0x1, %eax
leaq (%rax,%rcx,2), %rax
movq %rax, -0x40(%rbp)
movq -0xb8(%rbp), %rdi
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0xc8(%rbp)
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
callq 0x9c40
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movl %eax, -0x11c(%rbp)
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xa3cf
movq -0xb8(%rbp), %rax
movl (%rax), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x120(%rbp)
jmp 0xa3d9
xorl %eax, %eax
movl %eax, -0x120(%rbp)
jmp 0xa3d9
movl -0x11c(%rbp), %eax
movl -0x120(%rbp), %ecx
cmpl %ecx, %eax
jb 0xa492
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rsp, %rax
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %rcx
movq %r9, %r8
callq 0xaa70
movq -0xb8(%rbp), %rdi
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0xd8(%rbp)
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
leaq -0xbc(%rbp), %rcx
callq 0x9c90
movq -0xb8(%rbp), %rdi
movq -0x40(%rbp), %rcx
xorq $0x1, %rcx
movq -0x38(%rbp), %rax
xorq $0x1, %rax
movq %rcx, -0xe8(%rbp)
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
leaq -0xbc(%rbp), %rcx
callq 0x9c90
jmp 0xa494
jmp 0xa496
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xa22b
jmp 0xa4a9
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0xa1c8
movq -0x80(%rbp), %rax
shlq %rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0xa7d8
movq -0x70(%rbp), %rax
movq -0x18(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq -0x98(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x38(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xa52b
movq -0x58(%rbp), %rax
movq (%rax), %rax
xorq $0x1, %rax
movq %rax, -0x128(%rbp)
jmp 0xa554
movq -0x58(%rbp), %rax
movq -0x98(%rbp), %rcx
movq 0x10(%rcx), %rcx
imulq $0x28, -0x38(%rbp), %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0xb0(%rbp), %rdi
movq -0x50(%rbp), %rsi
shrq %rsi
callq 0xab30
movl %eax, -0xa4(%rbp)
movq -0xb0(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xa4(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
shlq %rax
movq -0x50(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
movq %rax, -0x50(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0xa7c5
movq -0x70(%rbp), %rax
movq -0x20(%rbp), %rcx
shrq %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rsi
shlq %rsi
movq -0x18(%rbp), %rax
andq $0x1, %rax
orq %rax, %rsi
movq -0x40(%rbp), %rdx
shlq %rdx
movq -0x20(%rbp), %rax
andq $0x1, %rax
orq %rax, %rdx
callq 0x9830
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0xa61e
movq -0x88(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jbe 0xa623
jmp 0xa7b4
movq -0x98(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xa67b
movq -0x58(%rbp), %rax
movq -0x98(%rbp), %rcx
movq 0x10(%rcx), %rcx
imulq $0x28, -0x40(%rbp), %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
xorq $0x1, %rax
movq %rax, -0x130(%rbp)
jmp 0xa689
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0xb0(%rbp), %rdi
movq -0x48(%rbp), %rsi
shrq %rsi
callq 0xab30
movl %eax, -0xa4(%rbp)
movq -0xb0(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xa4(%rbp), %ecx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %rcx
movq -0x48(%rbp), %rax
andl $0x1, %eax
leaq (%rax,%rcx,2), %rax
movq %rax, -0x48(%rbp)
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, -0xf8(%rbp)
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
callq 0x9c40
movl %eax, -0x134(%rbp)
movq -0xb8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xa732
movq -0xb8(%rbp), %rax
movl (%rax), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x138(%rbp)
jmp 0xa73c
xorl %eax, %eax
movl %eax, -0x138(%rbp)
jmp 0xa73c
movl -0x134(%rbp), %eax
movl -0x138(%rbp), %ecx
cmpl %ecx, %eax
jb 0xa7b2
movq -0xa0(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %rsp, %rax
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %rcx
movq %r9, %r8
callq 0x9ce0
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, -0x108(%rbp)
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
leaq -0xbc(%rbp), %rcx
callq 0x9c90
jmp 0xa7b4
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xa5ae
jmp 0xa7c7
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0xa4cd
movq -0xb0(%rbp), %rdi
callq 0xab60
movq -0xb8(%rbp), %rdi
callq 0xabe0
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x9f85
movq -0x68(%rbp), %rdi
callq 0xac60
movq -0x70(%rbp), %rdi
callq 0x2060
movq -0xb0(%rbp), %rdi
callq 0xacb0
movq -0xb8(%rbp), %rdi
callq 0x9ec0
movq -0x60(%rbp), %rdi
callq 0x2060
movq -0xa0(%rbp), %rdi
movl $0x1, %esi
callq 0x20160
movq -0x98(%rbp), %rdi
callq 0x1f9a0
movq -0xa0(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rdi
callq 0x7660
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopw %cs:(%rax,%rax)