// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/ksw2/ksw2_gg2.c
// Function: ksw_gg2
int ksw_gg2(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat, int8_t q, int8_t e, int w, int *m_cigar_, int *n_cigar_, uint32_t **cigar_)
{
	int qe = q + e, qe2 = qe + qe, r, t, n_col, *off = 0, H0 = 0, last_H0_t = 0;
	int8_t *u, *v, *x, *y, *s;
	uint8_t *p = 0, *qr;

	u = (int8_t*)kcalloc(km, tlen + 1, 1);
	v = (int8_t*)kcalloc(km, tlen + 1, 1);
	x = (int8_t*)kcalloc(km, tlen + 1, 1);
	y = (int8_t*)kcalloc(km, tlen + 1, 1);
	s = (int8_t*)kmalloc(km, tlen);
	qr = (uint8_t*)kmalloc(km, qlen);
	if (w < 0) w = tlen > qlen? tlen : qlen;
	n_col = w + 1 < tlen? w + 1 : tlen;
	if (m_cigar_ && n_cigar_ && cigar_) {
		p = (uint8_t*)kcalloc(km, (qlen + tlen) * n_col, 1);
		off = (int*)kmalloc(km, (qlen + tlen) * sizeof(int));
	}

	for (t = 0; t < qlen; ++t)
		qr[t] = query[qlen - 1 - t];

	for (r = 0; r < qlen + tlen - 1; ++r) {
		int st = 0, en = tlen - 1;
		int8_t x1, v1;
		// find the boundaries
		if (st < r - qlen + 1) st = r - qlen + 1;
		if (en > r) en = r;
		if (st < (r-w+1)>>1) st = (r-w+1)>>1; // take the ceil
		if (en > (r+w)>>1) en = (r+w)>>1; // take the floor
		// set boundary conditions
		if (st != 0) {
			if (r > st + st + w - 1) x1 = v1 = 0;
			else x1 = x[st-1], v1 = v[st-1]; // (r-1, st-1) in the band
		} else x1 = 0, v1 = r? q : 0;
		if (en != r) {
			if (r < en + en - w - 1) y[en] = u[en] = 0; // (r-1,en) out of the band; TODO: is this line necessary?
		} else y[r] = 0, u[r] = r? q : 0;
		// loop fission: set scores first
		for (t = st; t <= en; ++t)
			s[t] = mat[target[t] * m + qr[t + qlen - 1 - r]];
		// core loop
		if (m_cigar_ && n_cigar_ && cigar_) {
			uint8_t *pr = p + r * n_col;
			off[r] = st;
			for (t = st; t <= en; ++t) {
				/* At the beginning of the loop, v1=v(r-1,t-1), x1=x(r-1,t-1), u[t]=u(r-1,t), v[t]=v(r-1,t), x[t]=x(r-1,t), y[t]=y(r-1,t)
				   a      = x(r-1,t-1) + v(r-1,t-1)
				   b      = y(r-1,t)   + u(r-1,t)
				   z      = max{ S(t,r-t) + 2q + 2r, a, b }
				   u(r,t) = z - v(r-1,t-1)
				   v(r,t) = z - u(r-1,t)
				   x(r,t) = max{ 0, a - z + q }
				   y(r,t) = max{ 0, b - z + q }
				 */
				uint8_t d;
				int8_t u1;
				int8_t z = s[t] + qe2;
				int8_t a = x1   + v1;
				int8_t b = y[t] + u[t];
				d = a > z? 1 : 0; // d = z >= a? 0 : 1
				z = a > z? a : z;
				d = b > z? 2 : d;
				z = b > z? b : z;
				u1 = u[t];              // u1   = u(r-1,t) (temporary variable)
				u[t] = z - v1;          // u[t] = u(r,t)
				v1 = v[t];              // v1   = v(r-1,t) (set for the next iteration)
				v[t] = z - u1;          // v[t] = v(r,t)
				z -= q;
				a -= z;
				b -= z;
				x1 = x[t];              // x1   = x(r-1,t) (set for the next iteration)
				d   |= a > 0? 0x08 : 0;
				x[t] = a > 0? a    : 0; // x[t] = x(r,t)
				d   |= b > 0? 0x10 : 0;
				y[t] = b > 0? b    : 0; // y[t] = y(r,t)
				pr[t - st] = d;
			}
		} else {
			for (t = st; t <= en; ++t) {
				int8_t u1;
				int8_t z = s[t] + qe2;
				int8_t a = x1   + v1;
				int8_t b = y[t] + u[t];
				z = a > z? a : z;
				z = b > z? b : z;
				u1 = u[t];
				u[t] = z - v1;
				v1 = v[t];
				v[t] = z - u1;
				z -= q;
				a -= z;
				b -= z;
				x1 = x[t];
				x[t] = a > 0? a : 0;
				y[t] = b > 0? b : 0;
			}
		}
		if (r > 0) {
			if (last_H0_t >= st && last_H0_t <= en)
				H0 += v[last_H0_t] - qe;
			else ++last_H0_t, H0 += u[last_H0_t] - qe;
		} else H0 = v[0] - qe - qe, last_H0_t = 0;
	}
	kfree(km, u); kfree(km, v); kfree(km, x); kfree(km, y); kfree(km, s); kfree(km, qr);
	if (m_cigar_ && n_cigar_ && cigar_) {
		ksw_backtrack(km, 1, 0, 0, p, off, 0, n_col, tlen-1, qlen-1, m_cigar_, n_cigar_, cigar_);
		kfree(km, p); kfree(km, off);
	}
	return H0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movb %r9b, %al
movq 0x40(%rbp), %r9
movq 0x38(%rbp), %r9
movq 0x30(%rbp), %r9
movl 0x28(%rbp), %r9d
movb 0x20(%rbp), %r9b
movb 0x18(%rbp), %r9b
movq 0x10(%rbp), %r9
movq %rdi, -0x20(%rbp)
movl %esi, -0x24(%rbp)
movq %rdx, -0x30(%rbp)
movl %ecx, -0x34(%rbp)
movq %r8, -0x40(%rbp)
movb %al, -0x41(%rbp)
movsbl 0x18(%rbp), %eax
movsbl 0x20(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %eax
addl -0x48(%rbp), %eax
movl %eax, -0x4c(%rbp)
movq $0x0, -0x60(%rbp)
movl $0x0, -0x64(%rbp)
movl $0x0, -0x68(%rbp)
movq $0x0, -0x98(%rbp)
movq -0x20(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
movl $0x1, %edx
callq 0x19e9c0
movq %rax, -0x70(%rbp)
movq -0x20(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
movl $0x1, %edx
callq 0x19e9c0
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
movl $0x1, %edx
callq 0x19e9c0
movq %rax, -0x80(%rbp)
movq -0x20(%rbp), %rdi
movl -0x34(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
movl $0x1, %edx
callq 0x19e9c0
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0x19e720
movq %rax, -0x90(%rbp)
movq -0x20(%rbp), %rdi
movslq -0x24(%rbp), %rsi
callq 0x19e720
movq %rax, -0xa0(%rbp)
cmpl $0x0, 0x28(%rbp)
jge 0x1b4cad
movl -0x34(%rbp), %eax
cmpl -0x24(%rbp), %eax
jle 0x1b4c9b
movl -0x34(%rbp), %eax
movl %eax, -0xc8(%rbp)
jmp 0x1b4ca4
movl -0x24(%rbp), %eax
movl %eax, -0xc8(%rbp)
movl -0xc8(%rbp), %eax
movl %eax, 0x28(%rbp)
movl 0x28(%rbp), %eax
addl $0x1, %eax
cmpl -0x34(%rbp), %eax
jge 0x1b4cc6
movl 0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xcc(%rbp)
jmp 0x1b4ccf
movl -0x34(%rbp), %eax
movl %eax, -0xcc(%rbp)
movl -0xcc(%rbp), %eax
movl %eax, -0x58(%rbp)
cmpq $0x0, 0x30(%rbp)
je 0x1b4d29
cmpq $0x0, 0x38(%rbp)
je 0x1b4d29
cmpq $0x0, 0x40(%rbp)
je 0x1b4d29
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %eax
addl -0x34(%rbp), %eax
imull -0x58(%rbp), %eax
movslq %eax, %rsi
movl $0x1, %edx
callq 0x19e9c0
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %eax
addl -0x34(%rbp), %eax
movslq %eax, %rsi
shlq $0x2, %rsi
callq 0x19e720
movq %rax, -0x60(%rbp)
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x1b4d64
movq -0x30(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
subl -0x54(%rbp), %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0xa0(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1b4d30
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
movl -0x24(%rbp), %ecx
addl -0x34(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1b552d
movl $0x0, -0xa4(%rbp)
movl -0x34(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xa8(%rbp)
movl -0xa4(%rbp), %eax
movl -0x50(%rbp), %ecx
subl -0x24(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1b4db7
movl -0x50(%rbp), %eax
subl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl -0xa8(%rbp), %eax
cmpl -0x50(%rbp), %eax
jle 0x1b4dcb
movl -0x50(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa4(%rbp), %eax
movl -0x50(%rbp), %ecx
subl 0x28(%rbp), %ecx
addl $0x1, %ecx
sarl %ecx
cmpl %ecx, %eax
jge 0x1b4df1
movl -0x50(%rbp), %eax
subl 0x28(%rbp), %eax
addl $0x1, %eax
sarl %eax
movl %eax, -0xa4(%rbp)
movl -0xa8(%rbp), %eax
movl -0x50(%rbp), %ecx
addl 0x28(%rbp), %ecx
sarl %ecx
cmpl %ecx, %eax
jle 0x1b4e11
movl -0x50(%rbp), %eax
addl 0x28(%rbp), %eax
sarl %eax
movl %eax, -0xa8(%rbp)
cmpl $0x0, -0xa4(%rbp)
je 0x1b4e77
movl -0x50(%rbp), %eax
movl -0xa4(%rbp), %ecx
addl -0xa4(%rbp), %ecx
addl 0x28(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jle 0x1b4e43
movb $0x0, -0xaa(%rbp)
movb $0x0, -0xa9(%rbp)
jmp 0x1b4e75
movq -0x80(%rbp), %rax
movl -0xa4(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %al
movb %al, -0xa9(%rbp)
movq -0x78(%rbp), %rax
movl -0xa4(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %al
movb %al, -0xaa(%rbp)
jmp 0x1b4ea6
movb $0x0, -0xa9(%rbp)
cmpl $0x0, -0x50(%rbp)
je 0x1b4e90
movsbl 0x18(%rbp), %eax
movl %eax, -0xd0(%rbp)
jmp 0x1b4e9a
xorl %eax, %eax
movl %eax, -0xd0(%rbp)
jmp 0x1b4e9a
movl -0xd0(%rbp), %eax
movb %al, -0xaa(%rbp)
movl -0xa8(%rbp), %eax
cmpl -0x50(%rbp), %eax
je 0x1b4eed
movl -0x50(%rbp), %eax
movl -0xa8(%rbp), %ecx
addl -0xa8(%rbp), %ecx
subl 0x28(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1b4eeb
movq -0x70(%rbp), %rax
movslq -0xa8(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x88(%rbp), %rax
movslq -0xa8(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x1b4f2b
movq -0x88(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb $0x0, (%rax,%rcx)
cmpl $0x0, -0x50(%rbp)
je 0x1b4f0e
movsbl 0x18(%rbp), %eax
movl %eax, -0xd4(%rbp)
jmp 0x1b4f18
xorl %eax, %eax
movl %eax, -0xd4(%rbp)
jmp 0x1b4f18
movl -0xd4(%rbp), %eax
movb %al, %dl
movq -0x70(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0xa4(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0xa8(%rbp), %eax
jg 0x1b4f91
movq 0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movslq -0x54(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movsbl -0x41(%rbp), %edx
imull %edx, %ecx
movq -0xa0(%rbp), %rdx
movl -0x54(%rbp), %esi
addl -0x24(%rbp), %esi
subl $0x1, %esi
subl -0x50(%rbp), %esi
movslq %esi, %rsi
movzbl (%rdx,%rsi), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x90(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1b4f34
cmpq $0x0, 0x30(%rbp)
je 0x1b52a7
cmpq $0x0, 0x38(%rbp)
je 0x1b52a7
cmpq $0x0, 0x40(%rbp)
je 0x1b52a7
movq -0x98(%rbp), %rax
movl -0x50(%rbp), %ecx
imull -0x58(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0xb8(%rbp)
movl -0xa4(%rbp), %edx
movq -0x60(%rbp), %rax
movslq -0x50(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0xa4(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0xa8(%rbp), %eax
jg 0x1b52a2
movq -0x90(%rbp), %rax
movslq -0x54(%rbp), %rcx
movsbl (%rax,%rcx), %eax
addl -0x4c(%rbp), %eax
movb %al, -0xbb(%rbp)
movsbl -0xa9(%rbp), %eax
movsbl -0xaa(%rbp), %ecx
addl %ecx, %eax
movb %al, -0xbc(%rbp)
movq -0x88(%rbp), %rax
movslq -0x54(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x54(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movb %al, -0xbd(%rbp)
movsbl -0xbc(%rbp), %edx
movsbl -0xbb(%rbp), %esi
xorl %eax, %eax
movl $0x1, %ecx
cmpl %esi, %edx
cmovgl %ecx, %eax
movb %al, -0xb9(%rbp)
movsbl -0xbc(%rbp), %eax
movsbl -0xbb(%rbp), %ecx
cmpl %ecx, %eax
jle 0x1b5088
movsbl -0xbc(%rbp), %eax
movl %eax, -0xd8(%rbp)
jmp 0x1b5095
movsbl -0xbb(%rbp), %eax
movl %eax, -0xd8(%rbp)
movl -0xd8(%rbp), %eax
movb %al, -0xbb(%rbp)
movsbl -0xbd(%rbp), %eax
movsbl -0xbb(%rbp), %ecx
cmpl %ecx, %eax
jle 0x1b50c0
movl $0x2, %eax
movl %eax, -0xdc(%rbp)
jmp 0x1b50cd
movzbl -0xb9(%rbp), %eax
movl %eax, -0xdc(%rbp)
movl -0xdc(%rbp), %eax
movb %al, -0xb9(%rbp)
movsbl -0xbd(%rbp), %eax
movsbl -0xbb(%rbp), %ecx
cmpl %ecx, %eax
jle 0x1b50fa
movsbl -0xbd(%rbp), %eax
movl %eax, -0xe0(%rbp)
jmp 0x1b5107
movsbl -0xbb(%rbp), %eax
movl %eax, -0xe0(%rbp)
movl -0xe0(%rbp), %eax
movb %al, -0xbb(%rbp)
movq -0x70(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xba(%rbp)
movsbl -0xbb(%rbp), %eax
movsbl -0xaa(%rbp), %ecx
subl %ecx, %eax
movb %al, %dl
movq -0x70(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x78(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xaa(%rbp)
movsbl -0xbb(%rbp), %eax
movsbl -0xba(%rbp), %ecx
subl %ecx, %eax
movb %al, %dl
movq -0x78(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movsbl 0x18(%rbp), %ecx
movsbl -0xbb(%rbp), %eax
subl %ecx, %eax
movb %al, -0xbb(%rbp)
movsbl -0xbb(%rbp), %ecx
movsbl -0xbc(%rbp), %eax
subl %ecx, %eax
movb %al, -0xbc(%rbp)
movsbl -0xbb(%rbp), %ecx
movsbl -0xbd(%rbp), %eax
subl %ecx, %eax
movb %al, -0xbd(%rbp)
movq -0x80(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xa9(%rbp)
movsbl -0xbc(%rbp), %edx
xorl %ecx, %ecx
movl $0x8, %eax
cmpl $0x0, %edx
cmovgl %eax, %ecx
movzbl -0xb9(%rbp), %eax
orl %ecx, %eax
movb %al, -0xb9(%rbp)
movsbl -0xbc(%rbp), %eax
cmpl $0x0, %eax
jle 0x1b51fd
movsbl -0xbc(%rbp), %eax
movl %eax, -0xe4(%rbp)
jmp 0x1b5207
xorl %eax, %eax
movl %eax, -0xe4(%rbp)
jmp 0x1b5207
movl -0xe4(%rbp), %eax
movb %al, %dl
movq -0x80(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movsbl -0xbd(%rbp), %edx
xorl %ecx, %ecx
movl $0x10, %eax
cmpl $0x0, %edx
cmovgl %eax, %ecx
movzbl -0xb9(%rbp), %eax
orl %ecx, %eax
movb %al, -0xb9(%rbp)
movsbl -0xbd(%rbp), %eax
cmpl $0x0, %eax
jle 0x1b5258
movsbl -0xbd(%rbp), %eax
movl %eax, -0xe8(%rbp)
jmp 0x1b5262
xorl %eax, %eax
movl %eax, -0xe8(%rbp)
jmp 0x1b5262
movl -0xe8(%rbp), %eax
movb %al, %dl
movq -0x88(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0xb9(%rbp), %dl
movq -0xb8(%rbp), %rax
movl -0x54(%rbp), %ecx
subl -0xa4(%rbp), %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1b4fe7
jmp 0x1b54b3
movl -0xa4(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0xa8(%rbp), %eax
jg 0x1b54b1
movq -0x90(%rbp), %rax
movslq -0x54(%rbp), %rcx
movsbl (%rax,%rcx), %eax
addl -0x4c(%rbp), %eax
movb %al, -0xbf(%rbp)
movsbl -0xa9(%rbp), %eax
movsbl -0xaa(%rbp), %ecx
addl %ecx, %eax
movb %al, -0xc0(%rbp)
movq -0x88(%rbp), %rax
movslq -0x54(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x54(%rbp), %rdx
movsbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movb %al, -0xc1(%rbp)
movsbl -0xc0(%rbp), %eax
movsbl -0xbf(%rbp), %ecx
cmpl %ecx, %eax
jle 0x1b5331
movsbl -0xc0(%rbp), %eax
movl %eax, -0xec(%rbp)
jmp 0x1b533e
movsbl -0xbf(%rbp), %eax
movl %eax, -0xec(%rbp)
movl -0xec(%rbp), %eax
movb %al, -0xbf(%rbp)
movsbl -0xc1(%rbp), %eax
movsbl -0xbf(%rbp), %ecx
cmpl %ecx, %eax
jle 0x1b536b
movsbl -0xc1(%rbp), %eax
movl %eax, -0xf0(%rbp)
jmp 0x1b5378
movsbl -0xbf(%rbp), %eax
movl %eax, -0xf0(%rbp)
movl -0xf0(%rbp), %eax
movb %al, -0xbf(%rbp)
movq -0x70(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xbe(%rbp)
movsbl -0xbf(%rbp), %eax
movsbl -0xaa(%rbp), %ecx
subl %ecx, %eax
movb %al, %dl
movq -0x70(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x78(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xaa(%rbp)
movsbl -0xbf(%rbp), %eax
movsbl -0xbe(%rbp), %ecx
subl %ecx, %eax
movb %al, %dl
movq -0x78(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movsbl 0x18(%rbp), %ecx
movsbl -0xbf(%rbp), %eax
subl %ecx, %eax
movb %al, -0xbf(%rbp)
movsbl -0xbf(%rbp), %ecx
movsbl -0xc0(%rbp), %eax
subl %ecx, %eax
movb %al, -0xc0(%rbp)
movsbl -0xbf(%rbp), %ecx
movsbl -0xc1(%rbp), %eax
subl %ecx, %eax
movb %al, -0xc1(%rbp)
movq -0x80(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xa9(%rbp)
movsbl -0xc0(%rbp), %eax
cmpl $0x0, %eax
jle 0x1b544b
movsbl -0xc0(%rbp), %eax
movl %eax, -0xf4(%rbp)
jmp 0x1b5455
xorl %eax, %eax
movl %eax, -0xf4(%rbp)
jmp 0x1b5455
movl -0xf4(%rbp), %eax
movb %al, %dl
movq -0x80(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movsbl -0xc1(%rbp), %eax
cmpl $0x0, %eax
jle 0x1b5483
movsbl -0xc1(%rbp), %eax
movl %eax, -0xf8(%rbp)
jmp 0x1b548d
xorl %eax, %eax
movl %eax, -0xf8(%rbp)
jmp 0x1b548d
movl -0xf8(%rbp), %eax
movb %al, %dl
movq -0x88(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1b52b0
jmp 0x1b54b3
cmpl $0x0, -0x50(%rbp)
jle 0x1b5506
movl -0x68(%rbp), %eax
cmpl -0xa4(%rbp), %eax
jl 0x1b54e6
movl -0x68(%rbp), %eax
cmpl -0xa8(%rbp), %eax
jg 0x1b54e6
movq -0x78(%rbp), %rax
movslq -0x68(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl -0x48(%rbp), %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
jmp 0x1b5504
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
movq -0x70(%rbp), %rax
movslq -0x68(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl -0x48(%rbp), %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
jmp 0x1b551d
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
subl -0x48(%rbp), %eax
subl -0x48(%rbp), %eax
movl %eax, -0x64(%rbp)
movl $0x0, -0x68(%rbp)
jmp 0x1b551f
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x1b4d6b
movq -0x20(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x19e3f0
movq -0x20(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x19e3f0
movq -0x20(%rbp), %rdi
movq -0x80(%rbp), %rsi
callq 0x19e3f0
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x19e3f0
movq -0x20(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0x19e3f0
movq -0x20(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x19e3f0
cmpq $0x0, 0x30(%rbp)
je 0x1b5620
cmpq $0x0, 0x38(%rbp)
je 0x1b5620
cmpq $0x0, 0x40(%rbp)
je 0x1b5620
movq -0x20(%rbp), %rdi
movq -0x98(%rbp), %r8
movq -0x60(%rbp), %r9
movl -0x58(%rbp), %r15d
movl -0x34(%rbp), %r14d
subl $0x1, %r14d
movl -0x24(%rbp), %ebx
subl $0x1, %ebx
movq 0x30(%rbp), %r11
movq 0x38(%rbp), %r10
movq 0x40(%rbp), %rax
movl $0x1, %esi
xorl %ecx, %ecx
xorl %edx, %edx
movl %ecx, %edx
movq $0x0, (%rsp)
movl %r15d, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x1b5640
movq -0x20(%rbp), %rdi
movq -0x98(%rbp), %rsi
callq 0x19e3f0
movq -0x20(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x19e3f0
movl -0x64(%rbp), %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)