// File: chhylp123[P]hifiasm/anchor.cpp
// Function: recalu_minimizer0_adv(char*, unsigned long, unsigned long, long, unsigned long, unsigned long, tiny_queue_t*, unsigned long*, unsigned long*)
uint64_t recalu_minimizer0_adv(char *s, uint64_t len, uint64_t is_hpc, int64_t mz_k, uint64_t mz_h, uint64_t rev, tiny_queue_t *tq, uint64_t *rpos, uint64_t *rspan)
{
	uint64_t k, l, shift1 = mz_k - 1, mask = (1ULL<<mz_k) - 1, kmer[4] = {0,0,0,0}, c, z, hs; int64_t mz_l, mz_span;
	(*rpos) = (*rspan) = (uint64_t)-1;
	if(!rev) {
		if(is_hpc) {
			tq->front = tq->count = 0;
			for (k = 1, l = 0, mz_l = mz_span = 0; k <= len; ++k) {
				if (k == len || seq_nt4_table[(uint8_t)s[k]] != seq_nt4_table[(uint8_t)s[l]]) {
					c = seq_nt4_table[(uint8_t)s[l]];
					if(c < 4) {
						kmer[0] = (kmer[0] << 1 | (c&1))  & mask;/**forward k-mer**/
						kmer[1] = (kmer[1] << 1 | (c>>1)) & mask;
						kmer[2] = kmer[2] >> 1 | (uint64_t)(1 - (c&1))  << shift1; /**reverse k-mer**/
						kmer[3] = kmer[3] >> 1 | (uint64_t)(1 - (c>>1)) << shift1;
						if (kmer[1] == kmer[3]) continue; /** skip "symmetric k-mers" as we don't know it strand**/
						z = kmer[1] < kmer[3]? 0 : 1; /** strand**/
						mz_l++; mz_span += (k - l);
						tq_push(tq, k - l); if (tq->count > mz_k) mz_span -= tq_shift(tq);
						if(mz_l >= mz_k && mz_span < 256) {
							hs = yak_hash64_64(kmer[z<<1|0]) + yak_hash64_64(kmer[z<<1|1]);
							if(mz_h == hs) {
								(*rpos) = k - 1; (*rspan) = mz_span;
								return 1;
							}
						}
					} else {
						mz_l = mz_span = 0;
					}

					l = k;
				}
			}
		} else {
			for (k = 0, mz_l = mz_span = 0; k < len; ++k) {
				c = seq_nt4_table[(uint8_t)s[k]];
				if(c < 4) {
					kmer[0] = (kmer[0] << 1 | (c&1))  & mask;/**forward k-mer**/
					kmer[1] = (kmer[1] << 1 | (c>>1)) & mask;
					kmer[2] = kmer[2] >> 1 | (uint64_t)(1 - (c&1))  << shift1; /**reverse k-mer**/
					kmer[3] = kmer[3] >> 1 | (uint64_t)(1 - (c>>1)) << shift1;
					if (kmer[1] == kmer[3]) continue; /** skip "symmetric k-mers" as we don't know it strand**/
					z = kmer[1] < kmer[3]? 0 : 1; /** strand**/
					mz_l++; mz_span++; if(mz_span > mz_k) mz_span = mz_k;
					if(mz_l >= mz_k) {
						hs = yak_hash64_64(kmer[z<<1|0]) + yak_hash64_64(kmer[z<<1|1]);
						if(mz_h == hs) {
							(*rpos) = k; (*rspan) = mz_span;
							return 1;
						}
					}
				} else {
					mz_l = mz_span = 0;
				}
			}
		}
	} else {
		uint8_t ch[5] = {3, 2, 1, 0, 5};
		if(is_hpc) {
			tq->front = tq->count = 0;
			for (k = 1, l = 0, mz_l = mz_span = 0; k <= len; ++k) {
				if (k == len || seq_nt4_table[(uint8_t)s[len-k-1]] != seq_nt4_table[(uint8_t)s[len-l-1]]) {
					c = ch[seq_nt4_table[(uint8_t)s[len-l-1]]];
					if(c < 4) {
						kmer[0] = (kmer[0] << 1 | (c&1))  & mask;/**forward k-mer**/
						kmer[1] = (kmer[1] << 1 | (c>>1)) & mask;
						kmer[2] = kmer[2] >> 1 | (uint64_t)(1 - (c&1))  << shift1; /**reverse k-mer**/
						kmer[3] = kmer[3] >> 1 | (uint64_t)(1 - (c>>1)) << shift1;
						if (kmer[1] == kmer[3]) continue; /** skip "symmetric k-mers" as we don't know it strand**/
						z = kmer[1] < kmer[3]? 0 : 1; /** strand**/
						mz_l++; mz_span += (k - l);
						tq_push(tq, k - l); if (tq->count > mz_k) mz_span -= tq_shift(tq);
						if(mz_l >= mz_k && mz_span < 256) {
							hs = yak_hash64_64(kmer[z<<1|0]) + yak_hash64_64(kmer[z<<1|1]);
							if(mz_h == hs) {
								(*rpos) = k - 1; (*rspan) = mz_span;
								return 1;
							}
						}
					} else {
						mz_l = mz_span = 0;
					}

					l = k;
				}
			}
		} else {
			for (k = 0, mz_l = mz_span = 0; k < len; ++k) {
				c = ch[seq_nt4_table[(uint8_t)s[len-k-1]]];
				if(c < 4) {
					kmer[0] = (kmer[0] << 1 | (c&1))  & mask;/**forward k-mer**/
					kmer[1] = (kmer[1] << 1 | (c>>1)) & mask;
					kmer[2] = kmer[2] >> 1 | (uint64_t)(1 - (c&1))  << shift1; /**reverse k-mer**/
					kmer[3] = kmer[3] >> 1 | (uint64_t)(1 - (c>>1)) << shift1;
					if (kmer[1] == kmer[3]) continue; /** skip "symmetric k-mers" as we don't know it strand**/
					z = kmer[1] < kmer[3]? 0 : 1; /** strand**/
					mz_l++; mz_span++; if(mz_span > mz_k) mz_span = mz_k;
					if(mz_l >= mz_k) {
						hs = yak_hash64_64(kmer[z<<1|0]) + yak_hash64_64(kmer[z<<1|1]);
						if(mz_h == hs) {
							(*rpos) = k; (*rspan) = mz_span;
							return 1;
						}
					}
				} else {
					mz_l = mz_span = 0;
				}
			}
		}
	}
	
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x28(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rcx
movl $0x1, %eax
shlq %cl, %rax
subq $0x1, %rax
movq %rax, -0x58(%rbp)
leaq -0x80(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x2100
movq 0x20(%rbp), %rax
movq $-0x1, (%rax)
movq 0x18(%rbp), %rax
movq $-0x1, (%rax)
cmpq $0x0, -0x38(%rbp)
jne 0x1addc9
cmpq $0x0, -0x20(%rbp)
je 0x1adbb5
movq 0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq 0x10(%rbp), %rax
movl $0x0, (%rax)
movq $0x1, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
ja 0x1adbb0
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
je 0x1ad988
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1dce7d(%rip), %rax    # 0x38a7e0
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x48(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movl %ecx, %edx
leaq 0x1dce64(%rip), %rcx    # 0x38a7e0
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x1adb9d
movq -0x10(%rbp), %rax
movq -0x48(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1dce43(%rip), %rax    # 0x38a7e0
movzbl (%rax,%rcx), %eax
movq %rax, -0x88(%rbp)
cmpq $0x4, -0x88(%rbp)
jae 0x1adb7f
movq -0x80(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x68(%rbp), %rax
jne 0x1ada53
jmp 0x1adb9f
movq -0x78(%rbp), %rdx
movq -0x68(%rbp), %rsi
movl $0x1, %eax
xorl %ecx, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
cltq
movq %rax, -0x90(%rbp)
movq -0xa0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa0(%rbp)
movq -0x40(%rbp), %rax
subq -0x48(%rbp), %rax
addq -0xa8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq 0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
subq -0x48(%rbp), %rax
movl %eax, %esi
callq 0x1ad720
movq 0x10(%rbp), %rax
movslq 0x4(%rax), %rax
cmpq -0x28(%rbp), %rax
jle 0x1adad7
movq 0x10(%rbp), %rdi
callq 0x1ad760
movslq %eax, %rcx
movq -0xa8(%rbp), %rax
subq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
cmpq -0x28(%rbp), %rax
jl 0x1adb7d
cmpq $0x100, -0xa8(%rbp) # imm = 0x100
jge 0x1adb7d
movq -0x90(%rbp), %rax
shlq %rax
orq $0x0, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, -0xb8(%rbp)
movq -0x90(%rbp), %rax
shlq %rax
orq $0x1, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, %rcx
movq -0xb8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x1adb7b
movq -0x40(%rbp), %rcx
subq $0x1, %rcx
movq 0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq $0x1, -0x8(%rbp)
jmp 0x1ae2e8
jmp 0x1adb7d
jmp 0x1adb95
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x1adb9f
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1ad936
jmp 0x1addc4
movq $0x0, -0x40(%rbp)
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
jae 0x1addc2
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1dcbea(%rip), %rax    # 0x38a7e0
movzbl (%rax,%rcx), %eax
movq %rax, -0x88(%rbp)
cmpq $0x4, -0x88(%rbp)
jae 0x1add99
movq -0x80(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x68(%rbp), %rax
jne 0x1adcac
jmp 0x1addb1
movq -0x78(%rbp), %rdx
movq -0x68(%rbp), %rsi
movl $0x1, %eax
xorl %ecx, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
cltq
movq %rax, -0x90(%rbp)
movq -0xa0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0x28(%rbp), %rax
jle 0x1add06
movq -0x28(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
cmpq -0x28(%rbp), %rax
jl 0x1add97
movq -0x90(%rbp), %rax
shlq %rax
orq $0x0, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, -0xc0(%rbp)
movq -0x90(%rbp), %rax
shlq %rax
orq $0x1, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, %rcx
movq -0xc0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x1add95
movq -0x40(%rbp), %rcx
movq 0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq $0x1, -0x8(%rbp)
jmp 0x1ae2e8
jmp 0x1add97
jmp 0x1addaf
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
jmp 0x1addb1
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1adbd3
jmp 0x1addc4
jmp 0x1ae2e0
movl 0x1de079(%rip), %eax    # 0x38be48
movl %eax, -0xad(%rbp)
movb 0x1de071(%rip), %al     # 0x38be4c
movb %al, -0xa9(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x1ae0c6
movq 0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq 0x10(%rbp), %rax
movl $0x0, (%rax)
movq $0x1, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
ja 0x1ae0c1
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
je 0x1ade89
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
subq -0x40(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1dc984(%rip), %rax    # 0x38a7e0
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
subq -0x48(%rbp), %rdx
subq $0x1, %rdx
movzbl (%rcx,%rdx), %ecx
movl %ecx, %edx
leaq 0x1dc963(%rip), %rcx    # 0x38a7e0
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x1ae0ae
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
subq -0x48(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1dc93a(%rip), %rax    # 0x38a7e0
movzbl (%rax,%rcx), %eax
movzbl -0xad(%rbp,%rax), %eax
movq %rax, -0x88(%rbp)
cmpq $0x4, -0x88(%rbp)
jae 0x1ae090
movq -0x80(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x68(%rbp), %rax
jne 0x1adf64
jmp 0x1ae0b0
movq -0x78(%rbp), %rdx
movq -0x68(%rbp), %rsi
movl $0x1, %eax
xorl %ecx, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
cltq
movq %rax, -0x90(%rbp)
movq -0xa0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa0(%rbp)
movq -0x40(%rbp), %rax
subq -0x48(%rbp), %rax
addq -0xa8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq 0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
subq -0x48(%rbp), %rax
movl %eax, %esi
callq 0x1ad720
movq 0x10(%rbp), %rax
movslq 0x4(%rax), %rax
cmpq -0x28(%rbp), %rax
jle 0x1adfe8
movq 0x10(%rbp), %rdi
callq 0x1ad760
movslq %eax, %rcx
movq -0xa8(%rbp), %rax
subq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
cmpq -0x28(%rbp), %rax
jl 0x1ae08e
cmpq $0x100, -0xa8(%rbp) # imm = 0x100
jge 0x1ae08e
movq -0x90(%rbp), %rax
shlq %rax
orq $0x0, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, -0xc8(%rbp)
movq -0x90(%rbp), %rax
shlq %rax
orq $0x1, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, %rcx
movq -0xc8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x1ae08c
movq -0x40(%rbp), %rcx
subq $0x1, %rcx
movq 0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq $0x1, -0x8(%rbp)
jmp 0x1ae2e8
jmp 0x1ae08e
jmp 0x1ae0a6
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x1ae0b0
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1ade27
jmp 0x1ae2de
movq $0x0, -0x40(%rbp)
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
jae 0x1ae2dc
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
subq -0x40(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1dc6d1(%rip), %rax    # 0x38a7e0
movzbl (%rax,%rcx), %eax
movzbl -0xad(%rbp,%rax), %eax
movq %rax, -0x88(%rbp)
cmpq $0x4, -0x88(%rbp)
jae 0x1ae2b3
movq -0x80(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
shlq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
orq %rcx, %rax
andq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
andq $0x1, %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
shrq %rax
movq -0x88(%rbp), %rcx
shrq %rcx
movl $0x1, %edx
subq %rcx, %rdx
movq -0x50(%rbp), %rcx
shlq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x68(%rbp), %rax
jne 0x1ae1cd
jmp 0x1ae2cb
movq -0x78(%rbp), %rdx
movq -0x68(%rbp), %rsi
movl $0x1, %eax
xorl %ecx, %ecx
cmpq %rsi, %rdx
cmovbl %ecx, %eax
cltq
movq %rax, -0x90(%rbp)
movq -0xa0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0x28(%rbp), %rax
jle 0x1ae227
movq -0x28(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
cmpq -0x28(%rbp), %rax
jl 0x1ae2b1
movq -0x90(%rbp), %rax
shlq %rax
orq $0x0, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, -0xd0(%rbp)
movq -0x90(%rbp), %rax
shlq %rax
orq $0x1, %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x1ad7c0
movq %rax, %rcx
movq -0xd0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x98(%rbp), %rax
jne 0x1ae2af
movq -0x40(%rbp), %rcx
movq 0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq $0x1, -0x8(%rbp)
jmp 0x1ae2e8
jmp 0x1ae2b1
jmp 0x1ae2c9
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xa0(%rbp)
jmp 0x1ae2cb
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1ae0e4
jmp 0x1ae2de
jmp 0x1ae2e0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)