// File: /workspace/github_c_makefile_star2_O0/lh3[P]minigraph/gfa-ed.c
// Function: gwf_ed_extend
static gwf_diag_t *gwf_ed_extend(gwf_edbuf_t *buf, const gfa_edopt_t *opt, const gfa_t *g, const gfa_edseq_t *es, int32_t s, int32_t ql, const char *q,
								 uint32_t v1, int32_t off1, int32_t *end_tb, int32_t *n_a_, gwf_diag_t *a, gfa_edrst_t *r)
{
	int32_t i, x, n = *n_a_, do_dedup = 1;
	kdq_t(gwf_diag_t) *A;
	gwf_diag_v B = {0,0,0};
	gwf_diag_t *b;

	r->end_v = (uint32_t)-1;
	r->end_off = *end_tb = -1;
	buf->tmp.n = 0;
	gwf_set64_clear(buf->ha); // hash table $h to avoid visiting a vertex twice
	for (i = 0, x = 1; i < 32; ++i, x <<= 1)
		if (x >= n) break;
	if (i < 4) i = 4;
	A = kdq_init2(gwf_diag_t, buf->km, i); // $A is a queue
	kv_resize(gwf_diag_t, buf->km, B, n * 2);
#if 0 // unoptimized version without calling gwf_ed_extend_batch() at all. The final result will be the same.
	A->count = n;
	memcpy(A->a, a, n * sizeof(*a));
#else // optimized for long vertices.
	for (x = 0, i = 1; i <= n; ++i) {
		if (i == n || a[i].vd != a[i-1].vd + 1) {
			gwf_ed_extend_batch(buf->km, g, es, ql, q, i - x, &a[x], &B, A, &buf->tmp, r);
			x = i;
		}
	}
	if (kdq_size(A) == 0) do_dedup = 0;
#endif
	kfree(buf->km, a); // $a is not used as it has been copied to $A

	while (kdq_size(A)) {
		gwf_diag_t t;
		uint32_t v, x0;
		int32_t ooo, d, k, i, vl;

		t = *kdq_shift(gwf_diag_t, A);
		ooo = t.xo&1, v = t.vd >> 32; // vertex
		d = (int32_t)t.vd - GWF_DIAG_SHIFT; // diagonal
		k = t.k; // wavefront position on the vertex
		vl = es[v].len; // $vl is the vertex length
		k = gwf_extend1(d, k, vl, es[v].seq, ql, q);
		i = k + d; // query position
		x0 = (t.xo >> 1) + ((k - t.k) << 1); // current anti diagonal

		if (k + 1 < vl && i + 1 < ql) { // the most common case: the wavefront is in the middle
			int32_t push1 = 1, push2 = 1;
			if (B.n >= 2) push1 = gwf_diag_update(&B.a[B.n - 2], v, d-1, k+1, x0 + 1, ooo, t.t);
			if (B.n >= 1) push2 = gwf_diag_update(&B.a[B.n - 1], v, d,   k+1, x0 + 2, ooo, t.t);
			if (push1)          gwf_diag_push(buf->km, &B, v, d-1, k+1, x0 + 1, 1, t.t);
			if (push2 || push1) gwf_diag_push(buf->km, &B, v, d,   k+1, x0 + 2, 1, t.t);
			gwf_diag_push(buf->km, &B, v, d+1, k, x0 + 1, ooo, t.t);
		} else if (i + 1 < ql) { // k + 1 == g->len[v]; reaching the end of the vertex but not the end of query
			int32_t nv = gfa_arc_n(g, v), j, n_ext = 0, tw = -1;
			gfa_arc_t *av = gfa_arc_a(g, v);
			gwf_intv_t *p;
			kv_pushp(gwf_intv_t, buf->km, buf->tmp, &p);
			p->vd0 = gwf_gen_vd(v, d), p->vd1 = p->vd0 + 1;
			if (opt->traceback) tw = gwf_trace_push(buf->km, &buf->t, v, t.t, buf->ht);
			for (j = 0; j < nv; ++j) { // traverse $v's neighbors
				uint32_t w = av[j].w; // $w is next to $v
				int32_t ol = av[j].ow;
				int absent;
				gwf_set64_put(buf->ha, (uint64_t)w<<32 | (i + 1), &absent); // test if ($w,$i) has been visited
				if (q[i + 1] == es[w].seq[ol]) { // can be extended to the next vertex without a mismatch
					++n_ext;
					if (absent) {
						gwf_diag_t *p;
						p = kdq_pushp(gwf_diag_t, A);
						p->vd = gwf_gen_vd(w, i + 1 - ol), p->k = ol, p->xo = (x0+2)<<1 | 1, p->t = tw;
					}
				} else if (absent) {
					gwf_diag_push(buf->km, &B, w, i - ol,     ol, x0 + 1, 1, tw);
					gwf_diag_push(buf->km, &B, w, i + 1 - ol, ol, x0 + 2, 1, tw);
				}
			}
			if (nv == 0 || n_ext != nv) // add an insertion to the target; this *might* cause a duplicate in corner cases
				gwf_diag_push(buf->km, &B, v, d+1, k, x0 + 1, 1, t.t);
		} else if (v1 == (uint32_t)-1 || (v == v1 && k == off1)) { // i + 1 == ql
			r->end_v = v, r->end_off = k, r->wlen = x0 - i - 1, *end_tb = t.t, *n_a_ = 0;
			kdq_destroy(gwf_diag_t, A);
			kfree(buf->km, B.a);
			return 0;
		} else if (k + 1 < vl) { // i + 1 == ql; reaching the end of the query but not the end of the vertex
			gwf_diag_push(buf->km, &B, v, d-1, k+1, x0 + 1, ooo, t.t); // add an deletion; this *might* case a duplicate in corner cases
		} else if (v != v1) { // i + 1 == ql && k + 1 == g->len[v]; not reaching the last vertex $v1
			int32_t nv = gfa_arc_n(g, v), j, tw = -1;
			const gfa_arc_t *av = gfa_arc_a(g, v);
			if (opt->traceback) tw = gwf_trace_push(buf->km, &buf->t, v, t.t, buf->ht);
			for (j = 0; j < nv; ++j)
				gwf_diag_push(buf->km, &B, av[j].w, i - av[j].ow, av[j].ow, x0 + 1, 1, tw); // deleting the first base on the next vertex
		} else { // may come here when k>off1 (due to banding); do nothing in this case
		}
	}

	kdq_destroy(gwf_diag_t, A);
	*n_a_ = n = B.n, b = B.a;

	if (do_dedup) *n_a_ = n = gwf_dedup(buf, n, b);
	if (opt->max_lag > 0 && n > opt->max_chk && ((s+1)&0xf) == 0)
		*n_a_ = n = gwf_prune(n, b, opt->max_lag, opt->bw_dyn);
	return b;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x130, %rsp            # imm = 0x130
movq 0x40(%rbp), %rax
movq 0x38(%rbp), %rax
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movq 0x10(%rbp), %rax
movq %rdi, -0x20(%rbp)
movq %rsi, -0x28(%rbp)
movq %rdx, -0x30(%rbp)
movq %rcx, -0x38(%rbp)
movl %r8d, -0x3c(%rbp)
movl %r9d, -0x40(%rbp)
movq 0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
movl $0x1, -0x50(%rbp)
leaq -0x70(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x2190
movq 0x40(%rbp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movq 0x28(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq 0x40(%rbp), %rax
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movq -0x20(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12430
movl $0x0, -0x44(%rbp)
movl $0x1, -0x48(%rbp)
cmpl $0x20, -0x44(%rbp)
jge 0x10c4c
movl -0x48(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jl 0x10c37
jmp 0x10c4c
jmp 0x10c39
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movl -0x48(%rbp), %eax
shll %eax
movl %eax, -0x48(%rbp)
jmp 0x10c27
cmpl $0x4, -0x44(%rbp)
jge 0x10c59
movl $0x4, -0x44(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0x44(%rbp), %esi
callq 0x124b0
movq %rax, -0x58(%rbp)
movq -0x68(%rbp), %rax
movl -0x4c(%rbp), %ecx
shll %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jae 0x10d0c
movl -0x4c(%rbp), %eax
shll %eax
cltq
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
shrq %rax
orq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
shrq $0x2, %rax
orq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
shrq $0x4, %rax
orq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
shrq $0x8, %rax
orq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
shrq $0x10, %rax
orq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x60(%rbp), %rsi
imulq $0x18, -0x68(%rbp), %rdx
callq 0x2ae0
movq %rax, -0x60(%rbp)
jmp 0x10d0e
movl $0x0, -0x48(%rbp)
movl $0x1, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jg 0x10dd6
movl -0x44(%rbp), %eax
cmpl -0x4c(%rbp), %eax
je 0x10d62
movq 0x38(%rbp), %rax
movslq -0x44(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq 0x38(%rbp), %rcx
movl -0x44(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
je 0x10dc6
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x30(%rbp), %rsi
movq -0x38(%rbp), %rdx
movl -0x40(%rbp), %ecx
movq 0x10(%rbp), %r8
movl -0x44(%rbp), %r9d
subl -0x48(%rbp), %r9d
movq 0x38(%rbp), %r14
movslq -0x48(%rbp), %rax
imulq $0x18, %rax, %rax
addq %rax, %r14
movq -0x58(%rbp), %r11
movq -0x20(%rbp), %r10
addq $0x30, %r10
movq 0x40(%rbp), %rax
leaq -0x70(%rbp), %rbx
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x12570
movl -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
jmp 0x10dc8
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x10d1c
movq -0x58(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x10de8
movl $0x0, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq 0x38(%rbp), %rsi
callq 0x2670
movq -0x58(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x116b0
movq -0x58(%rbp), %rdi
callq 0x13060
movq (%rax), %rcx
movq %rcx, -0x90(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x88(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
movl -0x80(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x9c(%rbp)
movq -0x90(%rbp), %rax
shrq $0x20, %rax
movl %eax, -0x94(%rbp)
movq -0x90(%rbp), %rax
subl $0x40000000, %eax       # imm = 0x40000000
movl %eax, -0xa0(%rbp)
movl -0x88(%rbp), %eax
movl %eax, -0xa4(%rbp)
movq -0x38(%rbp), %rax
movl -0x94(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0xac(%rbp)
movl -0xa0(%rbp), %edi
movl -0xa4(%rbp), %esi
movl -0xac(%rbp), %edx
movq -0x38(%rbp), %rax
movl -0x94(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movl -0x40(%rbp), %r8d
movq 0x10(%rbp), %r9
callq 0x13140
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
addl -0xa0(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0x80(%rbp), %eax
shrl %eax
movl -0xa4(%rbp), %ecx
subl -0x88(%rbp), %ecx
shll %ecx
addl %ecx, %eax
movl %eax, -0x98(%rbp)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
cmpl -0xac(%rbp), %eax
jge 0x110b0
movl -0xa8(%rbp), %eax
addl $0x1, %eax
cmpl -0x40(%rbp), %eax
jge 0x110b0
movl $0x1, -0xb0(%rbp)
movl $0x1, -0xb4(%rbp)
cmpq $0x2, -0x70(%rbp)
jb 0x10f78
movq -0x60(%rbp), %rdi
movq -0x70(%rbp), %rax
subq $0x2, %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movl -0x94(%rbp), %esi
movl -0xa0(%rbp), %edx
subl $0x1, %edx
movl -0xa4(%rbp), %ecx
addl $0x1, %ecx
movl -0x98(%rbp), %r8d
addl $0x1, %r8d
movl -0x9c(%rbp), %r9d
movl -0x7c(%rbp), %eax
movl %eax, (%rsp)
callq 0x13270
movl %eax, -0xb0(%rbp)
cmpq $0x1, -0x70(%rbp)
jb 0x10fca
movq -0x60(%rbp), %rdi
movq -0x70(%rbp), %rax
subq $0x1, %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movl -0x94(%rbp), %esi
movl -0xa0(%rbp), %edx
movl -0xa4(%rbp), %ecx
addl $0x1, %ecx
movl -0x98(%rbp), %r8d
addl $0x2, %r8d
movl -0x9c(%rbp), %r9d
movl -0x7c(%rbp), %eax
movl %eax, (%rsp)
callq 0x13270
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb0(%rbp)
je 0x11016
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0x94(%rbp), %edx
movl -0xa0(%rbp), %ecx
subl $0x1, %ecx
movl -0xa4(%rbp), %r8d
addl $0x1, %r8d
movl -0x98(%rbp), %r9d
addl $0x1, %r9d
movl -0x7c(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl $0x1, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
cmpl $0x0, -0xb4(%rbp)
jne 0x11028
cmpl $0x0, -0xb0(%rbp)
je 0x11068
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0x94(%rbp), %edx
movl -0xa0(%rbp), %ecx
movl -0xa4(%rbp), %r8d
addl $0x1, %r8d
movl -0x98(%rbp), %r9d
addl $0x2, %r9d
movl -0x7c(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl $0x1, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0x94(%rbp), %edx
movl -0xa0(%rbp), %ecx
addl $0x1, %ecx
movl -0xa4(%rbp), %r8d
movl -0x98(%rbp), %r9d
addl $0x1, %r9d
movl -0x9c(%rbp), %r10d
movl -0x7c(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
jmp 0x116ab
movl -0xa8(%rbp), %eax
addl $0x1, %eax
cmpl -0x40(%rbp), %eax
jge 0x11481
movq -0x30(%rbp), %rax
movq 0x58(%rax), %rax
movl -0x94(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0xb8(%rbp)
movl $0x0, -0xc0(%rbp)
movl $0xffffffff, -0xc4(%rbp) # imm = 0xFFFFFFFF
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rax
movq -0x30(%rbp), %rcx
movq 0x58(%rcx), %rcx
movl -0x94(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x20(%rbp), %rcx
cmpq 0x38(%rcx), %rax
jne 0x11193
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x1114b
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
shlq %rax
movq %rax, -0x110(%rbp)
jmp 0x11159
movl $0x2, %eax
movq %rax, -0x110(%rbp)
jmp 0x11159
movq -0x110(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdx
shlq $0x4, %rdx
callq 0x2ae0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rdx
movq 0x30(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x30(%rdx)
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xd8(%rbp)
movl -0x94(%rbp), %edi
movl -0xa0(%rbp), %esi
callq 0x10740
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movq %rcx, (%rax)
movq -0xd8(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq -0xd8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x11227
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
addq $0x78, %rsi
movl -0x94(%rbp), %edx
movl -0x7c(%rbp), %ecx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %r8
callq 0x10770
movl %eax, -0xc4(%rbp)
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
cmpl -0xb8(%rbp), %eax
jge 0x11426
movq -0xd0(%rbp), %rax
movslq -0xbc(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0xdc(%rbp)
movq -0xd0(%rbp), %rax
movslq -0xbc(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movl %eax, -0xe0(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0xdc(%rbp), %eax
movl %eax, %esi
shlq $0x20, %rsi
movl -0xa8(%rbp), %eax
addl $0x1, %eax
cltq
orq %rax, %rsi
leaq -0xe4(%rbp), %rdx
callq 0x13440
movq 0x10(%rbp), %rax
movl -0xa8(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
movq -0x38(%rbp), %rcx
movl -0xdc(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
movslq -0xe0(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jne 0x11374
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
cmpl $0x0, -0xe4(%rbp)
je 0x1136f
movq -0x58(%rbp), %rdi
callq 0x13470
movq %rax, -0xf0(%rbp)
movl -0xdc(%rbp), %edi
movl -0xa8(%rbp), %esi
addl $0x1, %esi
subl -0xe0(%rbp), %esi
callq 0x10740
movq %rax, %rcx
movq -0xf0(%rbp), %rax
movq %rcx, (%rax)
movl -0xe0(%rbp), %ecx
movq -0xf0(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x98(%rbp), %ecx
addl $0x2, %ecx
shll %ecx
orl $0x1, %ecx
movq -0xf0(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0xc4(%rbp), %ecx
movq -0xf0(%rbp), %rax
movl %ecx, 0x14(%rax)
jmp 0x11410
cmpl $0x0, -0xe4(%rbp)
je 0x1140e
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0xdc(%rbp), %edx
movl -0xa8(%rbp), %ecx
subl -0xe0(%rbp), %ecx
movl -0xe0(%rbp), %r8d
movl -0x98(%rbp), %r9d
addl $0x1, %r9d
movl -0xc4(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl $0x1, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0xdc(%rbp), %edx
movl -0xa8(%rbp), %ecx
addl $0x1, %ecx
subl -0xe0(%rbp), %ecx
movl -0xe0(%rbp), %r8d
movl -0x98(%rbp), %r9d
addl $0x2, %r9d
movl -0xc4(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl $0x1, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
jmp 0x11410
jmp 0x11412
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x11231
cmpl $0x0, -0xb8(%rbp)
je 0x1143d
movl -0xc0(%rbp), %eax
cmpl -0xb8(%rbp), %eax
je 0x1147c
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0x94(%rbp), %edx
movl -0xa0(%rbp), %ecx
addl $0x1, %ecx
movl -0xa4(%rbp), %r8d
movl -0x98(%rbp), %r9d
addl $0x1, %r9d
movl -0x7c(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl $0x1, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
jmp 0x116a9
cmpl $-0x1, 0x18(%rbp)
je 0x1149d
movl -0x94(%rbp), %eax
cmpl 0x18(%rbp), %eax
jne 0x11506
movl -0xa4(%rbp), %eax
cmpl 0x20(%rbp), %eax
jne 0x11506
movl -0x94(%rbp), %ecx
movq 0x40(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0xa4(%rbp), %ecx
movq 0x40(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x98(%rbp), %ecx
subl -0xa8(%rbp), %ecx
subl $0x1, %ecx
movq 0x40(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x7c(%rbp), %ecx
movq 0x28(%rbp), %rax
movl %ecx, (%rax)
movq 0x30(%rbp), %rax
movl $0x0, (%rax)
movq -0x58(%rbp), %rdi
callq 0x13500
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x60(%rbp), %rsi
callq 0x2670
movq $0x0, -0x18(%rbp)
jmp 0x11742
movl -0xa4(%rbp), %eax
addl $0x1, %eax
cmpl -0xac(%rbp), %eax
jge 0x11563
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0x94(%rbp), %edx
movl -0xa0(%rbp), %ecx
subl $0x1, %ecx
movl -0xa4(%rbp), %r8d
addl $0x1, %r8d
movl -0x98(%rbp), %r9d
addl $0x1, %r9d
movl -0x9c(%rbp), %r10d
movl -0x7c(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
jmp 0x116a5
movl -0x94(%rbp), %eax
cmpl 0x18(%rbp), %eax
je 0x116a1
movq -0x30(%rbp), %rax
movq 0x58(%rax), %rax
movl -0x94(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0xf4(%rbp)
movl $0xffffffff, -0xfc(%rbp) # imm = 0xFFFFFFFF
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rax
movq -0x30(%rbp), %rcx
movq 0x58(%rcx), %rcx
movl -0x94(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x108(%rbp)
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x115f4
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
addq $0x78, %rsi
movl -0x94(%rbp), %edx
movl -0x7c(%rbp), %ecx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %r8
callq 0x10770
movl %eax, -0xfc(%rbp)
movl $0x0, -0xf8(%rbp)
movl -0xf8(%rbp), %eax
cmpl -0xf4(%rbp), %eax
jge 0x1169f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x108(%rbp), %rax
movslq -0xf8(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
movl -0xa8(%rbp), %ecx
movq -0x108(%rbp), %rax
movslq -0xf8(%rbp), %rsi
shlq $0x5, %rsi
addq %rsi, %rax
subl 0x14(%rax), %ecx
movq -0x108(%rbp), %rax
movslq -0xf8(%rbp), %rsi
shlq $0x5, %rsi
addq %rsi, %rax
movl 0x14(%rax), %r8d
movl -0x98(%rbp), %r9d
addl $0x1, %r9d
movl -0xfc(%rbp), %eax
leaq -0x70(%rbp), %rsi
movl $0x1, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x13350
movl -0xf8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf8(%rbp)
jmp 0x115fe
jmp 0x116a3
jmp 0x116a3
jmp 0x116a5
jmp 0x116a7
jmp 0x116a9
jmp 0x116ab
jmp 0x10df8
movq -0x58(%rbp), %rdi
callq 0x13500
movq -0x70(%rbp), %rax
movl %eax, %ecx
movl %ecx, -0x4c(%rbp)
movq 0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x60(%rbp), %rax
movq %rax, -0x78(%rbp)
cmpl $0x0, -0x50(%rbp)
je 0x116f1
movq -0x20(%rbp), %rdi
movl -0x4c(%rbp), %esi
movq -0x78(%rbp), %rdx
callq 0x13550
movl %eax, %ecx
movl %ecx, -0x4c(%rbp)
movq 0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jle 0x1173a
movl -0x4c(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jle 0x1173a
movl -0x3c(%rbp), %eax
addl $0x1, %eax
andl $0xf, %eax
cmpl $0x0, %eax
jne 0x1173a
movl -0x4c(%rbp), %edi
movq -0x78(%rbp), %rsi
movq -0x28(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x28(%rbp), %rax
movl 0x4(%rax), %ecx
callq 0x13880
movl %eax, %ecx
movl %ecx, -0x4c(%rbp)
movq 0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x78(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbx
popq %r14
popq %rbp
retq
nopw %cs:(%rax,%rax)