// File: BenLangmead[P]bowtie/./multikey_qsort.h
// Function: void qsortSufDcU8<S2bDnaString, S2bDnaString>(S2bDnaString const&, S2bDnaString const&, unsigned long, unsigned long*, unsigned long, DifferenceCoverSample<S2bDnaString> const&, unsigned long, unsigned long, bool)
inline
void qsortSufDcU8(const T1& host1,
                  const T2& host,
                  size_t hlen,
                  TIndexOffU* s,
                  size_t slen,
                  const DifferenceCoverSample<T1>& dc,
                  size_t begin,
                  size_t end,
                  bool sanityCheck = false)
{
	assert_leq(end, slen);
	assert_lt(begin, slen);
	assert_gt(end, begin);
	size_t n = end - begin;
	if(n <= 1) return;                 // 1-element list already sorted
	// Note: rand() didn't really cut it here; it seemed to run out of
	// randomness and, after a time, returned the same thing over and
	// over again
	size_t a = (rand() % n) + begin; // choose pivot between begin and end
	assert_lt(a, end);
	assert_geq(a, begin);
	SWAP(s, end-1, a); // move pivot to end
	size_t cur = 0;
	for(size_t i = begin; i < end-1; i++) {
		if(sufDcLtU8(host1, host, hlen, s[i], s[end-1], dc, sanityCheck)) {
#ifndef NDEBUG
			if(sanityCheck) {
				assert(sstr_suf_lt(host1, s[i], hlen, host1, s[end-1], hlen, false));
			}
			assert_lt(begin + cur, end-1);

#endif
			SWAP(s, i, begin + cur);
			cur++;
		}
	}
	// Put pivot into place
	assert_lt(cur, end-begin);
	SWAP(s, end-1, begin+cur);
	if(begin+cur > begin) qsortSufDcU8(host1, host, hlen, s, slen, dc, begin, begin+cur);
	if(end > begin+cur+1) qsortSufDcU8(host1, host, hlen, s, slen, dc, begin+cur+1, end);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movb 0x20(%rbp), %al
movq 0x18(%rbp), %r10
movq 0x10(%rbp), %r10
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
andb $0x1, %al
movb %al, -0x31(%rbp)
movq 0x18(%rbp), %rax
cmpq -0x28(%rbp), %rax
jbe 0x33583
movq 0x16aeb(%rip), %rdi     # 0x49fc0
leaq 0xbcc7(%rip), %rsi      # 0x3f1a3
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xbcc3(%rip), %rsi      # 0x3f1ba
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xe0a6(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16a5f(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x16a93(%rip), %rdi     # 0x49fc0
leaq 0xe9fa(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xd247(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x322, %esi            # imm = 0x322
callq 0x5750
movq %rax, %rdi
movq 0x16a21(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xd0ff(%rip), %rdi      # 0x4066a
leaq 0xe9bc(%rip), %rsi      # 0x41f2e
movl $0x322, %edx            # imm = 0x322
leaq 0xeb8e(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
jb 0x33646
movq 0x16a28(%rip), %rdi     # 0x49fc0
leaq 0xbca8(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xbca3(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xdfe3(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x1699c(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x169d0(%rip), %rdi     # 0x49fc0
leaq 0xe937(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xd184(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x323, %esi            # imm = 0x323
callq 0x5750
movq %rax, %rdi
movq 0x1695e(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xd03c(%rip), %rdi      # 0x4066a
leaq 0xe8f9(%rip), %rsi      # 0x41f2e
movl $0x323, %edx            # imm = 0x323
leaq 0xeacb(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x18(%rbp), %rax
cmpq 0x10(%rbp), %rax
ja 0x33709
movq 0x16965(%rip), %rdi     # 0x49fc0
leaq 0xba96(%rip), %rsi      # 0x3f0f8
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xba91(%rip), %rsi      # 0x3f10e
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xdf20(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x168d9(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x1690d(%rip), %rdi     # 0x49fc0
leaq 0xe874(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xd0c1(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x324, %esi            # imm = 0x324
callq 0x5750
movq %rax, %rdi
movq 0x1689b(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xcf79(%rip), %rdi      # 0x4066a
leaq 0xe836(%rip), %rsi      # 0x41f2e
movl $0x324, %edx            # imm = 0x324
leaq 0xea08(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x18(%rbp), %rax
subq 0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x1, -0x40(%rbp)
ja 0x33721
jmp 0x345a8
callq 0x50f0
cltq
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x40(%rbp)
addq 0x10(%rbp), %rdx
movq %rdx, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq 0x18(%rbp), %rax
jb 0x337fb
movq 0x16873(%rip), %rdi     # 0x49fc0
leaq 0xbaf3(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xbaee(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xde2e(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x167e7(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x1681b(%rip), %rdi     # 0x49fc0
leaq 0xe782(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xcfcf(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x32b, %esi            # imm = 0x32B
callq 0x5750
movq %rax, %rdi
movq 0x167a9(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xce87(%rip), %rdi      # 0x4066a
leaq 0xe744(%rip), %rsi      # 0x41f2e
movl $0x32b, %edx            # imm = 0x32B
leaq 0xe916(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x48(%rbp), %rax
cmpq 0x10(%rbp), %rax
jae 0x338be
movq 0x167b0(%rip), %rdi     # 0x49fc0
leaq 0xb9ee(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb9ea(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xdd6b(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16724(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x16758(%rip), %rdi     # 0x49fc0
leaq 0xe6bf(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xcf0c(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x32c, %esi            # imm = 0x32C
callq 0x5750
movq %rax, %rdi
movq 0x166e6(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xcdc4(%rip), %rdi      # 0x4066a
leaq 0xe681(%rip), %rsi      # 0x41f2e
movl $0x32c, %edx            # imm = 0x32C
leaq 0xe853(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x18(%rbp), %rax
subq $0x1, %rax
cmpq 0x10(%rbp), %rax
jae 0x33989
movq 0x166e9(%rip), %rdi     # 0x49fc0
leaq 0xb927(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
subq $0x1, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb91f(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xdca0(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16659(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x1668d(%rip), %rdi     # 0x49fc0
leaq 0xe5f4(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xce41(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x32d, %esi            # imm = 0x32D
callq 0x5750
movq %rax, %rdi
movq 0x1661b(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xccf9(%rip), %rdi      # 0x4066a
leaq 0xe5b6(%rip), %rsi      # 0x41f2e
movl $0x32d, %edx            # imm = 0x32D
leaq 0xe788(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x48(%rbp), %rax
cmpq 0x10(%rbp), %rax
jae 0x33a4c
movq 0x16622(%rip), %rdi     # 0x49fc0
leaq 0xb860(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb85c(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xdbdd(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16596(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x165ca(%rip), %rdi     # 0x49fc0
leaq 0xe531(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xcd7e(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x32d, %esi            # imm = 0x32D
callq 0x5750
movq %rax, %rdi
movq 0x16558(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xcc36(%rip), %rdi      # 0x4066a
leaq 0xe4f3(%rip), %rsi      # 0x41f2e
movl $0x32d, %edx            # imm = 0x32D
leaq 0xe6c5(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x18(%rbp), %rax
subq $0x1, %rax
cmpq 0x18(%rbp), %rax
jb 0x33b17
movq 0x1655b(%rip), %rdi     # 0x49fc0
leaq 0xb7db(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
subq $0x1, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb7d2(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xdb12(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x164cb(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x164ff(%rip), %rdi     # 0x49fc0
leaq 0xe466(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xccb3(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x32d, %esi            # imm = 0x32D
callq 0x5750
movq %rax, %rdi
movq 0x1648d(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xcb6b(%rip), %rdi      # 0x4066a
leaq 0xe428(%rip), %rsi      # 0x41f2e
movl $0x32d, %edx            # imm = 0x32D
leaq 0xe5fa(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x48(%rbp), %rax
cmpq 0x18(%rbp), %rax
jb 0x33bda
movq 0x16494(%rip), %rdi     # 0x49fc0
leaq 0xb714(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb70f(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xda4f(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16408(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x1643c(%rip), %rdi     # 0x49fc0
leaq 0xe3a3(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xcbf0(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x32d, %esi            # imm = 0x32D
callq 0x5750
movq %rax, %rdi
movq 0x163ca(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xcaa8(%rip), %rdi      # 0x4066a
leaq 0xe365(%rip), %rsi      # 0x41f2e
movl $0x32d, %edx            # imm = 0x32D
leaq 0xe537(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq 0x18(%rbp), %rdx
subq $0x1, %rdx
movq -0x48(%rbp), %rcx
callq 0x15610
movq $0x0, -0x50(%rbp)
movq 0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq 0x18(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x340f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movq -0x20(%rbp), %rax
movq 0x18(%rbp), %r8
subq $0x1, %r8
movq (%rax,%r8,8), %r8
movq -0x30(%rbp), %r9
movb -0x31(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, (%rsp)
callq 0x345b0
testb $0x1, %al
jne 0x33c5d
jmp 0x340dd
testb $0x1, -0x31(%rbp)
je 0x33cc6
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movq -0x18(%rbp), %rdx
movq -0x8(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x18(%rbp), %r8
subq $0x1, %r8
movq (%rax,%r8,8), %r8
movq -0x18(%rbp), %r9
xorl %eax, %eax
movl $0x0, (%rsp)
callq 0x15f40
testb $0x1, %al
jne 0x33ca3
jmp 0x33ca5
jmp 0x33cc4
leaq 0xe508(%rip), %rdi      # 0x421b4
leaq 0xe27b(%rip), %rsi      # 0x41f2e
movl $0x333, %edx            # imm = 0x333
leaq 0xe44d(%rip), %rcx      # 0x4210c
callq 0x51e0
jmp 0x33cc6
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
movq 0x18(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jb 0x33d9c
movq 0x162da(%rip), %rdi     # 0x49fc0
leaq 0xb55a(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
addq -0x50(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb551(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
subq $0x1, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd88d(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16246(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x1627a(%rip), %rdi     # 0x49fc0
leaq 0xe1e1(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xca2e(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x335, %esi            # imm = 0x335
callq 0x5750
movq %rax, %rdi
movq 0x16208(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc8e6(%rip), %rdi      # 0x4066a
leaq 0xe1a3(%rip), %rsi      # 0x41f2e
movl $0x335, %edx            # imm = 0x335
leaq 0xe375(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x58(%rbp), %rax
cmpq 0x10(%rbp), %rax
jae 0x33e5f
movq 0x1620f(%rip), %rdi     # 0x49fc0
leaq 0xb44d(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb449(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd7ca(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x16183(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x161b7(%rip), %rdi     # 0x49fc0
leaq 0xe11e(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc96b(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x338, %esi            # imm = 0x338
callq 0x5750
movq %rax, %rdi
movq 0x16145(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc823(%rip), %rdi      # 0x4066a
leaq 0xe0e0(%rip), %rsi      # 0x41f2e
movl $0x338, %edx            # imm = 0x338
leaq 0xe2b2(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq 0x10(%rbp), %rax
jae 0x33f2a
movq 0x16148(%rip), %rdi     # 0x49fc0
leaq 0xb386(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
addq -0x50(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb37e(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd6ff(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x160b8(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x160ec(%rip), %rdi     # 0x49fc0
leaq 0xe053(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc8a0(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x338, %esi            # imm = 0x338
callq 0x5750
movq %rax, %rdi
movq 0x1607a(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc758(%rip), %rdi      # 0x4066a
leaq 0xe015(%rip), %rsi      # 0x41f2e
movl $0x338, %edx            # imm = 0x338
leaq 0xe1e7(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x58(%rbp), %rax
cmpq 0x18(%rbp), %rax
jb 0x33fed
movq 0x16081(%rip), %rdi     # 0x49fc0
leaq 0xb301(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb2fc(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd63c(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15ff5(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x16029(%rip), %rdi     # 0x49fc0
leaq 0xdf90(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc7dd(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x338, %esi            # imm = 0x338
callq 0x5750
movq %rax, %rdi
movq 0x15fb7(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc695(%rip), %rdi      # 0x4066a
leaq 0xdf52(%rip), %rsi      # 0x41f2e
movl $0x338, %edx            # imm = 0x338
leaq 0xe124(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq 0x18(%rbp), %rax
jb 0x340b8
movq 0x15fba(%rip), %rdi     # 0x49fc0
leaq 0xb23a(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
addq -0x50(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb231(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd571(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15f2a(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15f5e(%rip), %rdi     # 0x49fc0
leaq 0xdec5(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc712(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x338, %esi            # imm = 0x338
callq 0x5750
movq %rax, %rdi
movq 0x15eec(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc5ca(%rip), %rdi      # 0x4066a
leaq 0xde87(%rip), %rsi      # 0x41f2e
movl $0x338, %edx            # imm = 0x338
leaq 0xe059(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq 0x10(%rbp), %rcx
addq -0x50(%rbp), %rcx
callq 0x15610
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x340df
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x33c03
movq -0x50(%rbp), %rax
movq 0x18(%rbp), %rcx
subq 0x10(%rbp), %rcx
cmpq %rcx, %rax
jb 0x341be
movq 0x15eb4(%rip), %rdi     # 0x49fc0
leaq 0xb134(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb12f(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
subq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd46b(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15e24(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15e58(%rip), %rdi     # 0x49fc0
leaq 0xddbf(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc60c(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x33d, %esi            # imm = 0x33D
callq 0x5750
movq %rax, %rdi
movq 0x15de6(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc4c4(%rip), %rdi      # 0x4066a
leaq 0xdd81(%rip), %rsi      # 0x41f2e
movl $0x33d, %edx            # imm = 0x33D
leaq 0xdf53(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x18(%rbp), %rax
subq $0x1, %rax
cmpq 0x10(%rbp), %rax
jae 0x34289
movq 0x15de9(%rip), %rdi     # 0x49fc0
leaq 0xb027(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
subq $0x1, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xb01f(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd3a0(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15d59(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15d8d(%rip), %rdi     # 0x49fc0
leaq 0xdcf4(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc541(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x33e, %esi            # imm = 0x33E
callq 0x5750
movq %rax, %rdi
movq 0x15d1b(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc3f9(%rip), %rdi      # 0x4066a
leaq 0xdcb6(%rip), %rsi      # 0x41f2e
movl $0x33e, %edx            # imm = 0x33E
leaq 0xde88(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq 0x10(%rbp), %rax
jae 0x34354
movq 0x15d1e(%rip), %rdi     # 0x49fc0
leaq 0xaf5c(%rip), %rsi      # 0x3f205
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
addq -0x50(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xaf54(%rip), %rsi      # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd2d5(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15c8e(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15cc2(%rip), %rdi     # 0x49fc0
leaq 0xdc29(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc476(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x33e, %esi            # imm = 0x33E
callq 0x5750
movq %rax, %rdi
movq 0x15c50(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc32e(%rip), %rdi      # 0x4066a
leaq 0xdbeb(%rip), %rsi      # 0x41f2e
movl $0x33e, %edx            # imm = 0x33E
leaq 0xddbd(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x18(%rbp), %rax
subq $0x1, %rax
cmpq 0x18(%rbp), %rax
jb 0x3441f
movq 0x15c53(%rip), %rdi     # 0x49fc0
leaq 0xaed3(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
subq $0x1, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xaeca(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd20a(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15bc3(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15bf7(%rip), %rdi     # 0x49fc0
leaq 0xdb5e(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc3ab(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x33e, %esi            # imm = 0x33E
callq 0x5750
movq %rax, %rdi
movq 0x15b85(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc263(%rip), %rdi      # 0x4066a
leaq 0xdb20(%rip), %rsi      # 0x41f2e
movl $0x33e, %edx            # imm = 0x33E
leaq 0xdcf2(%rip), %rcx      # 0x4210c
callq 0x51e0
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq 0x18(%rbp), %rax
jb 0x344ea
movq 0x15b88(%rip), %rdi     # 0x49fc0
leaq 0xae08(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
addq -0x50(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xadff(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xd13f(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15af8(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15b2c(%rip), %rdi     # 0x49fc0
leaq 0xda93(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc2e0(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x33e, %esi            # imm = 0x33E
callq 0x5750
movq %rax, %rdi
movq 0x15aba(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xc198(%rip), %rdi      # 0x4066a
leaq 0xda55(%rip), %rsi      # 0x41f2e
movl $0x33e, %edx            # imm = 0x33E
leaq 0xdc27(%rip), %rcx      # 0x4210c
callq 0x51e0
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq 0x18(%rbp), %rdx
subq $0x1, %rdx
movq 0x10(%rbp), %rcx
addq -0x50(%rbp), %rcx
callq 0x15610
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq 0x10(%rbp), %rax
jbe 0x34552
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq 0x10(%rbp), %r10
movq 0x10(%rbp), %rax
addq -0x50(%rbp), %rax
xorl %r11d, %r11d
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
callq 0x33490
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rcx
addq -0x50(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x345a8
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq 0x10(%rbp), %r10
addq -0x50(%rbp), %r10
addq $0x1, %r10
movq 0x18(%rbp), %rax
xorl %r11d, %r11d
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
callq 0x33490
addq $0x70, %rsp
popq %rbp
retq
nop