// File: /workspace/github_c_makefile_star2_O0/lh3[P]fermi-lite/unitig.c
// Function: fm6_get_nei
int fm6_get_nei(const rld_t *e, int min_match, int beg, kstring_t *s, rldintv_v *nei, // input and output variables
				rldintv_v *prev, rldintv_v *curr, fm32s_v *cat,                        // temporary arrays
				uint64_t *used)                                                      // optional info
{
	int ori_l = s->l, j, i, c, rbeg, is_forked = 0;
	rldintv_v *swap;
	rldintv_t ok[6], ok0;

	curr->n = nei->n = cat->n = 0;
	if (prev->n == 0) { // when this routine is called for the seed, prev may filled by fm6_is_contained()
		overlap_intv(e, s->l - beg, (uint8_t*)s->s + beg, min_match, s->l - beg - 1, 0, prev, 0);
		if (prev->n == 0) return -1; // no overlap
		for (j = 0; j < prev->n; ++j) prev->a[j].info += beg;
	}
	kv_resize(int, *cat, prev->m);
	for (j = 0; j < prev->n; ++j) cat->a[j] = 0; // only one interval; all point to 0
	while (prev->n) {
		for (j = 0, curr->n = 0; j < prev->n; ++j) {
			rldintv_t *p = &prev->a[j];
			if (cat->a[j] < 0) continue;
			rld_extend(e, p, ok, 0); // forward extension
			if (ok[0].x[2] && ori_l != s->l) { // some (partial) reads end here
				rld_extend0(e, &ok[0], &ok0, 1); // backward extension to look for sentinels
				if (ok0.x[2]) { // the match is bounded by sentinels - a full-length match
					if (ok[0].x[2] == p->x[2] && p->x[2] == ok0.x[2]) { // never consider a read contained in another read
						int cat0 = cat->a[j]; // a category approximately corresponds to one neighbor, though not always
						assert(j == 0 || cat->a[j] > cat->a[j-1]); // otherwise not irreducible
						ok0.info = ori_l - (p->info&0xffffffffU);
						for (i = j; i < prev->n && cat->a[i] == cat0; ++i) cat->a[i] = -1; // mask out other intervals of the same cat
						kv_push(rldintv_t, *nei, ok0); // keep in the neighbor vector
						continue; // no need to go through for(c); do NOT set "used" as this neighbor may be rejected later
					} else if (used) set_bits(used, &ok0); // the read is contained in another read; mark it as used
				}
			} // ~if(ok[0].x[2])
			if (cat->a[j] < 0) continue; // no need to proceed if we have finished this path
			for (c = 1; c < 5; ++c) // collect extensible intervals
				if (ok[c].x[2]) {
					rld_extend0(e, &ok[c], &ok0, 1);
					if (ok0.x[2]) { // do not extend intervals whose left end is not bounded by a sentinel
						ok[c].info = (p->info&0xfffffff0ffffffffLLU) | (uint64_t)c<<32;
						kv_push(rldintv_t, *curr, ok[c]);
					}
				}
		} // ~for(j)
		if (curr->n) { // update category
			uint32_t last, cat0;
			kv_resize(int, *cat, curr->m);
			c = curr->a[0].info>>32&0xf;
			kputc(fm6_comp(c), s);
			ks_introsort(infocmp, curr->n, curr->a);
			last = curr->a[0].info >> 32;
			cat->a[0] = 0;
			curr->a[0].info &= 0xffffffff;
			for (j = 1, cat0 = 0; j < curr->n; ++j) { // this loop recalculate cat
				if (curr->a[j].info>>32 != last)
					last = curr->a[j].info>>32, cat0 = j;
				cat->a[j] = cat0;
				curr->a[j].info = (curr->a[j].info&0xffffffff) | (uint64_t)cat0<<36;
			}
			if (cat0 != 0) is_forked = 1;
		}
		swap = curr; curr = prev; prev = swap; // swap curr and prev
	} // ~while(prev->n)
	if (nei->n == 0) return -1; // no overlap
	rbeg = ori_l - (uint32_t)nei->a[0].info;
	if (nei->n == 1 && is_forked) { // this may happen if there are contained reads; fix this
		fm6_set_intv(e, 0, ok0);
		for (i = rbeg; i < ori_l; ++i) {
			rld_extend(e, &ok0, ok, 0);
			ok0 = ok[fm6_comp(s->s[i])];
		}
		for (i = ori_l; i < s->l; ++i) {
			int c0 = -1;
			rld_extend(e, &ok0, ok, 0);
			for (c = 1, j = 0; c < 5; ++c)
				if (ok[c].x[2] && ok[c].x[0] <= nei->a[0].x[0] && ok[c].x[0] + ok[c].x[2] >= nei->a[0].x[0] + nei->a[0].x[2])
					++j, c0 = c;
			if (j == 0 && ok[0].x[2]) break;
			assert(j == 1);
			s->s[i] = fm6_comp(c0);
			ok0 = ok[c0];
		}
		s->l = i; s->s[s->l] = 0;
	}
	if (nei->n > 1) s->l = ori_l, s->s[s->l] = 0;
	return rbeg;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1b0, %rsp            # imm = 0x1B0
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl %eax, -0x34(%rbp)
movl $0x0, -0x48(%rbp)
movq 0x18(%rbp), %rax
movq $0x0, (%rax)
movq -0x28(%rbp), %rax
movq $0x0, (%rax)
movq 0x10(%rbp), %rax
movq $0x0, (%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x100a6
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rax
movq (%rax), %rax
movslq -0x18(%rbp), %rcx
subq %rcx, %rax
movl %eax, %edx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
movslq -0x18(%rbp), %rax
addq %rax, %rcx
movl -0x14(%rbp), %r8d
movq -0x20(%rbp), %rax
movq (%rax), %rax
movslq -0x18(%rbp), %rdi
subq %rdi, %rax
subq $0x1, %rax
movl %eax, %r9d
movq -0x30(%rbp), %rax
leaq -0x150(%rbp), %rdi
xorl %r10d, %r10d
movl $0x0, (%rsp)
movq %rax, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
callq 0xf9f0
movq -0x30(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x10066
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x10c25
movl $0x0, -0x38(%rbp)
movslq -0x38(%rbp), %rax
movq -0x30(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x100a4
movslq -0x18(%rbp), %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
addq 0x18(%rax), %rcx
movq %rcx, 0x18(%rax)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1006d
jmp 0x100a6
jmp 0x100a8
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x30(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x10189
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x2, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x4, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x8, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x10, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x2, %rsi
callq 0x21e0
movq %rax, %rcx
movq 0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x1018b
movl $0x0, -0x38(%rbp)
movslq -0x38(%rbp), %rax
movq -0x30(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x101bd
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x10192
jmp 0x101bf
movq -0x30(%rbp), %rax
cmpq $0x0, (%rax)
je 0x108a8
movl $0x0, -0x38(%rbp)
movq 0x10(%rbp), %rax
movq $0x0, (%rax)
movslq -0x38(%rbp), %rax
movq -0x30(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1060f
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x158(%rbp)
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jge 0x10221
jmp 0x10601
movq -0x10(%rbp), %rdi
movq -0x158(%rbp), %rsi
leaq -0x110(%rbp), %rdx
xorl %ecx, %ecx
callq 0xd6f0
cmpq $0x0, -0x100(%rbp)
je 0x1047a
movslq -0x34(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq (%rcx), %rax
je 0x1047a
movq -0x10(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0x130(%rbp), %rdx
movl $0x1, %ecx
callq 0xd9e0
cmpq $0x0, -0x120(%rbp)
je 0x10478
movq -0x100(%rbp), %rax
movq -0x158(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jne 0x1045d
movq -0x158(%rbp), %rax
movq 0x10(%rax), %rax
cmpq -0x120(%rbp), %rax
jne 0x1045d
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x15c(%rbp)
cmpl $0x0, -0x38(%rbp)
je 0x102f3
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movq 0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl -0x38(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpl (%rcx,%rdx,4), %eax
jle 0x102f5
jmp 0x10314
leaq 0x1555f(%rip), %rdi     # 0x2585b
leaq 0x154ee(%rip), %rsi     # 0x257f1
movl $0xa6, %edx
leaq 0x1556e(%rip), %rcx     # 0x2587d
callq 0x20f0
movslq -0x34(%rbp), %rax
movq -0x158(%rbp), %rdx
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq 0x18(%rdx), %rcx
subq %rcx, %rax
movq %rax, -0x118(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
movslq -0x3c(%rbp), %rcx
movq -0x30(%rbp), %rdx
xorl %eax, %eax
cmpq (%rdx), %rcx
movb %al, -0x169(%rbp)
jae 0x10370
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl -0x15c(%rbp), %eax
sete %al
movb %al, -0x169(%rbp)
movb -0x169(%rbp), %al
testb $0x1, %al
jne 0x1037c
jmp 0x1039a
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x1033d
jmp 0x1039c
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1040d
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x103cc
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x178(%rbp)
jmp 0x103da
movl $0x2, %eax
movq %rax, -0x178(%rbp)
jmp 0x103da
movq -0x178(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x5, %rsi
callq 0x21e0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
shlq $0x5, %rcx
addq %rcx, %rax
movq -0x130(%rbp), %rcx
movq %rcx, (%rax)
movq -0x128(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x120(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x118(%rbp), %rcx
movq %rcx, 0x18(%rax)
jmp 0x10601
cmpq $0x0, 0x20(%rbp)
je 0x10474
movq 0x20(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x10c40
jmp 0x10476
jmp 0x10478
jmp 0x1047a
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jge 0x10491
jmp 0x10601
movl $0x1, -0x40(%rbp)
cmpl $0x5, -0x40(%rbp)
jge 0x105ff
movslq -0x40(%rbp), %rcx
leaq -0x110(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
cmpq $0x0, 0x10(%rax)
je 0x105ef
movq -0x10(%rbp), %rdi
movslq -0x40(%rbp), %rax
leaq -0x110(%rbp), %rsi
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x130(%rbp), %rdx
movl $0x1, %ecx
callq 0xd9e0
cmpq $0x0, -0x120(%rbp)
je 0x105ed
movq -0x158(%rbp), %rax
movabsq $-0xf00000001, %rcx     # imm = 0xFFFFFFF0FFFFFFFF
andq 0x18(%rax), %rcx
movslq -0x40(%rbp), %rax
shlq $0x20, %rax
orq %rax, %rcx
movslq -0x40(%rbp), %rdx
leaq -0x110(%rbp), %rax
shlq $0x5, %rdx
addq %rdx, %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1059b
movq 0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1055a
movq 0x10(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x180(%rbp)
jmp 0x10568
movl $0x2, %eax
movq %rax, -0x180(%rbp)
jmp 0x10568
movq -0x180(%rbp), %rcx
movq 0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x5, %rsi
callq 0x21e0
movq %rax, %rcx
movq 0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
shlq $0x5, %rcx
addq %rcx, %rax
movslq -0x40(%rbp), %rdx
leaq -0x110(%rbp), %rcx
shlq $0x5, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
jmp 0x105ed
jmp 0x105ef
jmp 0x105f1
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x10498
jmp 0x10601
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x101df
movq 0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x1088b
jmp 0x1061f
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x10700
movq 0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq 0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x2, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x4, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x8, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x10, %rcx
movq 0x18(%rbp), %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x2, %rsi
callq 0x21e0
movq %rax, %rcx
movq 0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x10702
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
shrq $0x20, %rax
andq $0xf, %rax
movl %eax, -0x40(%rbp)
cmpl $0x1, -0x40(%rbp)
jl 0x10735
cmpl $0x4, -0x40(%rbp)
jg 0x10735
movl $0x5, %eax
subl -0x40(%rbp), %eax
movl %eax, -0x184(%rbp)
jmp 0x1073e
movl -0x40(%rbp), %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %edi
movq -0x20(%rbp), %rsi
callq 0xdd60
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xea40
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
shrq $0x20, %rax
movl %eax, -0x160(%rbp)
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x0, (%rax)
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq 0x18(%rax), %rcx
movq %rcx, 0x18(%rax)
movl $0x1, -0x38(%rbp)
movl $0x0, -0x164(%rbp)
movslq -0x38(%rbp), %rax
movq 0x10(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x10879
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
shrq $0x20, %rax
movl -0x160(%rbp), %ecx
cmpq %rcx, %rax
je 0x10811
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x18(%rax), %rax
shrq $0x20, %rax
movl %eax, -0x160(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x164(%rbp)
movl -0x164(%rbp), %edx
movq 0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq 0x18(%rax), %rcx
movl -0x164(%rbp), %eax
shlq $0x24, %rax
orq %rax, %rcx
movq 0x10(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x38(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movq %rcx, 0x18(%rax)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x107b0
cmpl $0x0, -0x164(%rbp)
je 0x10889
movl $0x1, -0x48(%rbp)
jmp 0x1088b
movq 0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rax
movq %rax, 0x10(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x30(%rbp)
jmp 0x101bf
movq -0x28(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x108be
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x10c25
movl -0x34(%rbp), %eax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
subl %ecx, %eax
movl %eax, -0x44(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x1, (%rax)
jne 0x10bf7
cmpl $0x0, -0x48(%rbp)
je 0x10bf7
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq (%rcx), %rax
movq %rax, -0x120(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movq %rax, -0x128(%rbp)
movq $0x0, -0x118(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x10a11
movq -0x10(%rbp), %rdi
leaq -0x110(%rbp), %rdx
leaq -0x130(%rbp), %rsi
xorl %ecx, %ecx
callq 0xd6f0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x1, %eax
jl 0x109ab
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x4, %eax
jg 0x109ab
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
movl $0x5, %eax
subl %ecx, %eax
movl %eax, -0x188(%rbp)
jmp 0x109c1
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movl %eax, -0x188(%rbp)
movl -0x188(%rbp), %eax
movslq %eax, %rcx
leaq -0x110(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x130(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x128(%rbp)
movq 0x10(%rax), %rcx
movq %rcx, -0x120(%rbp)
movq 0x18(%rax), %rax
movq %rax, -0x118(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x1093d
movl -0x34(%rbp), %eax
movl %eax, -0x3c(%rbp)
movslq -0x3c(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x10bd9
movl $0xffffffff, -0x168(%rbp) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rdi
leaq -0x110(%rbp), %rdx
leaq -0x130(%rbp), %rsi
xorl %ecx, %ecx
callq 0xd6f0
movl $0x1, -0x40(%rbp)
movl $0x0, -0x38(%rbp)
cmpl $0x5, -0x40(%rbp)
jge 0x10b07
movslq -0x40(%rbp), %rcx
leaq -0x110(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
cmpq $0x0, 0x10(%rax)
je 0x10af7
movslq -0x40(%rbp), %rcx
leaq -0x110(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpq (%rcx), %rax
ja 0x10af7
movslq -0x40(%rbp), %rcx
leaq -0x110(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq -0x40(%rbp), %rdx
leaq -0x110(%rbp), %rcx
shlq $0x5, %rdx
addq %rdx, %rcx
addq 0x10(%rcx), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rcx
movq -0x28(%rbp), %rdx
movq 0x10(%rdx), %rdx
addq 0x10(%rdx), %rcx
cmpq %rcx, %rax
jb 0x10af7
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
movl -0x40(%rbp), %eax
movl %eax, -0x168(%rbp)
jmp 0x10af9
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x10a59
cmpl $0x0, -0x38(%rbp)
jne 0x10b1c
cmpq $0x0, -0x100(%rbp)
je 0x10b1c
jmp 0x10bd9
cmpl $0x1, -0x38(%rbp)
jne 0x10b24
jmp 0x10b43
leaq 0x14dc6(%rip), %rdi     # 0x258f1
leaq 0x14cbf(%rip), %rsi     # 0x257f1
movl $0xda, %edx
leaq 0x14d3f(%rip), %rcx     # 0x2587d
callq 0x20f0
cmpl $0x1, -0x168(%rbp)
jl 0x10b68
cmpl $0x4, -0x168(%rbp)
jg 0x10b68
movl $0x5, %eax
subl -0x168(%rbp), %eax
movl %eax, -0x18c(%rbp)
jmp 0x10b74
movl -0x168(%rbp), %eax
movl %eax, -0x18c(%rbp)
movl -0x18c(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x3c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movslq -0x168(%rbp), %rcx
leaq -0x110(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x130(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x128(%rbp)
movq 0x10(%rax), %rcx
movq %rcx, -0x120(%rbp)
movq 0x18(%rax), %rax
movq %rax, -0x118(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x10a17
movslq -0x3c(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movb $0x0, (%rax,%rcx)
movq -0x28(%rbp), %rax
cmpq $0x1, (%rax)
jbe 0x10c1f
movslq -0x34(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movb $0x0, (%rax,%rcx)
movl -0x44(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbp
retq
nopw %cs:(%rax,%rax)