// File: /workspace/github_c_makefile_star2_O0/lh3[P]minigraph/gfa-bbl.c
// Function: gfa_bubble
gfa_bubble_t *gfa_bubble(const gfa_t *g, int32_t *n_bb_)
{
	uint32_t i, *vs, *vmin, *vtmp = 0;
	int32_t n_bb = 0, m_bb = 0, m_vtmp = 0;
	gfa_bubble_t *bb = 0;
	gfa_scbuf_t *scbuf;

	GFA_MALLOC(vs, g->n_sseq);
	GFA_MALLOC(vmin, g->n_sseq);
	for (i = 0; i < g->n_sseq; ++i)
		vs[i] = (uint32_t)-1, vmin[i] = UINT32_MAX;
	for (i = 0; i < g->n_seg; ++i) {
		const gfa_seg_t *s = &g->seg[i];
		if (s->rank != 0 || s->snid < 0) continue;
		if ((uint32_t)s->soff < vmin[s->snid])
			vmin[s->snid] = s->soff, vs[s->snid] = i<<1;
	}
	free(vmin);

	scbuf = gfa_scbuf_init(g);
	for (i = 0; i < g->n_sseq; ++i) {
		gfa_sub_t *sub;
		int32_t j, jst, max_a, max_soff;
		bb_aux_t *ba;

		if (vs[i] == (uint32_t)-1) continue;
		#if 0
		sub = gfa_sub_from(0, g, vs[i], 0);
		#else
		sub = gfa_scc1(0, g, scbuf, vs[i]);
		#endif
		//gfa_sub_print(stderr, g, sub);
		GFA_CALLOC(ba, sub->n_v);
		for (j = 0; j < sub->n_v; ++j)
			ba[j].sd = INT32_MAX, ba[j].lp = ba[j].sp = -1;
		ba[0].sd = 0;
		for (j = 0; j < sub->n_v; ++j) {
			gfa_subv_t *t = &sub->v[j];
			int32_t k;
			for (k = 0; k < t->n; ++k) {
				uint64_t a = sub->a[t->off + k];
				int32_t jv = (int32_t)(a>>32);
				int32_t l = (int32_t)g->arc[(uint32_t)a].v_lv;
				if (jv <= j) continue; // skip loop or cycle
				if (ba[jv].sd >= ba[j].sd + l)
					ba[jv].sd = ba[j].sd + l, ba[jv].sp = j;
				if (ba[jv].ld < ba[j].ld + l)
					ba[jv].ld = ba[j].ld + l, ba[jv].lp = j;
			}
		}
		for (j = 0, jst = 0, max_a = max_soff = -1; j < sub->n_v; ++j) {
			gfa_subv_t *t = &sub->v[j];
			int32_t k;
			if (j == max_a && g->seg[t->v>>1].soff > max_soff) {
				const gfa_seg_t *sst = &g->seg[sub->v[jst].v>>1];
				const gfa_seg_t *sen = &g->seg[t->v>>1];
				if (sst->snid == i && sen->snid == i) {
					int32_t n, l;
					uint32_t *v;
					gfa_bubble_t *b;

					// basic information
					if (n_bb == m_bb) GFA_EXPAND(bb, m_bb);
					b = &bb[n_bb++];
					b->snid = i;
					b->vs = sub->v[jst].v;
					b->ve = t->v;
					b->ss = sst->soff + sst->len;
					b->se = sen->soff;
					b->len_min = ba[j].sd - ba[jst].sd - sst->len;
					b->len_max = ba[j].ld - ba[jst].ld - sst->len;
					b->n_paths = bb_n_paths(g, sub, jst, j);
					//fprintf(stderr, "X\t%s[%d]\tvs=%c%s\tve=%c%s\tlen_min=%d\n", g->sseq[i].name, i, "><"[b->vs&1], g->seg[b->vs>>1].name, "><"[b->ve&1], g->seg[b->ve>>1].name, b->len_min);
					assert(b->len_min >= 0);
					assert(b->len_max >= 0 && b->len_max >= b->len_min);
					b->n_seg = j - jst + 1;
					l = (b->len_min + 1) + (b->len_max + 1);
					l = (l + 3) / 4 + b->n_seg;
					GFA_CALLOC(b->v, l);
					b->seq_min = (char*)(b->v + b->n_seg);
					b->seq_max = b->seq_min + b->len_min + 1;
					for (k = jst; k <= j; ++k)
						b->v[k - jst] = sub->v[k].v;

					// test bubble involving both strands (mostly inversions)
					if (b->n_seg > m_vtmp) {
						m_vtmp = b->n_seg;
						kroundup32(m_vtmp);
						GFA_REALLOC(vtmp, m_vtmp);
					}
					for (k = 0; k < b->n_seg; ++k) vtmp[k] = b->v[k]>>1;
					radix_sort_gfa32(vtmp, vtmp + b->n_seg);
					for (k = 1; k < b->n_seg; ++k)
						if (vtmp[k] == vtmp[k-1]) break;
					b->is_bidir = (k < b->n_seg);

					// generate sequences and cf_min/cf_max
					GFA_MALLOC(v, j - jst);
					k = j, n = 0;
					while (k > jst) {
						if (k < j) v[n++] = sub->v[k].v;
						k = ba[k].sp;
					}
					bb_write_seq(g, n, v, b->len_min, b->seq_min);
					k = j, n = 0;
					while (k > jst) {
						if (k < j) v[n++] = sub->v[k].v;
						k = ba[k].lp;
					}
					bb_write_seq(g, n, v, b->len_max, b->seq_max);
					free(v);
				} // ~if(sst->snid==i&&sen->snid==i)
				max_a = max_soff = -1, jst = j;
			} // ~if(j==max_a)
			for (k = 0; k < t->n; ++k)
				if ((int32_t)(sub->a[t->off + k]>>32) > max_a)
					max_a = sub->a[t->off + k]>>32;
			if (g->seg[t->v>>1].snid == i && g->seg[t->v>>1].soff > max_soff)
				max_soff = g->seg[t->v>>1].soff;
		}
		free(ba);
		gfa_sub_destroy(sub);
	}
	free(vtmp);
	gfa_scbuf_destroy(scbuf);
	free(vs);
	*n_bb_ = n_bb;
	return bb;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movq $0x0, -0x48(%rbp)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, %edi
shlq $0x2, %rdi
callq 0x2280
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, %edi
shlq $0x2, %rdi
callq 0x2280
movq %rax, -0x28(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jae 0xe99e
movq -0x20(%rbp), %rax
movl -0x14(%rbp), %ecx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movq -0x28(%rbp), %rax
movl -0x14(%rbp), %ecx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xe96b
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jae 0xea2f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x14(%rbp), %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0xe9db
movq -0x58(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jge 0xe9dd
jmp 0xea21
movq -0x58(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x28(%rbp), %rcx
movq -0x58(%rbp), %rdx
movslq 0x8(%rdx), %rdx
cmpl (%rcx,%rdx,4), %eax
jae 0xea1f
movq -0x58(%rbp), %rax
movl 0xc(%rax), %edx
movq -0x28(%rbp), %rax
movq -0x58(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x14(%rbp), %edx
shll %edx
movq -0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movslq 0x8(%rcx), %rcx
movl %edx, (%rax,%rcx,4)
jmp 0xea21
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xe9a5
movq -0x28(%rbp), %rdi
callq 0x2040
movq -0x8(%rbp), %rdi
callq 0xdb70
movq %rax, -0x50(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jae 0xf4b4
movq -0x20(%rbp), %rax
movl -0x14(%rbp), %ecx
cmpl $-0x1, (%rax,%rcx,4)
jne 0xea6e
jmp 0xf4a6
movq -0x8(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x20(%rbp), %rax
movl -0x14(%rbp), %ecx
movl (%rax,%rcx,4), %ecx
xorl %eax, %eax
movl %eax, %edi
callq 0xdc60
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movslq (%rax), %rdi
movl $0x20, %esi
callq 0x21e0
movq %rax, -0x78(%rbp)
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movq -0x60(%rbp), %rcx
cmpl (%rcx), %eax
jge 0xeb01
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl $0x7fffffff, 0x4(%rax)  # imm = 0x7FFFFFFF
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl $0xffffffff, 0x10(%rax) # imm = 0xFFFFFFFF
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0xeaa9
movq -0x78(%rbp), %rax
movl $0x0, 0x4(%rax)
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movq -0x60(%rbp), %rcx
cmpl (%rcx), %eax
jge 0xecc9
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x64(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movq -0x80(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0xecb9
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x80(%rbp), %rcx
movl 0x8(%rcx), %ecx
addl -0x84(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
shrq $0x20, %rax
movl %eax, -0x94(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq -0x90(%rbp), %rcx
movl %ecx, %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl %eax, -0x98(%rbp)
movl -0x94(%rbp), %eax
cmpl -0x64(%rbp), %eax
jg 0xebbb
jmp 0xeca5
movq -0x78(%rbp), %rax
movslq -0x94(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x78(%rbp), %rcx
movslq -0x64(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x4(%rcx), %ecx
addl -0x98(%rbp), %ecx
cmpl %ecx, %eax
jl 0xec31
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
addl -0x98(%rbp), %ecx
movq -0x78(%rbp), %rax
movslq -0x94(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl -0x64(%rbp), %ecx
movq -0x78(%rbp), %rax
movslq -0x94(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl %ecx, 0x10(%rax)
movq -0x78(%rbp), %rax
movslq -0x94(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl (%rax), %eax
movq -0x78(%rbp), %rcx
movslq -0x64(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
addl -0x98(%rbp), %ecx
cmpl %ecx, %eax
jge 0xeca3
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl (%rax), %ecx
addl -0x98(%rbp), %ecx
movq -0x78(%rbp), %rax
movslq -0x94(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl -0x64(%rbp), %ecx
movq -0x78(%rbp), %rax
movslq -0x94(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
jmp 0xeca5
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0xeb43
jmp 0xecbb
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0xeb13
movl $0x0, -0x64(%rbp)
movl $0x0, -0x68(%rbp)
movl $0xffffffff, -0x70(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x6c(%rbp) # imm = 0xFFFFFFFF
movl -0x64(%rbp), %eax
movq -0x60(%rbp), %rcx
cmpl (%rcx), %eax
jge 0xf494
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x64(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jne 0xf39d
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xa0(%rbp), %rcx
movl (%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
cmpl -0x70(%rbp), %eax
jle 0xf39d
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
movq 0x10(%rcx), %rcx
movslq -0x68(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xa0(%rbp), %rcx
movl (%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rax
movl 0x8(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0xf389
movq -0xb8(%rbp), %rax
movl 0x8(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0xf389
movl -0x34(%rbp), %eax
cmpl -0x38(%rbp), %eax
jne 0xee09
jmp 0xedc4
cmpl $0x0, -0x38(%rbp)
je 0xeddc
movl -0x38(%rbp), %eax
movl -0x38(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
movl %eax, -0xd4(%rbp)
jmp 0xede9
movl $0x10, %eax
movl %eax, -0xd4(%rbp)
jmp 0xede9
movl -0xd4(%rbp), %eax
movl %eax, -0x38(%rbp)
movq -0x48(%rbp), %rdi
movslq -0x38(%rbp), %rax
imulq $0x48, %rax, %rsi
callq 0x22b0
movq %rax, -0x48(%rbp)
jmp 0xee09
movq -0x48(%rbp), %rax
movl -0x34(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x34(%rbp)
movslq %ecx, %rcx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
movl -0x14(%rbp), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, (%rax)
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x68(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0xa0(%rbp), %rax
movl (%rax), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0xb0(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0xb0(%rbp), %rax
addl (%rax), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0xb8(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x78(%rbp), %rax
movslq -0x68(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
subl 0x4(%rax), %ecx
movq -0xb0(%rbp), %rax
subl (%rax), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x78(%rbp), %rax
movslq -0x64(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq -0x78(%rbp), %rax
movslq -0x68(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
subl (%rax), %ecx
movq -0xb0(%rbp), %rax
subl (%rax), %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x8(%rbp), %rdi
movq -0x60(%rbp), %rsi
movl -0x68(%rbp), %edx
movl -0x64(%rbp), %ecx
callq 0xf4f0
movl %eax, %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x30(%rax)
movq -0xd0(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jl 0xef32
jmp 0xef51
leaq 0x2d7ea(%rip), %rdi     # 0x3c723
leaq 0x2d74f(%rip), %rsi     # 0x3c68f
movl $0x13d, %edx            # imm = 0x13D
leaq 0x2d7e7(%rip), %rcx     # 0x3c733
callq 0x2170
movq -0xd0(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
jl 0xef76
movq -0xd0(%rbp), %rax
movl 0x1c(%rax), %eax
movq -0xd0(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jl 0xef76
jmp 0xef95
leaq 0x2d7e9(%rip), %rdi     # 0x3c766
leaq 0x2d70b(%rip), %rsi     # 0x3c68f
movl $0x13e, %edx            # imm = 0x13E
leaq 0x2d7a3(%rip), %rcx     # 0x3c733
callq 0x2170
movl -0x64(%rbp), %ecx
subl -0x68(%rbp), %ecx
addl $0x1, %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0xd0(%rbp), %rax
movl 0x20(%rax), %eax
addl $0x1, %eax
movq -0xd0(%rbp), %rcx
movl 0x1c(%rcx), %ecx
addl $0x1, %ecx
addl %ecx, %eax
movl %eax, -0xc0(%rbp)
movl -0xc0(%rbp), %eax
addl $0x3, %eax
movl $0x4, %ecx
cltd
idivl %ecx
movq -0xd0(%rbp), %rcx
addl 0x18(%rcx), %eax
movl %eax, -0xc0(%rbp)
movslq -0xc0(%rbp), %rdi
movl $0x4, %esi
callq 0x21e0
movq %rax, %rcx
movq -0xd0(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0xd0(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0xd0(%rbp), %rax
movslq 0x18(%rax), %rax
shlq $0x2, %rax
addq %rax, %rcx
movq -0xd0(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0xd0(%rbp), %rax
movq 0x40(%rax), %rcx
movq -0xd0(%rbp), %rax
movslq 0x20(%rax), %rax
addq %rax, %rcx
addq $0x1, %rcx
movq -0xd0(%rbp), %rax
movq %rcx, 0x38(%rax)
movl -0x68(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
cmpl -0x64(%rbp), %eax
jg 0xf0b1
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %edx
movq -0xd0(%rbp), %rax
movq 0x28(%rax), %rax
movl -0xa4(%rbp), %ecx
subl -0x68(%rbp), %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xf063
movq -0xd0(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x3c(%rbp), %eax
jle 0xf12f
movq -0xd0(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
sarl %eax
orl -0x3c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
sarl $0x2, %eax
orl -0x3c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
sarl $0x4, %eax
orl -0x3c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
sarl $0x8, %eax
orl -0x3c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
sarl $0x10, %eax
orl -0x3c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x30(%rbp), %rdi
movslq -0x3c(%rbp), %rsi
shlq $0x2, %rsi
callq 0x22b0
movq %rax, -0x30(%rbp)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0xd0(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jge 0xf181
movq -0xd0(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xa4(%rbp), %rcx
movl (%rax,%rcx,4), %edx
shrl %edx
movq -0x30(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xf139
movq -0x30(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0xd0(%rbp), %rax
movslq 0x18(%rax), %rax
shlq $0x2, %rax
addq %rax, %rsi
callq 0xd720
movl $0x1, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0xd0(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jge 0xf1f4
movq -0x30(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movq -0x30(%rbp), %rcx
movl -0xa4(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpl (%rcx,%rdx,4), %eax
jne 0xf1e1
jmp 0xf1f4
jmp 0xf1e3
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xf1aa
movl -0xa4(%rbp), %eax
movq -0xd0(%rbp), %rcx
cmpl 0x18(%rcx), %eax
setl %al
andb $0x1, %al
movzbl %al, %ecx
movq -0xd0(%rbp), %rax
movl %ecx, 0x14(%rax)
movl -0x64(%rbp), %eax
subl -0x68(%rbp), %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0x2280
movq %rax, -0xc8(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl $0x0, -0xbc(%rbp)
movl -0xa4(%rbp), %eax
cmpl -0x68(%rbp), %eax
jle 0xf2ab
movl -0xa4(%rbp), %eax
cmpl -0x64(%rbp), %eax
jge 0xf28e
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %edx
movq -0xc8(%rbp), %rax
movl -0xbc(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0xbc(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x78(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
movl %eax, -0xa4(%rbp)
jmp 0xf242
movq -0x8(%rbp), %rdi
movl -0xbc(%rbp), %esi
movq -0xc8(%rbp), %rdx
movq -0xd0(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0xd0(%rbp), %rax
movq 0x40(%rax), %r8
callq 0xf680
movl -0x64(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl $0x0, -0xbc(%rbp)
movl -0xa4(%rbp), %eax
cmpl -0x68(%rbp), %eax
jle 0xf352
movl -0xa4(%rbp), %eax
cmpl -0x64(%rbp), %eax
jge 0xf335
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %edx
movq -0xc8(%rbp), %rax
movl -0xbc(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0xbc(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x78(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movl %eax, -0xa4(%rbp)
jmp 0xf2e9
movq -0x8(%rbp), %rdi
movl -0xbc(%rbp), %esi
movq -0xc8(%rbp), %rdx
movq -0xd0(%rbp), %rax
movl 0x1c(%rax), %ecx
movq -0xd0(%rbp), %rax
movq 0x38(%rax), %r8
callq 0xf680
movq -0xc8(%rbp), %rdi
callq 0x2040
movl $0xffffffff, -0x70(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x6c(%rbp) # imm = 0xFFFFFFFF
movl -0x64(%rbp), %eax
movl %eax, -0x68(%rbp)
movl $0x0, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
movq -0xa0(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0xf41a
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq -0xa0(%rbp), %rcx
movl 0x8(%rcx), %ecx
addl -0xa4(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
cmpl -0x6c(%rbp), %eax
jle 0xf407
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq -0xa0(%rbp), %rcx
movl 0x8(%rcx), %ecx
addl -0xa4(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movl %eax, -0x6c(%rbp)
jmp 0xf409
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0xf3a7
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xa0(%rbp), %rcx
movl (%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0xf484
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xa0(%rbp), %rcx
movl (%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
cmpl -0x70(%rbp), %eax
jle 0xf484
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xa0(%rbp), %rcx
movl (%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movl %eax, -0x70(%rbp)
jmp 0xf486
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0xece5
movq -0x78(%rbp), %rdi
callq 0x2040
movq -0x60(%rbp), %rdi
callq 0xe8a0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xea4c
movq -0x30(%rbp), %rdi
callq 0x2040
movq -0x50(%rbp), %rdi
callq 0xdc10
movq -0x20(%rbp), %rdi
callq 0x2040
movl -0x34(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x48(%rbp), %rax
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)