// File: /workspace/github_c_makefile_star2_O0/lh3[P]minigraph/galign.c
// Function: mg_gchain_gen_ds
void mg_gchain_gen_ds(void *km, const gfa_t *g, const gfa_edseq_t *es, const char *qseq, mg_gchains_t *gt)
{
	int32_t i, m_off = 0, n_off = 0, *off = 0;
	void *km2;
	kstring_t str = {0,0,0}, seq = {0,0,0};
	km2 = km_init2(km, 0);
	for (i = 0; i < gt->n_gc; ++i) {
		mg_gchain_t *gc = &gt->gc[i];
		int32_t j;
		int64_t x, y, ds_len;
		str.l = seq.l = n_off = 0;
		if (gc->p->aplen > seq.m) {
			seq.s = Krealloc(km2, char, seq.s, gc->p->aplen);
			seq.m = gc->p->aplen;
		}
		for (j = 0, seq.l = 0; j < gc->cnt; ++j) { // extract the aligned sequence in the graph
			int32_t k = gc->off + j;
			uint32_t v = gt->lc[k].v;
			int32_t slen = es[v].len;
			int32_t st = j > 0? 0 : gc->p->ss;
			int32_t en = j < gc->cnt - 1? slen : gc->p->ee;
			assert(seq.l + (en - st) <= gc->p->aplen);
			memcpy(&seq.s[seq.l], &es[v].seq[st], en - st);
			seq.l += en - st;
		}
		assert(seq.l == gc->p->aplen);
		for (j = 0, x = 0, y = gc->qs, ds_len = 0, n_off = 0; j < gc->p->n_cigar; ++j) { // estimate the approximate length of ds
			int64_t op = gc->p->cigar[j]&0xf, len = gc->p->cigar[j]>>4, z;
			if (op == 0 || op == 7 || op == 8) { // alignment match
				int32_t l = 0;
				++n_off;
				for (z = 0; z < len; ++z) {
					if (mg_get_nucl(seq.s, x+z) != mg_get_nucl(qseq, y+z))
						ds_len += 3, ds_len += 6, n_off += 2, l = 0;
					else ++l;
				}
				ds_len += 6;
				x += len, y += len;
			} else if (op == 1) { // insertion
				ds_len += len + 1, ++n_off, y += len;
			} else if (op == 2) { // deletion
				ds_len += len + 1, ++n_off, x += len;
			}
		}
		if (n_off > m_off) {
			m_off = n_off + (n_off>>1) + 16;
			off = Krealloc(km2, int32_t, off, m_off);
		}
		mg_str_reserve(km2, &str, ds_len);
		for (j = 0, x = 0, y = gc->qs, n_off = 0; j < gc->p->n_cigar; ++j) { // write ds
			int64_t op = gc->p->cigar[j]&0xf, len = gc->p->cigar[j]>>4;
			assert(n_off < m_off);
			if (op == 0 || op == 7 || op == 8) { // alignment match
				int64_t z;
				int32_t l = 0;
				for (z = 0; z < len; ++z) {
					uint8_t cx = mg_get_nucl(seq.s, x+z);
					uint8_t cy = mg_get_nucl(qseq, y+z);
					if (cx != cy) {
						if (l > 0) {
							off[n_off++] = str.l;
							mg_sprintf_km(km2, &str, ":%d", l);
						}
						off[n_off++] = str.l;
						mg_sprintf_km(km2, &str, "*%c%c", "acgtn"[cx], "acgtn"[cy]);
						l = 0;
					} else ++l;
				}
				if (l > 0) {
					off[n_off++] = str.l;
					mg_sprintf_km(km2, &str, ":%d", l);
				}
				x += len, y += len;
			} else if (op == 1) { // insertion
				int64_t z, ll, lr;
				for (z = 1; z <= len; ++z)
					if (y - z < gc->qs || qseq[y + len - z] != qseq[y - z])
						break;
				lr = z - 1;
				for (z = 0; z < len; ++z)
					if (y + len + z >= gc->qe || qseq[y + len + z] != qseq[y + z])
						break;
				ll = z;
				off[n_off++] = str.l;
				mg_sprintf_km(km2, &str, "+");
				write_indel(km2, &str, len, &qseq[y], ll, lr);
				y += len;
			} else if (op == 2) { // deletion
				int64_t z, ll, lr;
				for (z = 1; z <= len; ++z)
					if (x - z < 0 || seq.s[x + len - z] != seq.s[x - z])
						break;
				lr = z - 1;
				for (z = 0; z < len; ++z)
					if (x + len + z >= gc->p->aplen || seq.s[x + z] != seq.s[x + len + z])
						break;
				ll = z;
				off[n_off++] = str.l;
				mg_sprintf_km(km2, &str, "-");
				write_indel(km2, &str, len, &seq.s[x], ll, lr);
				x += len;
			}
		}
		gc->ds.len = str.l;
		gc->ds.ds = Kcalloc(gt->km, char, str.l + 1);
		memcpy(gc->ds.ds, str.s, str.l);
		gc->ds.n_off = n_off;
		gc->ds.off = Kcalloc(gt->km, int32_t, n_off);
		memcpy(gc->ds.off, off, n_off * sizeof(int32_t));
	}
	km_destroy(km2); // this frees both str.s and seq.s
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl $0x0, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movq $0x0, -0x40(%rbp)
leaq -0x58(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2190
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2190
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x24a0
movq %rax, -0x48(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x2ae87
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x2c(%rbp), %rcx
imulq $0x68, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x68(%rbp)
movl $0x0, -0x58(%rbp)
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movl 0xc(%rax), %eax
cmpl -0x64(%rbp), %eax
jbe 0x2a3f8
movq -0x48(%rbp), %rdi
movq -0x60(%rbp), %rsi
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movslq 0xc(%rax), %rdx
shlq $0x0, %rdx
callq 0x2ae0
movq %rax, -0x60(%rbp)
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movl 0xc(%rax), %eax
movl %eax, -0x64(%rbp)
movl $0x0, -0x74(%rbp)
movl $0x0, -0x68(%rbp)
movl -0x74(%rbp), %eax
movq -0x70(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x2a563
movq -0x70(%rbp), %rax
movl 0x8(%rax), %eax
addl -0x74(%rbp), %eax
movl %eax, -0x94(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x94(%rbp), %rcx
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x98(%rbp)
movq -0x18(%rbp), %rax
movl -0x98(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x74(%rbp)
jle 0x2a46f
xorl %eax, %eax
movl %eax, -0x11c(%rbp)
jmp 0x2a480
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x11c(%rbp)
movl -0x11c(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0x74(%rbp), %eax
movq -0x70(%rbp), %rcx
movl 0xc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x2a4ab
movl -0x9c(%rbp), %eax
movl %eax, -0x120(%rbp)
jmp 0x2a4bc
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x14(%rax), %eax
movl %eax, -0x120(%rbp)
movl -0x120(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0x68(%rbp), %eax
movl -0xa4(%rbp), %ecx
subl -0xa0(%rbp), %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movq 0x48(%rcx), %rcx
cmpl 0xc(%rcx), %eax
ja 0x2a4e8
jmp 0x2a507
leaq 0x13468(%rip), %rdi     # 0x3d957
leaq 0x1333b(%rip), %rsi     # 0x3d831
movl $0xcb, %edx
leaq 0x13477(%rip), %rcx     # 0x3d979
callq 0x2170
movq -0x60(%rbp), %rdi
movl -0x68(%rbp), %eax
addq %rax, %rdi
movq -0x18(%rbp), %rax
movl -0x98(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movslq -0xa0(%rbp), %rax
addq %rax, %rsi
movl -0xa4(%rbp), %eax
subl -0xa0(%rbp), %eax
movslq %eax, %rdx
callq 0x2230
movl -0xa4(%rbp), %eax
subl -0xa0(%rbp), %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x2a406
movl -0x68(%rbp), %eax
movq -0x70(%rbp), %rcx
movq 0x48(%rcx), %rcx
cmpl 0xc(%rcx), %eax
jne 0x2a575
jmp 0x2a594
leaq 0x1345d(%rip), %rdi     # 0x3d9d9
leaq 0x132ae(%rip), %rsi     # 0x3d831
movl $0xcf, %edx
leaq 0x133ea(%rip), %rcx     # 0x3d979
callq 0x2170
movl $0x0, -0x74(%rbp)
movq $0x0, -0x80(%rbp)
movq -0x70(%rbp), %rax
movslq 0x18(%rax), %rax
movq %rax, -0x88(%rbp)
movq $0x0, -0x90(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x74(%rbp), %eax
movq -0x70(%rbp), %rcx
movq 0x48(%rcx), %rcx
cmpl (%rcx), %eax
jge 0x2a7d8
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x74(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
andq $0xf, %rax
movq %rax, -0xb0(%rbp)
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x74(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
shrq $0x4, %rax
movq %rax, -0xb8(%rbp)
cmpq $0x0, -0xb0(%rbp)
je 0x2a631
cmpq $0x7, -0xb0(%rbp)
je 0x2a631
cmpq $0x8, -0xb0(%rbp)
jne 0x2a746
movl $0x0, -0xc4(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq $0x0, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
cmpq -0xb8(%rbp), %rax
jge 0x2a70b
movq -0x60(%rbp), %rax
movq -0x80(%rbp), %rcx
addq -0xc0(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1ac71(%rip), %rax     # 0x452f0
movzbl (%rax,%rcx), %eax
movq -0x20(%rbp), %rcx
movq -0x88(%rbp), %rdx
addq -0xc0(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movl %ecx, %edx
leaq 0x1ac4e(%rip), %rcx     # 0x452f0
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2a6e3
movq -0x90(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
addq $0x6, %rax
movq %rax, -0x90(%rbp)
movl -0x34(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x34(%rbp)
movl $0x0, -0xc4(%rbp)
jmp 0x2a6f2
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
jmp 0x2a6f4
movq -0xc0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc0(%rbp)
jmp 0x2a64f
movq -0x90(%rbp), %rax
addq $0x6, %rax
movq %rax, -0x90(%rbp)
movq -0xb8(%rbp), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0xb8(%rbp), %rax
addq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2a7c8
cmpq $0x1, -0xb0(%rbp)
jne 0x2a789
movq -0xb8(%rbp), %rax
addq $0x1, %rax
addq -0x90(%rbp), %rax
movq %rax, -0x90(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0xb8(%rbp), %rax
addq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2a7c6
cmpq $0x2, -0xb0(%rbp)
jne 0x2a7c4
movq -0xb8(%rbp), %rax
addq $0x1, %rax
addq -0x90(%rbp), %rax
movq %rax, -0x90(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0xb8(%rbp), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x2a7c6
jmp 0x2a7c8
jmp 0x2a7ca
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x2a5c4
movl -0x34(%rbp), %eax
cmpl -0x30(%rbp), %eax
jle 0x2a809
movl -0x34(%rbp), %eax
movl -0x34(%rbp), %ecx
sarl %ecx
addl %ecx, %eax
addl $0x10, %eax
movl %eax, -0x30(%rbp)
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movslq -0x30(%rbp), %rdx
shlq $0x2, %rdx
callq 0x2ae0
movq %rax, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movq -0x90(%rbp), %rax
movl %eax, %edx
leaq -0x58(%rbp), %rsi
callq 0x30800
movl $0x0, -0x74(%rbp)
movq $0x0, -0x80(%rbp)
movq -0x70(%rbp), %rax
movslq 0x18(%rax), %rax
movq %rax, -0x88(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x74(%rbp), %eax
movq -0x70(%rbp), %rcx
movq 0x48(%rcx), %rcx
cmpl (%rcx), %eax
jge 0x2adf0
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x74(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
andq $0xf, %rax
movq %rax, -0xd0(%rbp)
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x74(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
shrq $0x4, %rax
movq %rax, -0xd8(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x2a899
jmp 0x2a8b8
leaq 0x1314f(%rip), %rdi     # 0x3d9ef
leaq 0x12f8a(%rip), %rsi     # 0x3d831
movl $0xe9, %edx
leaq 0x130c6(%rip), %rcx     # 0x3d979
callq 0x2170
cmpq $0x0, -0xd0(%rbp)
je 0x2a8da
cmpq $0x7, -0xd0(%rbp)
je 0x2a8da
cmpq $0x8, -0xd0(%rbp)
jne 0x2aa94
movl $0x0, -0xe4(%rbp)
movq $0x0, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
cmpq -0xd8(%rbp), %rax
jge 0x2aa2e
movq -0x60(%rbp), %rax
movq -0x80(%rbp), %rcx
addq -0xe0(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1a9d1(%rip), %rax     # 0x452f0
movb (%rax,%rcx), %al
movb %al, -0xe5(%rbp)
movq -0x20(%rbp), %rax
movq -0x88(%rbp), %rcx
addq -0xe0(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1a9a9(%rip), %rax     # 0x452f0
movb (%rax,%rcx), %al
movb %al, -0xe6(%rbp)
movzbl -0xe5(%rbp), %eax
movzbl -0xe6(%rbp), %ecx
cmpl %ecx, %eax
je 0x2aa06
cmpl $0x0, -0xe4(%rbp)
jle 0x2a9a3
movl -0x58(%rbp), %edx
movq -0x40(%rbp), %rax
movl -0x34(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x34(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x48(%rbp), %rdi
movl -0xe4(%rbp), %ecx
leaq -0x58(%rbp), %rsi
leaq 0x11b77(%rip), %rdx     # 0x3c513
movb $0x0, %al
callq 0x30e30
movl -0x58(%rbp), %edx
movq -0x40(%rbp), %rax
movl -0x34(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x34(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x48(%rbp), %rdi
movzbl -0xe5(%rbp), %eax
movl %eax, %ecx
leaq 0x13034(%rip), %rax     # 0x3da03
movsbl (%rax,%rcx), %ecx
movzbl -0xe6(%rbp), %eax
movl %eax, %edx
leaq 0x13020(%rip), %rax     # 0x3da03
movsbl (%rax,%rdx), %r8d
leaq -0x58(%rbp), %rsi
leaq 0x1300a(%rip), %rdx     # 0x3d9fd
movb $0x0, %al
callq 0x30e30
movl $0x0, -0xe4(%rbp)
jmp 0x2aa15
movl -0xe4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe4(%rbp)
jmp 0x2aa17
movq -0xe0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe0(%rbp)
jmp 0x2a8ef
cmpl $0x0, -0xe4(%rbp)
jle 0x2aa6b
movl -0x58(%rbp), %edx
movq -0x40(%rbp), %rax
movl -0x34(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x34(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x48(%rbp), %rdi
movl -0xe4(%rbp), %ecx
leaq -0x58(%rbp), %rsi
leaq 0x11aaf(%rip), %rdx     # 0x3c513
movb $0x0, %al
callq 0x30e30
movq -0xd8(%rbp), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0xd8(%rbp), %rax
addq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2ade0
cmpq $0x1, -0xd0(%rbp)
jne 0x2ac4b
movq $0x1, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
cmpq -0xd8(%rbp), %rax
jg 0x2ab27
movq -0x88(%rbp), %rax
subq -0xf0(%rbp), %rax
movq -0x70(%rbp), %rcx
movslq 0x18(%rcx), %rcx
cmpq %rcx, %rax
jl 0x2ab0f
movq -0x20(%rbp), %rax
movq -0x88(%rbp), %rcx
addq -0xd8(%rbp), %rcx
subq -0xf0(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x20(%rbp), %rcx
movq -0x88(%rbp), %rdx
subq -0xf0(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2ab11
jmp 0x2ab27
jmp 0x2ab13
movq -0xf0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xf0(%rbp)
jmp 0x2aaad
movq -0xf0(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x100(%rbp)
movq $0x0, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
cmpq -0xd8(%rbp), %rax
jge 0x2abc8
movq -0x88(%rbp), %rax
addq -0xd8(%rbp), %rax
addq -0xf0(%rbp), %rax
movq -0x70(%rbp), %rcx
movslq 0x1c(%rcx), %rcx
cmpq %rcx, %rax
jge 0x2abad
movq -0x20(%rbp), %rax
movq -0x88(%rbp), %rcx
addq -0xd8(%rbp), %rcx
addq -0xf0(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x20(%rbp), %rcx
movq -0x88(%rbp), %rdx
addq -0xf0(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2abaf
jmp 0x2abc8
jmp 0x2abb1
movq -0xf0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xf0(%rbp)
jmp 0x2ab44
movq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
movl -0x58(%rbp), %edx
movq -0x40(%rbp), %rax
movl -0x34(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x34(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x48(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq 0x12e0c(%rip), %rdx     # 0x3da09
movb $0x0, %al
callq 0x30e30
movq -0x48(%rbp), %rdi
movq -0xd8(%rbp), %rdx
movq -0x20(%rbp), %rcx
addq -0x88(%rbp), %rcx
movq -0xf8(%rbp), %r8
movq -0x100(%rbp), %r9
leaq -0x58(%rbp), %rsi
callq 0x2aea0
movq -0xd8(%rbp), %rax
addq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2adde
cmpq $0x2, -0xd0(%rbp)
jne 0x2addc
movq $0x1, -0x108(%rbp)
movq -0x108(%rbp), %rax
cmpq -0xd8(%rbp), %rax
jg 0x2acce
movq -0x80(%rbp), %rax
subq -0x108(%rbp), %rax
cmpq $0x0, %rax
jl 0x2acb6
movq -0x60(%rbp), %rax
movq -0x80(%rbp), %rcx
addq -0xd8(%rbp), %rcx
subq -0x108(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x60(%rbp), %rcx
movq -0x80(%rbp), %rdx
subq -0x108(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2acb8
jmp 0x2acce
jmp 0x2acba
movq -0x108(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x108(%rbp)
jmp 0x2ac64
movq -0x108(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x118(%rbp)
movq $0x0, -0x108(%rbp)
movq -0x108(%rbp), %rax
cmpq -0xd8(%rbp), %rax
jge 0x2ad67
movq -0x80(%rbp), %rax
addq -0xd8(%rbp), %rax
addq -0x108(%rbp), %rax
movq -0x70(%rbp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xc(%rcx), %rcx
cmpq %rcx, %rax
jge 0x2ad4f
movq -0x60(%rbp), %rax
movq -0x80(%rbp), %rcx
addq -0x108(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x60(%rbp), %rcx
movq -0x80(%rbp), %rdx
addq -0xd8(%rbp), %rdx
addq -0x108(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2ad51
jmp 0x2ad67
jmp 0x2ad53
movq -0x108(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x108(%rbp)
jmp 0x2aceb
movq -0x108(%rbp), %rax
movq %rax, -0x110(%rbp)
movl -0x58(%rbp), %edx
movq -0x40(%rbp), %rax
movl -0x34(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x34(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq -0x48(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq 0x115c4(%rip), %rdx     # 0x3c360
movb $0x0, %al
callq 0x30e30
movq -0x48(%rbp), %rdi
movq -0xd8(%rbp), %rdx
movq -0x60(%rbp), %rcx
addq -0x80(%rbp), %rcx
movq -0x110(%rbp), %r8
movq -0x118(%rbp), %r9
leaq -0x58(%rbp), %rsi
callq 0x2aea0
movq -0xd8(%rbp), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x2adde
jmp 0x2ade0
jmp 0x2ade2
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x2a844
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x50(%rax)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x2540
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x70(%rbp), %rax
movq 0x60(%rax), %rdi
movq -0x50(%rbp), %rsi
movl -0x58(%rbp), %eax
movl %eax, %edx
callq 0x2230
movl -0x34(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x54(%rax)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movslq -0x34(%rbp), %rsi
movl $0x4, %edx
callq 0x2540
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x70(%rbp), %rax
movq 0x58(%rax), %rdi
movq -0x40(%rbp), %rsi
movslq -0x34(%rbp), %rdx
shlq $0x2, %rdx
callq 0x2230
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x2a37d
movq -0x48(%rbp), %rdi
callq 0x25f0
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopl (%rax)