// File: /workspace/github_c_makefile_star2_O0/lh3[P]minigraph/ggsimple.c
// Function: mg_gc_index
int32_t mg_gc_index(void *km, int min_mapq, int min_map_len, int min_depth_len, const gfa_t *g, int32_t n_seq, mg_gchains_t *const* gcs,
					double *a_dens, int32_t **soff_, int32_t **qoff_, mg_intv_t **sintv_, mg_intv_t **qintv_)
{
	int32_t t, i, j, max_acnt, *scnt, *soff, *qcnt, *qoff;
	int64_t sum_acnt, sum_alen;
	mg_intv_t *sintv, *qintv;

	// count the number of intervals on each segment
	KCALLOC(km, scnt, g->n_seg);
	KCALLOC(km, qcnt, n_seq);
	for (t = 0, max_acnt = 0; t < n_seq; ++t) {
		const mg_gchains_t *gt = gcs[t];
		for (i = 0; i < gt->n_gc; ++i) {
			const mg_gchain_t *gc = &gt->gc[i];
			if (gc->id != gc->parent) continue;
			if (gc->blen < min_depth_len || gc->mapq < min_mapq) continue;
			if (gc->n_anchor > max_acnt) max_acnt = gc->n_anchor;
			++qcnt[t];
			for (j = 0; j < gc->cnt; ++j)
				++scnt[gt->lc[gc->off + j].v>>1];
		}
	}
	if (max_acnt == 0) { // no gchain
		kfree(km, scnt); kfree(km, qcnt);
		return 0;
	}

	// compute soff[] and qoff[]
	KMALLOC(km, soff, g->n_seg + 1);
	KMALLOC(km, qoff, n_seq + 1);
	for (soff[0] = 0, i = 1; i <= g->n_seg; ++i)
		soff[i] = soff[i - 1] + scnt[i - 1];
	for (qoff[0] = 0, i = 1; i <= n_seq; ++i)
		qoff[i] = qoff[i - 1] + qcnt[i - 1];

	// populate the interval list
	memset(scnt, 0, 4 * g->n_seg);
	memset(qcnt, 0, 4 * n_seq);
	KMALLOC(km, sintv, soff[g->n_seg]);
	KMALLOC(km, qintv, qoff[n_seq]);
	sum_acnt = sum_alen = 0;
	for (t = 0; t < n_seq; ++t) {
		const mg_gchains_t *gt = gcs[t];
		for (i = 0; i < gt->n_gc; ++i) {
			const mg_gchain_t *gc = &gt->gc[i];
			mg_intv_t *p;
			if (gc->id != gc->parent) continue;
			if (gc->blen < min_depth_len || gc->mapq < min_mapq) continue;
			p = &qintv[qoff[t] + qcnt[t]];
			++qcnt[t];
			p->st = gc->qs, p->en = gc->qe, p->rev = 0, p->far = -1, p->i = -1;
			for (j = 0; j < gc->cnt; ++j) {
				const mg_llchain_t *lc = &gt->lc[gc->off + j];
				int32_t rs, re, tmp;
				if (lc->cnt > 0) { // compute start and end on the forward strand on the segment
					const mg128_t *qs = &gt->a[lc->off];
					const mg128_t *qe = &gt->a[lc->off + lc->cnt - 1];
					int32_t rs0 = (int32_t)qs->x + 1 - (int32_t)(qs->y>>32&0xff);
					int32_t re0 = (int32_t)qe->x;
					assert(rs0 >= 0 && re0 > rs0 && re0 < g->seg[lc->v>>1].len);
					sum_alen += re0 - rs0, sum_acnt += (qe->x>>32) - (qs->x>>32) + 1;
					rs = 0, re = g->seg[lc->v>>1].len;
					if (j == 0) rs = gc->p? gc->p->ss : rs0;
					if (j == gc->cnt - 1) re = gc->p? gc->p->ee : re0;
					if (lc->v&1) // swap rs and re
						tmp = rs, rs = g->seg[lc->v>>1].len - re, re = g->seg[lc->v>>1].len - tmp;
				} else rs = 0, re = g->seg[lc->v>>1].len;
				p = &sintv[soff[lc->v>>1] + scnt[lc->v>>1]];
				++scnt[lc->v>>1];
				p->st = rs, p->en = re, p->rev = lc->v&1, p->far = -1, p->i = -1;
			}
		}
	}
	*a_dens = (double)sum_acnt / sum_alen;

	// sort and index intervals
	for (i = 0; i < g->n_seg; ++i) {
		assert(soff[i+1] - soff[i] == scnt[i]);
		mg_intv_index(soff[i+1] - soff[i], &sintv[soff[i]]);
	}
	kfree(km, scnt);
	for (i = 0; i < n_seq; ++i) {
		assert(qoff[i+1] - qoff[i] == qcnt[i]);
		mg_intv_index(qoff[i+1] - qoff[i], &qintv[qoff[i]]);
	}
	kfree(km, qcnt);

	*sintv_ = sintv, *qintv_ = qintv;
	*soff_ = soff, *qoff_ = qoff;
	return max_acnt;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq 0x38(%rbp), %rax
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
movl $0x4, %edx
callq 0x2540
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x2c(%rbp), %rsi
movl $0x4, %edx
callq 0x2540
movq %rax, -0x58(%rbp)
movl $0x0, -0x30(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x33b83
movq 0x10(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x88(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x88(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x33b73
movq -0x88(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x34(%rbp), %rcx
imulq $0x68, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movl (%rax), %eax
movq -0x90(%rbp), %rcx
cmpl 0x4(%rcx), %eax
je 0x33ab7
jmp 0x33b65
movq -0x90(%rbp), %rax
movl 0x2c(%rax), %eax
cmpl -0x1c(%rbp), %eax
jl 0x33ada
movq -0x90(%rbp), %rax
movl 0x44(%rax), %eax
andl $0xff, %eax
cmpl -0x14(%rbp), %eax
jge 0x33adf
jmp 0x33b65
movq -0x90(%rbp), %rax
movl 0x10(%rax), %eax
cmpl -0x3c(%rbp), %eax
jle 0x33afb
movq -0x90(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x3c(%rbp)
movq -0x58(%rbp), %rax
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0x90(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x33b63
movq -0x48(%rbp), %rax
movq -0x88(%rbp), %rcx
movq 0x20(%rcx), %rcx
movq -0x90(%rbp), %rdx
movl 0x8(%rdx), %edx
addl -0x38(%rbp), %edx
movslq %edx, %rdx
imulq $0x14, %rdx, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x33b13
jmp 0x33b65
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x33a6d
jmp 0x33b75
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x33a47
cmpl $0x0, -0x3c(%rbp)
jne 0x33baf
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x2670
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x2670
movl $0x0, -0x4(%rbp)
jmp 0x343d9
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
shlq $0x2, %rsi
callq 0x2890
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
shlq $0x2, %rsi
callq 0x2890
movq %rax, -0x60(%rbp)
movq -0x50(%rbp), %rax
movl $0x0, (%rax)
movl $0x1, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x4(%rcx), %eax
ja 0x33c3b
movq -0x50(%rbp), %rax
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
movq -0x48(%rbp), %rax
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
addl (%rax,%rcx,4), %edx
movq -0x50(%rbp), %rax
movslq -0x34(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x33bf9
movq -0x60(%rbp), %rax
movl $0x0, (%rax)
movl $0x1, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jg 0x33c8a
movq -0x60(%rbp), %rax
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
movq -0x58(%rbp), %rax
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
addl (%rax,%rcx,4), %edx
movq -0x60(%rbp), %rax
movslq -0x34(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x33c4c
movq -0x48(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
shll $0x2, %eax
movl %eax, %eax
movl %eax, %edx
xorl %esi, %esi
callq 0x2190
movq -0x58(%rbp), %rdi
movl -0x2c(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x2190
movq -0x10(%rbp), %rdi
movq -0x50(%rbp), %rax
movq -0x28(%rbp), %rcx
movl 0x4(%rcx), %ecx
movslq (%rax,%rcx,4), %rsi
shlq $0x4, %rsi
callq 0x2890
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
movq -0x60(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movslq (%rax,%rcx,4), %rsi
shlq $0x4, %rsi
callq 0x2890
movq %rax, -0x80(%rbp)
movq $0x0, -0x70(%rbp)
movq $0x0, -0x68(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x3422f
movq 0x10(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x98(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x98(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x3421f
movq -0x98(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x34(%rbp), %rcx
imulq $0x68, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movl (%rax), %eax
movq -0xa0(%rbp), %rcx
cmpl 0x4(%rcx), %eax
je 0x33d7b
jmp 0x34211
movq -0xa0(%rbp), %rax
movl 0x2c(%rax), %eax
cmpl -0x1c(%rbp), %eax
jl 0x33d9e
movq -0xa0(%rbp), %rax
movl 0x44(%rax), %eax
andl $0xff, %eax
cmpl -0x14(%rbp), %eax
jge 0x33da3
jmp 0x34211
movq -0x80(%rbp), %rax
movq -0x60(%rbp), %rcx
movslq -0x30(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
movq -0x58(%rbp), %rdx
movslq -0x30(%rbp), %rsi
addl (%rdx,%rsi,4), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0x58(%rbp), %rax
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movq -0xa0(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0xa8(%rbp), %rax
movl %ecx, (%rax)
movq -0xa0(%rbp), %rax
movl 0x1c(%rax), %edx
movq -0xa8(%rbp), %rax
movl 0x4(%rax), %ecx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
andl $0x80000000, %ecx       # imm = 0x80000000
orl %edx, %ecx
movl %ecx, 0x4(%rax)
movq -0xa8(%rbp), %rax
movl 0x4(%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
orl $0x0, %ecx
movl %ecx, 0x4(%rax)
movq -0xa8(%rbp), %rax
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movq -0xa8(%rbp), %rax
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0xa0(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x3420f
movq -0x98(%rbp), %rax
movq 0x20(%rax), %rax
movq -0xa0(%rbp), %rcx
movl 0x8(%rcx), %ecx
addl -0x38(%rbp), %ecx
movslq %ecx, %rcx
imulq $0x14, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jle 0x34104
movq -0x98(%rbp), %rax
movq 0x28(%rax), %rax
movq -0xb0(%rbp), %rcx
movslq (%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq -0x98(%rbp), %rax
movq 0x28(%rax), %rax
movq -0xb0(%rbp), %rcx
movl (%rcx), %ecx
movq -0xb0(%rbp), %rdx
addl 0x4(%rdx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
movq -0xc8(%rbp), %rax
movq (%rax), %rax
addl $0x1, %eax
movq -0xc8(%rbp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0xd4(%rbp)
movq -0xd0(%rbp), %rax
movq (%rax), %rax
movl %eax, -0xd8(%rbp)
cmpl $0x0, -0xd4(%rbp)
jl 0x33f6d
movl -0xd8(%rbp), %eax
cmpl -0xd4(%rbp), %eax
jle 0x33f6d
movl -0xd8(%rbp), %eax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0xb0(%rbp), %rdx
movl 0x8(%rdx), %edx
shrl %edx
movl %edx, %edx
shlq $0x6, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jge 0x33f6d
jmp 0x33f8c
leaq 0xa034(%rip), %rdi      # 0x3dfa8
leaq 0xa061(%rip), %rsi      # 0x3dfdc
movl $0x46, %edx
leaq 0xa060(%rip), %rcx      # 0x3dfe7
callq 0x2170
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
cltq
addq -0x70(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0xd0(%rbp), %rax
movq (%rax), %rax
shrq $0x20, %rax
movq -0xc8(%rbp), %rcx
movq (%rcx), %rcx
shrq $0x20, %rcx
subq %rcx, %rax
addq $0x1, %rax
addq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0xb4(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xb0(%rbp), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0xb8(%rbp)
cmpl $0x0, -0x38(%rbp)
jne 0x3403e
movq -0xa0(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x34026
movq -0xa0(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0xdc(%rbp)
jmp 0x34032
movl -0xd4(%rbp), %eax
movl %eax, -0xdc(%rbp)
movl -0xdc(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl -0x38(%rbp), %eax
movq -0xa0(%rbp), %rcx
movl 0xc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3408e
movq -0xa0(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x34076
movq -0xa0(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x14(%rax), %eax
movl %eax, -0xe0(%rbp)
jmp 0x34082
movl -0xd8(%rbp), %eax
movl %eax, -0xe0(%rbp)
movl -0xe0(%rbp), %eax
movl %eax, -0xb8(%rbp)
movq -0xb0(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x34102
movl -0xb4(%rbp), %eax
movl %eax, -0xbc(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xb0(%rbp), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl (%rax), %eax
subl -0xb8(%rbp), %eax
movl %eax, -0xb4(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xb0(%rbp), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl (%rax), %eax
subl -0xbc(%rbp), %eax
movl %eax, -0xb8(%rbp)
jmp 0x34133
movl $0x0, -0xb4(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0xb0(%rbp), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0xb8(%rbp)
movq -0x78(%rbp), %rax
movq -0x50(%rbp), %rcx
movq -0xb0(%rbp), %rdx
movl 0x8(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,4), %ecx
movq -0x48(%rbp), %rdx
movq -0xb0(%rbp), %rsi
movl 0x8(%rsi), %esi
shrl %esi
movl %esi, %esi
addl (%rdx,%rsi,4), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0x48(%rbp), %rax
movq -0xb0(%rbp), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movl -0xb4(%rbp), %ecx
movq -0xa8(%rbp), %rax
movl %ecx, (%rax)
movl -0xb8(%rbp), %edx
movq -0xa8(%rbp), %rax
movl 0x4(%rax), %ecx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
andl $0x80000000, %ecx       # imm = 0x80000000
orl %edx, %ecx
movl %ecx, 0x4(%rax)
movq -0xb0(%rbp), %rax
movl 0x8(%rax), %edx
andl $0x1, %edx
movq -0xa8(%rbp), %rax
movl 0x4(%rax), %ecx
andl $0x1, %edx
shll $0x1f, %edx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
orl %edx, %ecx
movl %ecx, 0x4(%rax)
movq -0xa8(%rbp), %rax
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movq -0xa8(%rbp), %rax
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x33e50
jmp 0x34211
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x33d31
jmp 0x34221
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x33d0b
cvtsi2sdq -0x68(%rbp), %xmm0
cvtsi2sdq -0x70(%rbp), %xmm1
divsd %xmm1, %xmm0
movq 0x18(%rbp), %rax
movsd %xmm0, (%rax)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jae 0x342ec
movq -0x50(%rbp), %rax
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x50(%rbp), %rcx
movslq -0x34(%rbp), %rdx
subl (%rcx,%rdx,4), %eax
movq -0x48(%rbp), %rcx
movslq -0x34(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jne 0x34288
jmp 0x342a7
leaq 0x9df0(%rip), %rdi      # 0x3e07f
leaq 0x9d46(%rip), %rsi      # 0x3dfdc
movl $0x58, %edx
leaq 0x9d45(%rip), %rcx      # 0x3dfe7
callq 0x2170
movq -0x50(%rbp), %rax
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edi
movq -0x50(%rbp), %rax
movslq -0x34(%rbp), %rcx
subl (%rax,%rcx,4), %edi
movq -0x78(%rbp), %rsi
movq -0x50(%rbp), %rax
movslq -0x34(%rbp), %rcx
movslq (%rax,%rcx,4), %rax
shlq $0x4, %rax
addq %rax, %rsi
callq 0x3fe0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x3424e
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x2670
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x3439a
movq -0x60(%rbp), %rax
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x60(%rbp), %rcx
movslq -0x34(%rbp), %rdx
subl (%rcx,%rdx,4), %eax
movq -0x58(%rbp), %rcx
movslq -0x34(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jne 0x34336
jmp 0x34355
leaq 0x9d61(%rip), %rdi      # 0x3e09e
leaq 0x9c98(%rip), %rsi      # 0x3dfdc
movl $0x5d, %edx
leaq 0x9c97(%rip), %rcx      # 0x3dfe7
callq 0x2170
movq -0x60(%rbp), %rax
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edi
movq -0x60(%rbp), %rax
movslq -0x34(%rbp), %rcx
subl (%rax,%rcx,4), %edi
movq -0x80(%rbp), %rsi
movq -0x60(%rbp), %rax
movslq -0x34(%rbp), %rcx
movslq (%rax,%rcx,4), %rax
shlq $0x4, %rax
addq %rax, %rsi
callq 0x3fe0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x34300
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x2670
movq -0x78(%rbp), %rcx
movq 0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x80(%rbp), %rcx
movq 0x38(%rbp), %rax
movq %rcx, (%rax)
movq -0x50(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x60(%rbp), %rcx
movq 0x28(%rbp), %rax
movq %rcx, (%rax)
movl -0x3c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)