// File: /workspace/github_c_makefile_star2_O1/lh3[P]miniprot/format.c
// Function: mp_write_residue
static void mp_write_residue(kstring_t *out, const mp_idx_t *mi, const mp_mapopt_t *opt, const char *aa, const mp_reg1_t *r)
{
	const mp_extra_t *e = r->p;
	int32_t k, w, w4, al = r->qs, nl = 0, l_tmp = 8; // enough to keep "##ATN\t\0"
	int32_t max_flank = opt->max_intron_flank;
	int64_t l_nt;
	uint8_t *nt;
	char *str[5];
	if (e == 0) return;
	for (k = 0; k < e->n_cigar; ++k) { // estimate the string length
		int32_t op = e->cigar[k]&0xf, len = e->cigar[k]>>4, len3 = len * 3;
		if (op == NS_CIGAR_M || op == NS_CIGAR_I || op == NS_CIGAR_D) l_tmp += len3;
		else if (op == NS_CIGAR_F || op == NS_CIGAR_G) l_tmp += len;
		else if (op == NS_CIGAR_N || op == NS_CIGAR_U || op == NS_CIGAR_V) {
			int32_t intron_len = op == NS_CIGAR_N? len : len - 3;
			l_tmp += intron_len <= max_flank * 2? len : max_flank * 2 + 20;
		}
	}
	l_tmp += 3;
	str[0] = Kmalloc(0, char, 5 * l_tmp);
	str[1] = str[0] + l_tmp;
	str[2] = str[1] + l_tmp;
	str[3] = str[2] + l_tmp;
	str[4] = str[3] + l_tmp;
	strcpy(str[0], "##ATN\t");
	strcpy(str[1], "##ATA\t");
	strcpy(str[2], "##AAS\t");
	strcpy(str[3], "##AQA\t");
	strcpy(str[4], "##STA\t");
	nt = Kmalloc(0, uint8_t, r->ve - r->vs + 3);
	l_nt = mp_ntseq_get_by_v(mi->nt, r->vid, r->vs, r->ve + 3, nt);
	assert(l_nt >= r->ve - r->vs);
	for (k = 0, w = w4 = 6; k < e->n_cigar; ++k) {
		int32_t i, j, l, op = e->cigar[k]&0xf, len = e->cigar[k]>>4, len3 = len * 3;
		assert(w < l_tmp);
		if (op == NS_CIGAR_M) {
			for (i = nl, j = al, l = 0; l < len; ++l, ++j, i += 3, w += 3) {
				uint8_t nt_aa, aa_aa, codon = nt[i]<<4 | nt[i+1]<<2 | nt[i+2];
				int32_t s;
				nt_aa = nt[i] > 3 || nt[i+1] > 3 || nt[i+2] > 3? ns_tab_aa20['X'] : ns_tab_codon[codon];
				aa_aa = ns_tab_aa20[(uint8_t)aa[j]];
				s = opt->mat[nt_aa * opt->asize + aa_aa];
				str[0][w] = "ACGTN"[nt[i]], str[0][w+1] = "ACGTN"[nt[i+1]], str[0][w+2] = "ACGTN"[nt[i+2]];
				str[1][w] = str[4][w4++] = ns_tab_aa_i2c[nt_aa], str[1][w+1] = str[1][w+2] = '.';
				str[2][w] = nt_aa == aa_aa? '|' : s > 0? '+' : ' ', str[2][w+1] = ' ', str[2][w+2] = ' ';
				str[3][w] = toupper(aa[j]), str[3][w+1] = str[3][w+2] = ' ';
			}
			nl += len3, al += len;
		} else if (op == NS_CIGAR_I) {
			for (j = 0; j < len; ++j, w += 3) {
				str[0][w] = str[0][w+1] = str[0][w+2] = '-';
				str[1][w] = '-', str[1][w+1] = str[1][w+2] = '.';
				str[2][w] = str[2][w+1] = str[2][w+2] = ' ';
				str[3][w] = toupper(aa[al + j]), str[3][w+1] = str[3][w+2] = ' ';
			}
			al += len;
		} else if (op == NS_CIGAR_D) {
			for (l = 0, i = nl; l < len; ++l, i += 3, w += 3) {
				uint8_t nt_aa, codon = nt[i]<<4 | nt[i+1]<<2 | nt[i+2];
				nt_aa = nt[i] > 3 || nt[i+1] > 3 || nt[i+2] > 3? ns_tab_aa20['X'] : ns_tab_codon[codon];
				str[0][w] = "ACGTN"[nt[i]], str[0][w+1] = "ACGTN"[nt[i+1]], str[0][w+2] = "ACGTN"[nt[i+2]];
				str[1][w] = str[4][w4++] = ns_tab_aa_i2c[nt_aa], str[1][w+1] = str[1][w+2] = '.';
				str[2][w] = str[2][w+1] = str[2][w+2] = ' ';
				str[3][w] = '-', str[3][w+1] = str[3][w+2] = ' ';
			}
			nl += len3;
		} else if (op == NS_CIGAR_F) {
			for (l = 0, i = nl; l < len; ++l, ++i, ++w)
				str[0][w] = "ACGTN"[nt[i]], str[1][w] = '!', str[2][w] = str[3][w] = ' ';
			nl += len;
		} else if (op == NS_CIGAR_G) {
			for (l = 0, i = nl; l < len; ++l, ++i, ++w) {
				str[0][w] = "ACGTN"[nt[i]], str[1][w] = '$', str[2][w] = ' ';
				str[3][w] = l == 0? toupper(aa[al]) : ' ';
			}
			nl += len, ++al;
		} else if (op == NS_CIGAR_N || op == NS_CIGAR_U || op == NS_CIGAR_V) {
			int32_t intron_len = op == NS_CIGAR_N? len : len - 3;
			if (op == NS_CIGAR_U || op == NS_CIGAR_V) { // phase-1 or phase-2 intron; print the first half of split codon
				uint8_t n1, n2, n3, codon, nt_aa, aa_aa;
				int32_t s;
				if (op == NS_CIGAR_U) n1 = nt[nl], n2 = nt[nl + len - 2], n3 = nt[nl + len - 1];
				else n1 = nt[nl], n2 = nt[nl + 1], n3 = nt[nl + len - 1];
				codon = n1<<4 | n2<<2 | n3;
				nt_aa = n1 > 3 || n2 > 3 || n3 > 3? ns_tab_aa20['X'] : ns_tab_codon[codon];
				aa_aa = ns_tab_aa20[(uint8_t)aa[al]];
				s = opt->mat[nt_aa * opt->asize + aa_aa];
				str[0][w] = "ACGTN"[nt[nl]];
				str[1][w] = str[4][w4++] = ns_tab_aa_i2c[nt_aa];
				str[2][w] = nt_aa == aa_aa? '|' : s > 0? '+' : ' ';
				str[3][w] = toupper(aa[al]);
				++w, ++nl;
				if (op == NS_CIGAR_V) {
					str[0][w] = "ACGTN"[nt[nl]], str[1][w] = '.', str[2][w] = str[3][w] = ' ';
					++w, ++nl;
				}
				++al;
			}
			if (intron_len <= max_flank * 2) {
				for (l = 0, i = nl; l < intron_len; ++l, ++i, ++w)
					str[0][w] = "acgtn"[nt[i]], str[1][w] = str[2][w] = str[3][w] = ' ';
			} else {
				int32_t il;
				for (l = 0, i = nl; l < max_flank; ++l, ++i, ++w)
					str[0][w] = "acgtn"[nt[i]], str[1][w] = str[2][w] = str[3][w] = ' ';
				str[0][w] = '~', str[1][w] = str[2][w] = ' ', str[3][w++] = ' ';
				il = snprintf(&str[0][w], l_tmp - w, "%d", intron_len);
				for (l = 0; l < il; ++l, ++w)
					str[1][w] = str[2][w] = str[3][w] = ' ';
				str[0][w] = '~', str[1][w] = str[2][w] = ' ', str[3][w++] = ' ';
				for (l = 0, i = nl + intron_len - max_flank; l < max_flank; ++l, ++i, ++w)
					str[0][w] = "acgtn"[nt[i]], str[1][w] = str[2][w] = str[3][w] = ' ';
			}
			nl += intron_len;
			if (op == NS_CIGAR_U || op == NS_CIGAR_V) { // phase-1 or phase-2 intron; print the second half of split codon
				str[0][w] = "ACGTN"[nt[nl]], str[1][w] = '.', str[2][w] = str[3][w] = ' ';
				++w, ++nl;
				if (op == NS_CIGAR_U) {
					str[0][w] = "ACGTN"[nt[nl]], str[1][w] = '.', str[2][w] = str[3][w] = ' ';
					++w, ++nl;
				}
			}
		}
	}
	assert(nl == r->ve - r->vs);
	if (l_nt == r->ve - r->vs + 3 && str[4][w4-1] != '*') { // then print one more codon
		uint8_t n1 = nt[nl], n2 = nt[nl + 1], n3 = nt[nl + 2], nt_aa, codon;
		codon = n1<<4 | n2<<2 | n3;
		nt_aa = n1 > 3 || n2 > 3 || n3 > 3? ns_tab_aa20['X'] : ns_tab_codon[codon];
		str[0][w] = "ACGTN"[n1], str[0][w+1] = "ACGTN"[n2], str[0][w+2] = "ACGTN"[n3];
		str[1][w] = str[4][w4++] = ns_tab_aa_i2c[nt_aa], str[1][w+1] = str[1][w+2] = '.';
		str[2][w] = str[2][w+1] = str[2][w+2] = ' ';
		str[3][w] = str[3][w+1] = str[3][w+2] = ' ';
		w += 3;
	}
	str[0][w] = str[1][w] = str[2][w] = str[3][w] = 0, str[4][w4] = 0;
	kfree(0, nt);
	if (opt->flag & MP_F_SHOW_RESIDUE)
		mp_sprintf_lite(out, "%s\n%s\n%s\n%s\n", str[0], str[1], str[2], str[3]);
	if (opt->flag & MP_F_SHOW_TRANS)
		mp_sprintf_lite(out, "%s\n", str[4]);
	kfree(0, str[0]);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rcx, 0x88(%rsp)
movq 0x60(%r8), %r11
testq %r11, %r11
je 0x10ea9
movq %r8, %r14
movq %rsi, %rbx
movq %rdi, 0xd0(%rsp)
movq %rdx, 0x98(%rsp)
movl 0x9c(%rdx), %edx
movslq 0xc(%r11), %rax
testq %rax, %rax
movq %r11, 0x58(%rsp)
movq %rdx, 0xa0(%rsp)
jle 0x10ebb
leal (%rdx,%rdx), %ecx
leal 0x14(,%rdx,2), %edx
movl $0x8, %ebp
xorl %esi, %esi
movl 0x30(%r11,%rsi,4), %r9d
movl %r9d, %r8d
andl $0xf, %r8d
movl %r9d, %edi
shrl $0x4, %edi
cmpl $0x2, %r8d
ja 0x10e67
leal (%rdi,%rdi,2), %edi
addl %edi, %ebp
jmp 0x10e9c
andl $0xe, %r9d
cmpl $0xa, %r9d
je 0x10e98
cmpl $0x3, %r8d
setne %r10b
cmpl $0xc, %r9d
setne %r9b
testb %r9b, %r10b
jne 0x10e9c
leal -0x3(%rdi), %r9d
cmpl $0x3, %r8d
cmovel %edi, %r9d
cmpl %ecx, %r9d
cmovgl %edx, %edi
addl %ebp, %edi
movl %edi, %ebp
incq %rsi
cmpq %rsi, %rax
jne 0x10e48
addl $0x3, %ebp
jmp 0x10ec0
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0xb, %ebp
movl 0x34(%r14), %eax
movl %eax, 0x10(%rsp)
leal (%rbp,%rbp,4), %eax
movslq %eax, %rsi
xorl %edi, %edi
callq 0x80a1
movq %r14, %r15
movslq %ebp, %r14
leaq (%rax,%r14), %rdi
leaq (%rdi,%r14), %rdx
leaq (%rdx,%r14), %r13
movl $0x54412323, %esi       # imm = 0x54412323
movl %esi, (%rax)
movl $0x94e54, 0x3(%rax)     # imm = 0x94E54
movl $0x94154, %ecx          # imm = 0x94154
movl %ecx, 0x3(%rax,%r14)
movq %rax, %r12
movl %esi, (%rax,%r14)
movl $0x95341, 0x3(%r14,%rdi) # imm = 0x95341
movq %rdi, 0x40(%rsp)
movl $0x41412323, (%r14,%rdi) # imm = 0x41412323
movl $0x94151, 0x3(%r14,%rdx) # imm = 0x94151
movq %rdx, 0x60(%rsp)
movl $0x51412323, (%r14,%rdx) # imm = 0x51412323
movl %ecx, 0x3(%r14,%r13)
movl $0x54532323, (%r14,%r13) # imm = 0x54532323
movq 0x48(%r15), %rsi
subq 0x40(%r15), %rsi
addq $0x3, %rsi
xorl %edi, %edi
callq 0x80a1
movq 0x18(%rbx), %rdi
movq %rax, %r8
movl 0x30(%r15), %esi
movq 0x40(%r15), %rdx
movq 0x48(%r15), %rcx
addq $0x3, %rcx
movq %rax, 0x30(%rsp)
callq 0xc425
movq 0x48(%r15), %rcx
movq %r15, 0x110(%rsp)
subq 0x40(%r15), %rcx
cmpq %rcx, %rax
jl 0x11e55
movq %rax, 0x108(%rsp)
leaq (%r14,%r13), %rax
movq %rax, 0x68(%rsp)
xorl %edx, %edx
movq 0x58(%rsp), %r15
cmpl $0x0, 0xc(%r15)
movq %r12, 0x18(%rsp)
movq %r13, 0x70(%rsp)
jle 0x11c61
movq 0xa0(%rsp), %rax
addl %eax, %eax
movl %eax, 0xcc(%rsp)
leaq (%r12,%r14,2), %rax
movq %rax, 0x80(%rsp)
leaq (%r14,%r14,2), %rax
leaq (%r12,%rax), %rcx
movq %rcx, 0x78(%rsp)
movq 0x30(%rsp), %rdx
leaq 0x2(%rdx), %rcx
movq %rcx, 0xe0(%rsp)
leaq (%r12,%r14,4), %rcx
movq %rcx, 0xd8(%rsp)
leaq 0x2(%r12), %rcx
movq %rcx, 0xc0(%rsp)
leaq 0x2(%r12,%r14), %rcx
movq %rcx, 0xb8(%rsp)
leaq 0x2(%r12,%r14,2), %rcx
movq %rcx, 0xb0(%rsp)
leaq 0x2(%r12,%rax), %rcx
movq %rcx, 0xa8(%rsp)
leaq 0x1(%r12,%rax), %rax
movq %rax, 0xf8(%rsp)
leaq 0x1(%r12,%r14,2), %rax
movq %rax, 0xf0(%rsp)
leaq 0x1(%r12,%r14), %rax
movq %rax, 0xe8(%rsp)
movl $0x6, %r11d
leaq 0x7497(%rip), %rax      # 0x18500
addq $0x58, %rax
movq %rax, 0x100(%rsp)
movb $0x20, %r13b
leaq 0x1c51(%rip), %r10      # 0x12cd0
leaq 0x7142(%rip), %r9       # 0x181c8
leaq 0x31d3(%rip), %r14      # 0x14260
xorl %r8d, %r8d
movl $0x6, 0x14(%rsp)
movl $0x0, 0xc(%rsp)
movq %rdx, %rsi
movl 0x10(%rsp), %edx
movq %rbp, 0x20(%rsp)
cmpl %ebp, %r11d
jge 0x11e36
movl 0x30(%r15,%r8,4), %ecx
movl %ecx, %ebp
andl $0xf, %ebp
movl %ecx, %r12d
shrl $0x4, %r12d
cmpl $0xb, %ebp
movq %r8, 0x50(%rsp)
movq %r11, 0x90(%rsp)
ja 0x110f9
leal (%r12,%r12,2), %ebx
movl %ebp, %eax
movslq (%r14,%rax,4), %rax
addq %r14, %rax
jmpq *%rax
cmpl $0x10, %ecx
jae 0x1145d
movl 0xc(%rsp), %eax
jmp 0x11644
cmpl $0x3, %ebp
setne %al
andl $0xe, %ecx
cmpl $0xc, %ecx
movq %rcx, %rbx
setne %cl
testb %cl, %al
jne 0x11c28
leal -0x3(%r12), %ecx
cmpl $0x3, %ebp
cmovel %r12d, %ecx
cmpl $0xc, %ebx
movq %rbx, 0x38(%rsp)
movl %ecx, 0x28(%rsp)
jne 0x118b3
movl %edx, %r8d
movl 0xc(%rsp), %ecx
addl %ecx, %r12d
cmpl $0xc, %ebp
movslq %r12d, %rdx
leaq -0x2(%rsi,%rdx), %rax
movslq %ecx, %r12
leaq 0x1(%rsi,%r12), %rcx
cmoveq %rax, %rcx
movq %rsi, %rbx
movzbl (%rsi,%r12), %eax
movq 0x100(%rsp), %rdi
movq %rdi, %rsi
cmpq $0x3, %rax
ja 0x1119b
movb (%rcx), %cl
movq %rdi, %rsi
cmpb $0x3, %cl
ja 0x1119b
movb -0x1(%rbx,%rdx), %dl
movq %rdi, %rsi
cmpb $0x3, %dl
ja 0x1119b
movl %eax, %esi
shlb $0x4, %sil
shlb $0x2, %cl
orb %dl, %sil
orb %cl, %sil
movzbl %sil, %esi
addq 0x6e3d(%rip), %rsi      # 0x17fd8
movzbl (%rsi), %ecx
movl %r8d, 0x10(%rsp)
movslq %r8d, %rdx
movq %rdx, 0x48(%rsp)
movq 0x88(%rsp), %rsi
movzbl (%rsi,%rdx), %edx
leaq 0x7342(%rip), %rsi      # 0x18500
movzbl (%rsi,%rdx), %edx
movq 0x98(%rsp), %rdi
movl 0x94(%rdi), %esi
imull %ecx, %esi
addl %edx, %esi
movslq %esi, %rsi
movb (%rax,%r10), %al
cmpb $0x0, 0xa8(%rdi,%rsi)
movslq %r11d, %r14
movq 0x18(%rsp), %rbx
movb %al, (%rbx,%r14)
movl $0x20, %eax
movl $0x2b, %esi
cmovgl %esi, %eax
cmpb %dl, %cl
movq (%r9), %rdx
movb (%rdx,%rcx), %cl
movslq 0x14(%rsp), %rdx
movq 0x68(%rsp), %rsi
movb %cl, (%rsi,%rdx)
movq 0x40(%rsp), %r15
movb %cl, (%r15,%r14)
movl $0x7c, %ecx
cmovel %ecx, %eax
movq 0x60(%rsp), %r13
movb %al, (%r13,%r14)
callq 0x2030
leaq 0x1(%r14), %rcx
incq %r12
movq (%rax), %rax
movq 0x48(%rsp), %rdx
movq 0x88(%rsp), %rsi
movsbq (%rsi,%rdx), %rdx
movb (%rax,%rdx,4), %al
movq 0x70(%rsp), %rdx
movb %al, (%rdx,%r14)
cmpl $0xd, %ebp
jne 0x118b8
movq 0x30(%rsp), %rax
movq %rax, %rsi
movzbl (%rax,%r12), %eax
leaq 0x1a59(%rip), %r8       # 0x12cd0
movb (%rax,%r8), %al
movb %al, (%rbx,%rcx)
movb $0x2e, (%r15,%rcx)
movb $0x20, %al
movb %al, (%rdx,%rcx)
movb %al, (%r13,%rcx)
movq 0x90(%rsp), %r11
addl $0x2, %r11d
addl $0x2, 0xc(%rsp)
movq %r8, %r10
jmp 0x118cc
cmpl $0x10, %ecx
jae 0x112ec
movl 0xc(%rsp), %eax
jmp 0x11452
cmpl $0x10, %ecx
jae 0x11655
movq 0x20(%rsp), %rbp
jmp 0x11728
cmpl $0x10, %ecx
jae 0x11733
movq 0x20(%rsp), %rbp
jmp 0x117b2
cmpl $0x10, %ecx
jae 0x117c1
movl 0xc(%rsp), %eax
jmp 0x118a9
movl %ebx, 0x38(%rsp)
movl %edx, 0x10(%rsp)
movslq %r11d, %rax
movl 0x14(%rsp), %r12d
movq %rcx, %r11
movslq %r12d, %rcx
movslq 0xc(%rsp), %rdx
addq 0xe0(%rsp), %rdx
addq 0xd8(%rsp), %rcx
movq 0xc0(%rsp), %rsi
addq %rax, %rsi
movq 0xb8(%rsp), %rdi
addq %rax, %rdi
movq 0xb0(%rsp), %r8
addq %rax, %r8
addq 0xa8(%rsp), %rax
shrl $0x4, %r11d
leaq (%r11,%r11,2), %r13
movq %r10, %r9
xorl %r10d, %r10d
movzbl -0x2(%rdx,%r10), %r11d
movl %r11d, %ebx
shlb $0x4, %bl
movb -0x1(%rdx,%r10), %r14b
movb (%rdx,%r10), %bpl
leal (,%r14,4), %r15d
orb %bl, %r15b
orb %bpl, %r15b
movzbl %r15b, %ebx
addq 0x6c5c(%rip), %rbx      # 0x17fd8
cmpb $0x4, %bpl
leaq 0x7179(%rip), %r15      # 0x18500
leaq 0x58(%r15), %r15
cmovaeq %r15, %rbx
cmpb $0x4, %r14b
cmovaeq %r15, %rbx
cmpq $0x4, %r11
cmovaeq %r15, %rbx
movzbl (%rbx), %ebx
movb (%r11,%r9), %r11b
movb %r11b, -0x2(%rsi,%r10)
movzbl -0x1(%rdx,%r10), %r11d
movb (%r11,%r9), %r11b
movb %r11b, -0x1(%rsi,%r10)
movzbl (%rdx,%r10), %r11d
movb (%r11,%r9), %r11b
movb %r11b, (%rsi,%r10)
leaq 0x6dfa(%rip), %r11      # 0x181c8
movq (%r11), %r11
movb (%r11,%rbx), %r11b
movb %r11b, (%rcx)
movb %r11b, -0x2(%rdi,%r10)
movw $0x2e2e, -0x1(%rdi,%r10) # imm = 0x2E2E
movb $0x20, %r11b
movb %r11b, (%r8,%r10)
movw $0x2020, -0x2(%r8,%r10) # imm = 0x2020
movw $0x202d, -0x2(%rax,%r10) # imm = 0x202D
movb %r11b, (%rax,%r10)
addq $0x3, %r10
incq %rcx
incl %r12d
cmpl %r10d, %r13d
jne 0x1134e
movl %r12d, 0x14(%rsp)
movq 0x90(%rsp), %r11
addl %r10d, %r11d
movq 0x30(%rsp), %rsi
movq 0x58(%rsp), %r15
movb $0x20, %r13b
movq %r9, %r10
leaq 0x6d8e(%rip), %r9       # 0x181c8
leaq 0x2e1f(%rip), %r14      # 0x14260
movq 0x50(%rsp), %r8
movl 0xc(%rsp), %eax
movl 0x10(%rsp), %edx
movl 0x38(%rsp), %ebx
addl %ebx, %eax
movl %eax, 0xc(%rsp)
jmp 0x11c28
movl %ebx, 0x38(%rsp)
movq %r12, 0x48(%rsp)
movq %r11, %rbx
movl %edx, %ebp
movq %rcx, %r14
callq 0x2030
movq %rax, 0x28(%rsp)
movslq %ebx, %rcx
movslq 0x14(%rsp), %rax
movslq 0xc(%rsp), %rsi
movl %ebp, 0x10(%rsp)
movslq %ebp, %rdi
addq 0x88(%rsp), %rdi
addq 0xe0(%rsp), %rsi
addq 0xd8(%rsp), %rax
movq 0xc0(%rsp), %rdx
leaq (%rdx,%rcx), %r8
movq 0xb8(%rsp), %rdx
leaq (%rdx,%rcx), %r9
movq 0xb0(%rsp), %rdx
leaq (%rdx,%rcx), %r10
addq 0xa8(%rsp), %rcx
shrl $0x4, %r14d
leaq (%r14,%r14,2), %r14
xorl %r11d, %r11d
xorl %ebp, %ebp
movzbl -0x2(%rsi,%r11), %ebx
movl %ebx, %r15d
shlb $0x4, %r15b
movb -0x1(%rsi,%r11), %r12b
movb (%rsi,%r11), %r13b
leal (,%r12,4), %edx
orb %r15b, %dl
orb %r13b, %dl
movzbl %dl, %edx
addq 0x6acd(%rip), %rdx      # 0x17fd8
cmpb $0x4, %r13b
leaq 0x6fea(%rip), %r13      # 0x18500
leaq 0x58(%r13), %r15
cmovaeq %r15, %rdx
cmpb $0x4, %r12b
cmovaeq %r15, %rdx
cmpq $0x4, %rbx
cmovaeq %r15, %rdx
movzbl (%rdx), %r15d
movzbl (%rdi,%rbp), %edx
movzbl (%r13,%rdx), %r12d
movq 0x98(%rsp), %r13
movl 0x94(%r13), %edx
imull %r15d, %edx
addl %r12d, %edx
movslq %edx, %rdx
cmpb $0x0, 0xa8(%r13,%rdx)
leaq 0x176b(%rip), %r13      # 0x12cd0
movb (%rbx,%r13), %dl
movb %dl, -0x2(%r8,%r11)
movzbl -0x1(%rsi,%r11), %edx
movb (%rdx,%r13), %dl
movb %dl, -0x1(%r8,%r11)
movzbl (%rsi,%r11), %edx
movb (%rdx,%r13), %dl
movb %dl, (%r8,%r11)
leaq 0x6c37(%rip), %rdx      # 0x181c8
movq (%rdx), %rdx
movb (%rdx,%r15), %dl
movb %dl, (%rax,%rbp)
movb %dl, -0x2(%r9,%r11)
movw $0x2e2e, -0x1(%r9,%r11) # imm = 0x2E2E
movl $0x2b, %ebx
jg 0x115b4
movl $0x20, %ebx
cmpb %r12b, %r15b
movl $0x7c, %edx
cmovel %edx, %ebx
movb %bl, -0x2(%r10,%r11)
movw $0x2020, %r15w          # imm = 0x2020
movw %r15w, -0x1(%r10,%r11)
movq 0x28(%rsp), %rdx
movq (%rdx), %rdx
movsbq (%rdi,%rbp), %rbx
movb (%rdx,%rbx,4), %dl
movb %dl, -0x2(%rcx,%r11)
movw %r15w, -0x1(%rcx,%r11)
incq %rbp
addq $0x3, %r11
cmpl %r11d, %r14d
jne 0x114dd
addl %ebp, 0x14(%rsp)
movq 0x90(%rsp), %rax
addl %r11d, %eax
movq %rax, %r11
movq 0x30(%rsp), %rsi
movq 0x58(%rsp), %r15
movl 0x10(%rsp), %edx
movb $0x20, %r13b
leaq 0x16ac(%rip), %r10      # 0x12cd0
leaq 0x6b9d(%rip), %r9       # 0x181c8
leaq 0x2c2e(%rip), %r14      # 0x14260
movq 0x50(%rsp), %r8
movl 0xc(%rsp), %eax
movq 0x48(%rsp), %r12
movl 0x38(%rsp), %ebx
addl %ebx, %eax
movl %eax, 0xc(%rsp)
addl %edx, %r12d
movl %r12d, %edx
jmp 0x11c28
movq %r11, %rbx
movl %edx, %ebp
callq 0x2030
movslq %ebx, %rcx
movl %ebp, 0x10(%rsp)
movslq %ebp, %rdx
addq 0x88(%rsp), %rdx
movq %r12, 0x48(%rsp)
leaq (%r12,%r12,2), %rsi
movq 0xc0(%rsp), %rdi
addq %rcx, %rdi
movq 0xb8(%rsp), %r8
addq %rcx, %r8
movq 0xb0(%rsp), %r9
addq %rcx, %r9
addq 0xa8(%rsp), %rcx
xorl %r10d, %r10d
movq 0x20(%rsp), %rbp
movw $0x2020, %r11w          # imm = 0x2020
movb $0x2d, (%rdi,%r10)
movw $0x2d2d, -0x2(%rdi,%r10) # imm = 0x2D2D
movw $0x2e2d, -0x2(%r8,%r10) # imm = 0x2E2D
movb $0x2e, (%r8,%r10)
movb $0x20, (%r9,%r10)
movw %r11w, -0x2(%r9,%r10)
movq (%rax), %r11
movsbq (%rdx), %rbx
movb (%r11,%rbx,4), %r11b
movb %r11b, -0x2(%rcx,%r10)
movw $0x2020, %r11w          # imm = 0x2020
movw %r11w, -0x1(%rcx,%r10)
incq %rdx
addq $0x3, %r10
cmpq %r10, %rsi
jne 0x116b0
movq 0x90(%rsp), %r11
addl %r10d, %r11d
movq 0x30(%rsp), %rsi
leaq 0x15bd(%rip), %r10      # 0x12cd0
leaq 0x6aae(%rip), %r9       # 0x181c8
movq 0x50(%rsp), %r8
movl 0x10(%rsp), %edx
movq 0x48(%rsp), %r12
addl %edx, %r12d
movl %r12d, %edx
jmp 0x11c2d
movq %r12, 0x48(%rsp)
movl %edx, 0x10(%rsp)
movslq %r11d, %rax
movslq 0xc(%rsp), %r12
movq %rsi, %rbx
addq %rsi, %r12
movq 0x18(%rsp), %rdx
addq %rax, %rdx
movq 0x40(%rsp), %rsi
addq %rax, %rsi
movq 0x78(%rsp), %rdi
addq %rax, %rdi
addq 0x80(%rsp), %rax
shrl $0x4, %ecx
xorl %r8d, %r8d
movq 0x20(%rsp), %rbp
movzbl (%r12,%r8), %r9d
movb (%r9,%r10), %r9b
movb %r9b, (%rdx,%r8)
movb $0x21, (%rsi,%r8)
movb %r13b, (%rdi,%r8)
movb %r13b, (%rax,%r8)
incq %r8
cmpl %r8d, %ecx
jne 0x11775
addl %r8d, %r11d
leaq 0x6a27(%rip), %r9       # 0x181c8
movq 0x50(%rsp), %r8
movl 0x10(%rsp), %edx
movq %rbx, %rsi
movq 0x48(%rsp), %r12
addl 0xc(%rsp), %r12d
movl %r12d, 0xc(%rsp)
jmp 0x11c2d
movq %r12, 0x48(%rsp)
movl %edx, 0x10(%rsp)
movslq %edx, %rax
movq %rax, 0x28(%rsp)
movslq %r11d, %r12
movslq 0xc(%rsp), %rdi
addq %rsi, %rdi
movq 0x18(%rsp), %rax
leaq (%rax,%r12), %rdx
movq 0x40(%rsp), %rax
leaq (%rax,%r12), %r13
movq 0x80(%rsp), %rax
leaq (%rax,%r12), %rbx
addq 0x78(%rsp), %r12
shrl $0x4, %ecx
xorl %r14d, %r14d
movq %rdx, 0x38(%rsp)
movzbl (%rdi,%r14), %eax
movb (%rax,%r10), %al
movb %al, (%rdx,%r14)
movb $0x24, (%r13,%r14)
movb $0x20, (%rbx,%r14)
movb $0x20, %al
testl %r14d, %r14d
jne 0x11879
movq %rcx, %rbp
movq %rbx, %r15
movq %rdi, %rbx
callq 0x2030
movq %rbx, %rdi
movq %r15, %rbx
movq 0x50(%rsp), %r8
leaq 0x697e(%rip), %r9       # 0x181c8
leaq 0x147f(%rip), %r10      # 0x12cd0
movq 0x90(%rsp), %r11
movq (%rax), %rax
movq 0x88(%rsp), %rcx
movq 0x28(%rsp), %rdx
movsbq (%rcx,%rdx), %rcx
movq 0x38(%rsp), %rdx
movb (%rax,%rcx,4), %al
movq %rbp, %rcx
movb %al, (%r12,%r14)
incq %r14
cmpl %r14d, %ecx
jne 0x1180b
addl %r14d, %r11d
movq 0x30(%rsp), %rsi
movq 0x58(%rsp), %r15
movl 0x10(%rsp), %edx
movb $0x20, %r13b
leaq 0x29c0(%rip), %r14      # 0x14260
movl 0xc(%rsp), %eax
movq 0x48(%rsp), %r12
addl %eax, %r12d
incl %edx
jmp 0x11c23
movq %rbx, %rax
jmp 0x118fa
movl %r12d, 0xc(%rsp)
movl %ecx, %r11d
movq 0x30(%rsp), %rsi
leaq 0x1404(%rip), %r10      # 0x12cd0
incl 0x14(%rsp)
movl 0x10(%rsp), %edx
incl %edx
movq 0x58(%rsp), %r15
movb $0x20, %r13b
leaq 0x68e3(%rip), %r9       # 0x181c8
leaq 0x2974(%rip), %r14      # 0x14260
movq 0x50(%rsp), %r8
movq 0x38(%rsp), %rax
movl 0x28(%rsp), %ecx
cmpl 0xcc(%rsp), %ecx
movl %edx, 0x10(%rsp)
jle 0x11aee
movq 0xa0(%rsp), %r10
testl %r10d, %r10d
jle 0x11971
movslq %r11d, %rax
movslq 0xc(%rsp), %rcx
addq %rsi, %rcx
movq 0x18(%rsp), %rdx
addq %rax, %rdx
movq 0x78(%rsp), %rsi
addq %rax, %rsi
movq 0x80(%rsp), %rdi
addq %rax, %rdi
addq 0x40(%rsp), %rax
xorl %r8d, %r8d
leaq 0x2a8d(%rip), %r15      # 0x143da
movzbl (%rcx,%r8), %r9d
movb (%r9,%r15), %r9b
movb %r9b, (%rdx,%r8)
movb %r13b, (%rsi,%r8)
movb %r13b, (%rdi,%r8)
movb %r13b, (%rax,%r8)
incq %r8
cmpl %r8d, %r10d
jne 0x1194d
addl %r8d, %r11d
movq %r11, %r13
movslq %r11d, %r15
movq 0x18(%rsp), %rdx
movb $0x7e, (%rdx,%r15)
movb $0x20, %cl
movq 0x60(%rsp), %rax
movb %cl, (%rax,%r15)
movq 0x40(%rsp), %rax
movb %cl, (%rax,%r15)
movq %rdx, %rax
leal 0x1(%r15), %ebx
movq 0x70(%rsp), %rdx
movb %cl, (%rdx,%r15)
movq %rax, %r12
leaq (%rax,%r15), %rdi
incq %rdi
movq 0x20(%rsp), %rax
subl %ebx, %eax
movslq %eax, %rsi
leaq 0x299d(%rip), %rdx      # 0x1435d
movl 0x28(%rsp), %ecx
xorl %eax, %eax
callq 0x2120
testl %eax, %eax
leaq 0x12fc(%rip), %r10      # 0x12cd0
movq 0x50(%rsp), %r8
jle 0x11a19
movq 0xf8(%rsp), %rcx
addq %r15, %rcx
movq 0xf0(%rsp), %rdx
addq %r15, %rdx
addq 0xe8(%rsp), %r15
movl %eax, %esi
xorl %eax, %eax
movb $0x20, %dil
movb %dil, (%rcx,%rax)
movb %dil, (%rdx,%rax)
movb %dil, (%r15,%rax)
incq %rax
cmpl %eax, %esi
jne 0x11a00
leal (%rax,%r13), %ebx
incl %ebx
leal 0x1(%rbx), %r11d
movslq %ebx, %rax
movb $0x7e, (%r12,%rax)
movb $0x20, %r13b
movq 0x60(%rsp), %rcx
movb %r13b, (%rcx,%rax)
movq 0x40(%rsp), %r15
movb %r13b, (%r15,%rax)
movq 0x70(%rsp), %rcx
movb %r13b, (%rcx,%rax)
movq 0xa0(%rsp), %r9
testl %r9d, %r9d
movl 0x10(%rsp), %edx
jle 0x11b86
movl 0x28(%rsp), %ecx
subl %r9d, %ecx
addl 0xc(%rsp), %ecx
movslq %r11d, %rax
movslq %ecx, %rcx
movq 0x30(%rsp), %rdx
movq %rdx, %rbx
addq %rdx, %rcx
movq 0x18(%rsp), %rdx
addq %rax, %rdx
movq 0x78(%rsp), %rsi
addq %rax, %rsi
movq 0x80(%rsp), %rdi
addq %rax, %rdi
addq %r15, %rax
xorl %r8d, %r8d
movq %r9, %r10
movq 0x58(%rsp), %r15
leaq 0x2936(%rip), %r14      # 0x143da
movzbl (%rcx,%r8), %r9d
movb (%r9,%r14), %r9b
movb %r9b, (%rdx,%r8)
movb %r13b, (%rsi,%r8)
movb %r13b, (%rdi,%r8)
movb %r13b, (%rax,%r8)
incq %r8
cmpl %r8d, %r10d
jne 0x11aa4
addl %r8d, %r11d
leaq 0x1201(%rip), %r10      # 0x12cd0
leaq 0x66f2(%rip), %r9       # 0x181c8
leaq 0x2783(%rip), %r14      # 0x14260
movq 0x50(%rsp), %r8
movl 0x10(%rsp), %edx
movq %rbx, %rsi
jmp 0x11b97
testl %ecx, %ecx
jle 0x11ba0
movslq %r11d, %rax
movl %ecx, %r8d
movslq 0xc(%rsp), %rcx
movq %rsi, %rbx
addq %rsi, %rcx
movq 0x18(%rsp), %rdx
addq %rax, %rdx
movq 0x78(%rsp), %rsi
addq %rax, %rsi
movq 0x80(%rsp), %rdi
addq %rax, %rdi
addq 0x40(%rsp), %rax
movl %r8d, %r12d
movl %r8d, %r8d
xorl %r9d, %r9d
leaq 0x28a3(%rip), %r14      # 0x143da
movzbl (%rcx,%r9), %r10d
movb (%r10,%r14), %r10b
movb %r10b, (%rdx,%r9)
movb %r13b, (%rsi,%r9)
movb %r13b, (%rdi,%r9)
movb %r13b, (%rax,%r9)
incq %r9
cmpl %r9d, %r8d
jne 0x11b37
addl %r9d, %r11d
leaq 0x116e(%rip), %r10      # 0x12cd0
leaq 0x665f(%rip), %r9       # 0x181c8
leaq 0x26f0(%rip), %r14      # 0x14260
movq 0x50(%rsp), %r8
movl 0x10(%rsp), %edx
movq %rbx, %rsi
movq 0x38(%rsp), %rax
movl %r12d, %ecx
jmp 0x11ba0
movq 0x30(%rsp), %rsi
movq 0x58(%rsp), %r15
leaq 0x6631(%rip), %r9       # 0x181c8
movq 0x38(%rsp), %rax
movl 0x28(%rsp), %ecx
movl 0xc(%rsp), %r12d
addl %ecx, %r12d
cmpl $0xc, %eax
jne 0x11c23
movslq %r12d, %rdx
movq %rsi, %rdi
movslq %r11d, %rsi
leaq 0x1(%rsi), %rax
movq %rax, 0x28(%rsp)
leaq 0x1(%rdx), %rcx
movzbl (%rdi,%rdx), %edx
movb (%rdx,%r10), %dl
movq 0x18(%rsp), %rax
movb %dl, (%rax,%rsi)
movq 0x40(%rsp), %rdx
movb $0x2e, (%rdx,%rsi)
movq 0x70(%rsp), %rbx
movb %r13b, (%rbx,%rsi)
movq 0x60(%rsp), %rax
movb %r13b, (%rax,%rsi)
cmpl $0xc, %ebp
jne 0x11c3f
movzbl (%rdi,%rcx), %ecx
movb (%rcx,%r10), %cl
movq 0x18(%rsp), %rsi
movq 0x28(%rsp), %rbp
movb %cl, (%rsi,%rbp)
movb $0x2e, (%rdx,%rbp)
movb %r13b, (%rbx,%rbp)
movb %r13b, (%rax,%rbp)
addl $0x2, %r11d
addl $0x2, %r12d
movl %r12d, 0xc(%rsp)
jmp 0x11c48
movl %r12d, 0xc(%rsp)
movq 0x20(%rsp), %rbp
incq %r8
movslq 0xc(%r15), %rax
cmpq %rax, %r8
jl 0x110ac
jmp 0x11c56
movl %ecx, 0xc(%rsp)
movq 0x28(%rsp), %r11
movq 0x20(%rsp), %rbp
movl 0x10(%rsp), %edx
movq %rdi, %rsi
jmp 0x11c2d
movslq 0xc(%rsp), %rdx
movl 0x14(%rsp), %esi
jmp 0x11c6c
movl $0x6, %esi
movl $0x6, %r11d
movq 0x60(%rsp), %r13
movq 0x110(%rsp), %rcx
movq 0x48(%rcx), %rax
subq 0x40(%rcx), %rax
cmpq %rdx, %rax
movq 0x40(%rsp), %r14
jne 0x11e74
addq $0x3, %rax
cmpq %rax, 0x108(%rsp)
movq 0x70(%rsp), %r15
jne 0x11d8e
movslq %esi, %rax
movq 0x68(%rsp), %rcx
cmpb $0x2a, -0x1(%rcx,%rax)
je 0x11d8e
movq 0x30(%rsp), %r8
movzbl (%r8,%rdx), %ecx
cmpq $0x4, %rcx
setae %dil
movb 0x1(%r8,%rdx), %sil
movb 0x2(%r8,%rdx), %dl
movzbl %sil, %esi
movzbl %dl, %edx
cmpb $0x4, %sil
setae %r8b
orb %dil, %r8b
cmpb $0x4, %dl
setae %dil
orb %r8b, %dil
je 0x11d00
leaq 0x6806(%rip), %rdi      # 0x18500
addq $0x58, %rdi
jmp 0x11d1f
movl %ecx, %edi
shlb $0x4, %dil
leal (,%rsi,4), %r8d
orb %dl, %dil
orb %r8b, %dil
movzbl %dil, %edi
addq 0x62b9(%rip), %rdi      # 0x17fd8
movzbl (%rdi), %edi
leaq 0xfa7(%rip), %r8        # 0x12cd0
movb (%rcx,%r8), %cl
movslq %r11d, %r11
movq 0x18(%rsp), %r9
movb %cl, (%r9,%r11)
movb (%rsi,%r8), %cl
movb %cl, 0x1(%r9,%r11)
movb (%rdx,%r8), %cl
movb %cl, 0x2(%r9,%r11)
leaq 0x6476(%rip), %rcx      # 0x181c8
movq (%rcx), %rcx
movb (%rcx,%rdi), %cl
leal 0x1(%rax), %esi
movq 0x68(%rsp), %rdx
movb %cl, (%rdx,%rax)
movb %cl, (%r14,%r11)
movw $0x2e2e, 0x1(%r14,%r11) # imm = 0x2E2E
movb $0x20, %al
movb %al, 0x2(%r13,%r11)
movw $0x2020, %cx            # imm = 0x2020
movw %cx, (%r13,%r11)
movb %al, 0x2(%r15,%r11)
movw %cx, (%r15,%r11)
addl $0x3, %r11d
movslq %r11d, %rax
xorl %ecx, %ecx
movb %cl, (%r15,%rax)
movb %cl, (%r13,%rax)
movb %cl, (%r14,%rax)
movq 0x18(%rsp), %rdx
movb %cl, (%rdx,%rax)
movslq %esi, %rax
movq 0x68(%rsp), %rdx
movb %cl, (%rdx,%rax)
xorl %edi, %edi
movq 0x30(%rsp), %rsi
callq 0x7fd6
movq 0x98(%rsp), %rax
testb $-0x80, (%rax)
je 0x11df8
leaq 0x26fb(%rip), %rsi      # 0x144ce
movq 0xd0(%rsp), %rdi
movq 0x18(%rsp), %rdx
movq %r14, %rcx
movq %r13, %r8
movq %r15, %r9
xorl %eax, %eax
callq 0xf530
movq 0x98(%rsp), %rax
testb $0x1, 0x1(%rax)
je 0x11e19
leaq 0x26d2(%rip), %rsi      # 0x144d7
movq 0xd0(%rsp), %rdi
movq 0x68(%rsp), %rdx
xorl %eax, %eax
callq 0xf530
xorl %edi, %edi
movq 0x18(%rsp), %rsi
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7fd6
leaq 0x2687(%rip), %rdi      # 0x144c4
leaq 0x2538(%rip), %rsi      # 0x1437c
leaq 0x260e(%rip), %rcx      # 0x14459
movl $0xdf, %edx
callq 0x2150
leaq 0x25e7(%rip), %rdi      # 0x14443
leaq 0x2519(%rip), %rsi      # 0x1437c
leaq 0x25ef(%rip), %rcx      # 0x14459
movl $0xdc, %edx
callq 0x2150
leaq 0x257d(%rip), %rdi      # 0x143f8
leaq 0x24fa(%rip), %rsi      # 0x1437c
leaq 0x25d0(%rip), %rcx      # 0x14459
movl $0x139, %edx            # imm = 0x139
callq 0x2150