// File: /workspace/github_c_makefile_star2_O3/lh3[P]fermi2/match.c
// Function: discover
static void discover(const rld_t *e, const fmdsmem_t *q, const fmdsmem_t *p, int l_seq, const char *seq, const char *qual, kstring_t *s, kstring_t cmp[2])
{
	int start, end, i, ext[2], left, right, tmp_l, pos;
	int64_t occ[2];
	rldintv_t ovlp;

	// find the coordinate from which the extension will be applied
	if (q == 0 && p == 0) {
		start = 0; end = l_seq;
	} else if (q == 0) {
		if (p->ik.info>>32 == 0) return; // no novel allele
		start = 0; end = p->ik.info>>32;
	} else if (p == 0) {
		if ((uint32_t)q->ik.info == l_seq) return; // no novel allele
		start = (uint32_t)q->ik.info; end = l_seq;
	} else {
		start = (uint32_t)q->ik.info, end = p->ik.info>>32;
		if (start >= end && q->ok[1][0].x[2] == q->ik.x[2] && p->ik.x[2] == p->ok[0][0].x[2]) return;
	}
	// find the SAI for the overlap (if applicable)
	memset(&ovlp, 0, sizeof(rldintv_t));
	ovlp.x[2] = e->mcnt[0];
	if (start <= end) { // no overlap
		left = start - 1, right = end;
		for (i = left + 1; i < right; ++i)
			if (seq[i] < 5) break;
		if (i == end) return; // the gap is filled with "N"
	} else {
		rldintv_t ok[6];
		left = end - 1, right = start;
		for (i = right - 1; i > left; --i) {
			rld_extend(e, &ovlp, ok, 1);
			ovlp = ok[(int)seq[i]];
			assert(ovlp.x[2] > 0);
		}
	}
	occ[0] = occ[1] = 0;
	ext[0] = ext[1] = 0;
	// left extension
	if (left >= 0) {
		int64_t l = ovlp.x[0], u = l + ovlp.x[2];
		uint64_t ol[6], ou[6];
		for (i = left; i >= 0; --i) {
			int c = seq[i];
			rld_rank1a(e, l, ol);
			rld_rank1a(e, u, ou);
			l = e->cnt[c] + ol[c];
			u = e->cnt[c] + ou[c];
			if (u - l <= q->ik.x[2]) break;
		}
		assert(i >= 0 && u - l == q->ik.x[2]);
		ext[0] = left + 1 - i;
		occ[0] = u - l;
	}
	// right extension
	if (right < l_seq) {
		int64_t l = ovlp.x[1], u = l + ovlp.x[2];
		uint64_t ol[6], ou[6];
		for (i = right; i < l_seq; ++i) {
			int c = fmd_comp(seq[i]);
			rld_rank1a(e, l, ol);
			rld_rank1a(e, u, ou);
			l = e->cnt[c] + ol[c];
			u = e->cnt[c] + ou[c];
			if (u - l <= p->ik.x[2]) break;
		}
		assert(i < l_seq && u - l == p->ik.x[2]);
		ext[1] = i + 1 - right;
		occ[1] = u - l;
	}
	if (ovlp.x[2] == occ[0] + occ[1]) return;
	// cut sequence
	pos = left + 1 - ext[0];
	cmp[0].l = cmp[1].l = 0;
	kputsn(&seq[pos], (right + ext[1]) - (left + 1 - ext[0]), &cmp[0]);
	kputsn(cmp[0].s, cmp[0].l, &cmp[1]);
	seq_revcomp6(cmp[1].l, (uint8_t*)cmp[1].s);
	// print
	if (ovlp.x[2] == e->mcnt[0]) ovlp.x[2] = 0;
	ksprintf(s, "NS\t%d\t", pos);
	tmp_l = end < start? start - end : 0;
	if (strcmp(cmp[0].s, cmp[1].s) <= 0) {
		ksprintf(s, "+\t%d\t%d\t%d\t%ld\t%ld\t%ld\t", ext[0] + tmp_l, end - start, ext[1] + tmp_l, (long)occ[0], (long)ovlp.x[2], (long)occ[1]);
		for (i = 0; i < cmp[0].l; ++i)
			kputc("$ACGTN"[(int)cmp[0].s[i]], s);
		kputc('\t', s);
		if (qual) kputsn(&qual[pos], cmp[0].l, s);
		else kputc('*', s);
	} else {
		ksprintf(s, "-\t%d\t%d\t%d\t%ld\t%ld\t%ld\t", ext[1] + tmp_l, end - start, ext[0] + tmp_l, (long)occ[1], (long)ovlp.x[2], (long)occ[0]);
		for (i = 0; i < cmp[0].l; ++i)
			kputc("$ACGTN"[(int)cmp[1].s[i]], s);
		kputc('\t', s);
		if (qual) {
			for (i = pos + cmp[0].l - 1; i >= pos; --i)
				kputc(qual[i], s);
		} else kputc('*', s);
	}
	kputc('\n', s);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
movq %r8, 0x8(%rsp)
movl %ecx, %r8d
movq %rsi, %r10
movq %rdi, %r12
xorl %edi, %edi
movq %rsi, %rax
orq %rdx, %rax
movq %rdx, 0x68(%rsp)
movq %r9, 0x60(%rsp)
jne 0x1a84e
movl %r8d, %esi
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movaps %xmm0, 0x40(%rsp)
movq 0x28(%r12), %rax
movq (%rax), %rbp
movq %rbp, 0x50(%rsp)
cmpl %esi, %edi
movl %edi, 0x1c(%rsp)
movq %rsi, 0x38(%rsp)
movq %r8, 0x20(%rsp)
jle 0x1a893
movq %r10, 0x10(%rsp)
movslq %edi, %r15
movslq %esi, %r13
leaq 0x40(%rsp), %rbx
leaq 0xa0(%rsp), %r14
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
movl $0x1, %ecx
callq 0x4ef6
movq 0x8(%rsp), %rax
movsbq -0x1(%rax,%r15), %rax
shlq $0x5, %rax
movups 0xa0(%rsp,%rax), %xmm0
movups 0xb0(%rsp,%rax), %xmm1
movaps %xmm1, 0x50(%rsp)
movaps %xmm0, 0x40(%rsp)
movq 0x50(%rsp), %rbp
testq %rbp, %rbp
je 0x1b083
decq %r15
cmpq %r13, %r15
jg 0x1a7de
movq 0x38(%rsp), %rsi
movl %esi, %ecx
movl 0x1c(%rsp), %edi
movl %edi, %eax
movq %rax, 0x30(%rsp)
movq 0x20(%rsp), %r8
movq 0x10(%rsp), %r10
jmp 0x1a8c5
testq %r10, %r10
je 0x1aab1
movl 0x18(%r10), %edi
testq %rdx, %rdx
je 0x1adf4
movl 0x1c(%rdx), %esi
cmpl %esi, %edi
jl 0x1a796
movq 0xf0(%r10), %rax
cmpq 0x10(%r10), %rax
jne 0x1a796
movq 0x10(%rdx), %rax
cmpq 0x30(%rdx), %rax
jne 0x1a796
jmp 0x1b071
movl %edi, %eax
jge 0x1a8b4
movslq %edi, %rcx
addq 0x8(%rsp), %rcx
movl %edi, %eax
cmpb $0x5, (%rcx)
jl 0x1a8b4
incl %eax
incq %rcx
cmpl %eax, %esi
jne 0x1a8a1
jmp 0x1b071
movl %edi, %ecx
movl %esi, %edx
movq %rdx, 0x30(%rsp)
cmpl %esi, %eax
je 0x1b071
xorl %ebx, %ebx
testl %ecx, %ecx
movq %rcx, 0x28(%rsp)
jle 0x1a97a
movq %r12, 0x10(%rsp)
movq 0x40(%rsp), %rsi
addq %rsi, %rbp
movl %ecx, %r14d
xorl %r13d, %r13d
testq %r14, %r14
jle 0x1b0a2
movq %r10, %r12
movq 0x8(%rsp), %rax
movsbq -0x1(%rax,%r14), %r15
decq %r14
movl %r13d, %ebx
movq 0x10(%rsp), %r13
movq %r13, %rdi
leaq 0xa0(%rsp), %rdx
callq 0x4895
movq %r13, %rdi
movq %rbp, %rsi
leaq 0x70(%rsp), %rdx
callq 0x4895
movq 0x20(%r13), %rax
movl %ebx, %r13d
movq (%rax,%r15,8), %rbp
movq 0xa0(%rsp,%r15,8), %rax
leaq (%rax,%rbp), %rsi
movq 0x70(%rsp,%r15,8), %r15
addq %r15, %rbp
subq %rax, %r15
incl %r13d
movq %r12, %r10
cmpq 0x10(%r12), %r15
ja 0x1a8e7
jne 0x1b0a2
movq 0x50(%rsp), %rbp
movl 0x1c(%rsp), %edi
movq 0x38(%rsp), %rsi
movq 0x20(%rsp), %r8
movq 0x10(%rsp), %r12
xorl %ebx, %ebx
jmp 0x1a980
xorl %r13d, %r13d
xorl %r15d, %r15d
movq 0x30(%rsp), %rdx
cmpl %r8d, %edx
jge 0x1aa50
movl %edi, %eax
movq %rsi, %rcx
movq 0x48(%rsp), %rsi
addq %rsi, %rbp
cmpl %edi, %ecx
cmovgl %ecx, %eax
cltq
addl %eax, %r8d
subl %edx, %r8d
subl %eax, %r8d
movq %r8, 0x20(%rsp)
addq 0x8(%rsp), %rax
movq %rax, 0x10(%rsp)
xorl %ebx, %ebx
movq 0x10(%rsp), %rax
movzbl (%rax,%rbx), %eax
movb $0x5, %cl
subb %al, %cl
leal -0x1(%rax), %edx
cmpb $0x4, %dl
movzbl %cl, %r14d
cmovael %eax, %r14d
movq %r12, %rdi
leaq 0xa0(%rsp), %rdx
callq 0x4895
movq %r12, %rdi
movq %rbp, %rsi
leaq 0x70(%rsp), %rdx
callq 0x4895
movsbq %r14b, %rax
movq 0xa0(%rsp,%rax,8), %rsi
movq 0x70(%rsp,%rax,8), %rbp
movq %rbp, %r14
subq %rsi, %r14
movq 0x68(%rsp), %rcx
cmpq 0x10(%rcx), %r14
jbe 0x1aa55
movq 0x20(%r12), %rcx
movq (%rcx,%rax,8), %rax
addq %rax, %rsi
addq %rax, %rbp
incq %rbx
cmpl %ebx, 0x20(%rsp)
jne 0x1a9bc
leaq 0x488a(%rip), %rdi      # 0x1f2c2
leaq 0x47df(%rip), %rsi      # 0x1f21e
leaq 0x47e0(%rip), %rcx      # 0x1f226
movl $0xcf, %edx
callq 0x2120
xorl %r14d, %r14d
jmp 0x1aa5e
jne 0x1aa31
incl %ebx
movq 0x50(%rsp), %rbp
leaq (%r14,%r15), %rax
cmpq %rax, %rbp
movq 0x28(%rsp), %rcx
je 0x1b071
movq 0x1a8(%rsp), %rdx
subl %r13d, %ecx
xorl %eax, %eax
movl %eax, 0x10(%rdx)
movl %eax, (%rdx)
movq %rcx, 0x28(%rsp)
movslq %ecx, %rax
addq %rax, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rcx
subl %eax, %ecx
movl %ecx, %ebp
addl %ebx, %ebp
leal (%rcx,%rbx), %eax
incl %eax
cmpl 0x4(%rdx), %eax
jae 0x1aac4
movq 0x8(%rdx), %rax
xorl %edi, %edi
jmp 0x1ab02
movq 0x18(%rdx), %rsi
shrq $0x20, %rsi
jne 0x1a796
jmp 0x1b071
movl %eax, %ecx
shrl %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x2, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x4, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x8, %eax
orl %ecx, %eax
movl %eax, %esi
shrl $0x10, %esi
orl %eax, %esi
incl %esi
movl %esi, 0x4(%rdx)
movq 0x8(%rdx), %rdi
callq 0x2260
movq 0x1a8(%rsp), %rcx
movq %rax, 0x8(%rcx)
movl (%rcx), %edi
addq %rax, %rdi
movslq %ebp, %rbp
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
callq 0x21f0
movq 0x1a8(%rsp), %rdx
addl (%rdx), %ebp
movl %ebp, (%rdx)
movq 0x8(%rdx), %rax
movb $0x0, (%rax,%rbp)
movq 0x8(%rdx), %rsi
movslq (%rdx), %rax
movl 0x10(%rdx), %ecx
movq %rax, 0x8(%rsp)
addl %ecx, %eax
incl %eax
cmpl 0x14(%rdx), %eax
movq %rdx, %rbp
jae 0x1ab4a
movq 0x18(%rbp), %rax
jmp 0x1ab8b
movl %eax, %ecx
shrl %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x2, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x4, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x8, %eax
orl %ecx, %eax
movq %rsi, 0x20(%rsp)
movl %eax, %esi
shrl $0x10, %esi
orl %eax, %esi
incl %esi
movl %esi, 0x14(%rbp)
movq 0x18(%rbp), %rdi
callq 0x2260
movq 0x20(%rsp), %rsi
movq %rax, 0x18(%rbp)
movl 0x10(%rbp), %ecx
movl %ecx, %edi
addq %rax, %rdi
movq 0x8(%rsp), %rdx
callq 0x21f0
movl 0x10(%rbp), %eax
addl 0x8(%rsp), %eax
movl %eax, 0x10(%rbp)
movq 0x18(%rbp), %rcx
movb $0x0, (%rcx,%rax)
movl 0x10(%rbp), %edi
movq 0x18(%rbp), %rsi
callq 0xe2e1
movq 0x50(%rsp), %rax
movq 0x28(%r12), %rcx
cmpq (%rcx), %rax
jne 0x1abd0
movq $0x0, 0x50(%rsp)
movl 0x1c(%rsp), %r12d
subl 0x38(%rsp), %r12d
leaq 0x4702(%rip), %rsi      # 0x1f2e3
movl $0x0, %eax
cmovgl %r12d, %eax
movl %eax, 0x8(%rsp)
negl %r12d
movq 0x1a0(%rsp), %rbp
movq %rbp, %rdi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0x19404
movq 0x1a8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rax), %rsi
callq 0x21a0
movq 0x50(%rsp), %r10
testl %eax, %eax
jg 0x1ad0d
movl 0x8(%rsp), %eax
addl %eax, %r13d
addl %eax, %ebx
leaq 0x46b0(%rip), %rsi      # 0x1f2ea
movq %rbp, %rdi
movl %r13d, %edx
movl %r12d, %ecx
movl %ebx, %r8d
movq %r15, %r9
xorl %eax, %eax
pushq %r14
pushq %r10
callq 0x19404
addq $0x10, %rsp
movq 0x1a8(%rsp), %rsi
cmpl $0x0, (%rsi)
movq 0x60(%rsp), %r12
je 0x1acf5
xorl %ebx, %ebx
leaq 0x2775(%rip), %r14      # 0x1d3ec
movq 0x8(%rsi), %rax
movsbq (%rax,%rbx), %rax
movb (%rax,%r14), %r15b
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1ac95
movq 0x8(%rbp), %rax
jmp 0x1acd7
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq 0x1a8(%rsp), %rsi
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
movl %edx, (%rbp)
movl %ecx, %ecx
movb %r15b, (%rax,%rcx)
movq 0x8(%rbp), %rax
movl (%rbp), %ecx
movb $0x0, (%rax,%rcx)
incq %rbx
movl (%rsi), %eax
cmpq %rax, %rbx
jb 0x1ac77
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1ae05
movq 0x8(%rbp), %rax
jmp 0x1ae47
movl 0x8(%rsp), %eax
addl %eax, %ebx
addl %eax, %r13d
leaq 0x45e5(%rip), %rsi      # 0x1f302
movq %rbp, %rdi
movl %ebx, %edx
movl %r12d, %ecx
movl %r13d, %r8d
movq %r14, %r9
xorl %eax, %eax
pushq %r15
pushq %r10
callq 0x19404
addq $0x10, %rsp
movq 0x1a8(%rsp), %rsi
cmpl $0x0, (%rsi)
movq 0x60(%rsp), %r12
movq 0x28(%rsp), %r13
je 0x1addc
xorl %ebx, %ebx
leaq 0x268e(%rip), %r14      # 0x1d3ec
movq 0x18(%rsi), %rax
movsbq (%rax,%rbx), %rax
movb (%rax,%r14), %r15b
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1ad7c
movq 0x8(%rbp), %rax
jmp 0x1adbe
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq 0x1a8(%rsp), %rsi
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
movl %edx, (%rbp)
movl %ecx, %ecx
movb %r15b, (%rax,%rcx)
movq 0x8(%rbp), %rax
movl (%rbp), %ecx
movb $0x0, (%rax,%rcx)
incq %rbx
movl (%rsi), %eax
cmpq %rax, %rbx
jb 0x1ad5e
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1ae89
movq 0x8(%rbp), %rax
jmp 0x1aecb
movl %r8d, %esi
cmpl %r8d, %edi
jne 0x1a796
jmp 0x1b071
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq 0x1a8(%rsp), %rsi
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
leaq 0x8(%rbp), %r14
movl %edx, (%rbp)
movl %ecx, %ecx
movb $0x9, (%rax,%rcx)
movq 0x8(%rbp), %rax
movl (%rbp), %ecx
movb $0x0, (%rax,%rcx)
testq %r12, %r12
je 0x1af62
addq 0x10(%rsp), %r12
movslq (%rsi), %rbx
movl (%rbp), %ecx
leal (%rbx,%rcx), %eax
incl %eax
cmpl 0x4(%rbp), %eax
jae 0x1afba
movq (%r14), %rax
jmp 0x1aff1
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq 0x1a8(%rsp), %rsi
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
leaq 0x8(%rbp), %r14
movl %edx, (%rbp)
movl %ecx, %ecx
movb $0x9, (%rax,%rcx)
movq 0x8(%rbp), %rax
movl (%rbp), %ecx
movb $0x0, (%rax,%rcx)
testq %r12, %r12
je 0x1af62
movl (%rsi), %eax
leal (%rax,%r13), %ebx
decl %ebx
cmpl %r13d, %ebx
jl 0x1b012
movslq %ebx, %rax
movb (%r12,%rax), %r15b
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1af10
movq (%r14), %rax
jmp 0x1af4a
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
movl %edx, (%rbp)
movl %ecx, %ecx
movb %r15b, (%rax,%rcx)
movq 0x8(%rbp), %rax
movl (%rbp), %ecx
movb $0x0, (%rax,%rcx)
decl %ebx
jmp 0x1aef0
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1af72
movq (%r14), %rax
jmp 0x1afac
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
movl %edx, (%rbp)
movl %ecx, %ecx
movb $0x2a, (%rax,%rcx)
movl (%rbp), %eax
jmp 0x1b009
movl %eax, %ecx
shrl %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x2, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x4, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x8, %eax
orl %ecx, %eax
movl %eax, %esi
shrl $0x10, %esi
orl %eax, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
movl %ecx, %edi
addq %rax, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x21f0
movl (%rbp), %eax
addl %ebx, %eax
movl %eax, (%rbp)
movq (%r14), %rcx
movl %eax, %eax
movb $0x0, (%rcx,%rax)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
cmpl 0x4(%rbp), %edx
jae 0x1b023
movq 0x8(%rbp), %rax
jmp 0x1b05d
movl %edx, %eax
shrl %eax
orl %edx, %eax
movl %eax, %ecx
shrl $0x2, %ecx
orl %eax, %ecx
movl %ecx, %eax
shrl $0x4, %eax
orl %ecx, %eax
movl %eax, %ecx
shrl $0x8, %ecx
orl %eax, %ecx
movl %ecx, %esi
shrl $0x10, %esi
orl %ecx, %esi
incl %esi
movl %esi, 0x4(%rbp)
movq 0x8(%rbp), %rdi
callq 0x2260
movq %rax, 0x8(%rbp)
movl (%rbp), %ecx
leal 0x1(%rcx), %edx
movl %edx, (%rbp)
movl %ecx, %ecx
movb $0xa, (%rax,%rcx)
movq 0x8(%rbp), %rax
movl (%rbp), %ecx
movb $0x0, (%rax,%rcx)
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4186(%rip), %rdi      # 0x1f210
leaq 0x418d(%rip), %rsi      # 0x1f21e
leaq 0x418e(%rip), %rcx      # 0x1f226
movl $0xae, %edx
callq 0x2120
leaq 0x41fb(%rip), %rdi      # 0x1f2a4
leaq 0x416e(%rip), %rsi      # 0x1f21e
leaq 0x416f(%rip), %rcx      # 0x1f226
movl $0xbf, %edx
callq 0x2120
nopl (%rax)