// File: BenLangmead[P]bowtie/./multikey_qsort.h
// Function: void vecswap<unsigned long, unsigned long>(unsigned long*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)
static inline void vecswap(TVal *s, size_t slen, TPos i, TPos j, TPos n, TPos begin, TPos end) {
	assert_geq(i, begin);
	assert_geq(j, begin);
	assert_lt(i, end);
	assert_lt(j, end);
	while(n-- > 0) {
		assert_geq(n, 0);
		TPos a = i+n;
		TPos b = j+n;
		assert_geq(a, begin);
		assert_geq(b, begin);
		assert_lt(a, end);
		assert_lt(b, end);
		swap(s, slen, a, b);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x158d7
movq 0x34797(%rip), %rdi     # 0x49fc0
leaq 0x299d5(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x299d1(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2bd52(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x3470b(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x3473f(%rip), %rdi     # 0x49fc0
leaq 0x2c6a6(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2aef3(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x6f, %esi
callq 0x5750
movq %rax, %rdi
movq 0x346cd(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2adab(%rip), %rdi     # 0x4066a
leaq 0x2c668(%rip), %rsi     # 0x41f2e
movl $0x6f, %edx
leaq 0x2d176(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x1599a
movq 0x346d4(%rip), %rdi     # 0x49fc0
leaq 0x29912(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2990e(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2bc8f(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x34648(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x3467c(%rip), %rdi     # 0x49fc0
leaq 0x2c5e3(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2ae30(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x70, %esi
callq 0x5750
movq %rax, %rdi
movq 0x3460a(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2ace8(%rip), %rdi     # 0x4066a
leaq 0x2c5a5(%rip), %rsi     # 0x41f2e
movl $0x70, %edx
leaq 0x2d0b3(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x18(%rbp), %rax
cmpq 0x10(%rbp), %rax
jb 0x15a5d
movq 0x34611(%rip), %rdi     # 0x49fc0
leaq 0x29891(%rip), %rsi     # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2988c(%rip), %rsi     # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2bbcc(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x34585(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x345b9(%rip), %rdi     # 0x49fc0
leaq 0x2c520(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2ad6d(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x71, %esi
callq 0x5750
movq %rax, %rdi
movq 0x34547(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2ac25(%rip), %rdi     # 0x4066a
leaq 0x2c4e2(%rip), %rsi     # 0x41f2e
movl $0x71, %edx
leaq 0x2cff0(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x20(%rbp), %rax
cmpq 0x10(%rbp), %rax
jb 0x15b20
movq 0x3454e(%rip), %rdi     # 0x49fc0
leaq 0x297ce(%rip), %rsi     # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x297c9(%rip), %rsi     # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2bb09(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x344c2(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x344f6(%rip), %rdi     # 0x49fc0
leaq 0x2c45d(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2acaa(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x72, %esi
callq 0x5750
movq %rax, %rdi
movq 0x34484(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2ab62(%rip), %rdi     # 0x4066a
leaq 0x2c41f(%rip), %rsi     # 0x41f2e
movl $0x72, %edx
leaq 0x2cf2d(%rip), %rcx     # 0x42a48
callq 0x51e0
jmp 0x15b22
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $-0x1, %rcx
movq %rcx, -0x28(%rbp)
cmpq $0x0, %rax
jbe 0x15f37
cmpq $0x0, -0x28(%rbp)
jae 0x15bf9
movq 0x34473(%rip), %rdi     # 0x49fc0
leaq 0x296b1(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x296ad(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x2ba30(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x343e9(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x3441d(%rip), %rdi     # 0x49fc0
leaq 0x2c384(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2abd1(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x74, %esi
callq 0x5750
movq %rax, %rdi
movq 0x343ab(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2aa89(%rip), %rdi     # 0x4066a
leaq 0x2c346(%rip), %rsi     # 0x41f2e
movl $0x74, %edx
leaq 0x2ce54(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x18(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x15cd4
movq 0x3439a(%rip), %rdi     # 0x49fc0
leaq 0x295d8(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x38(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x295d4(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2b955(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x3430e(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x34342(%rip), %rdi     # 0x49fc0
leaq 0x2c2a9(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2aaf6(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x77, %esi
callq 0x5750
movq %rax, %rdi
movq 0x342d0(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2a9ae(%rip), %rdi     # 0x4066a
leaq 0x2c26b(%rip), %rsi     # 0x41f2e
movl $0x77, %edx
leaq 0x2cd79(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x40(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x15d97
movq 0x342d7(%rip), %rdi     # 0x49fc0
leaq 0x29515(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x29511(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2b892(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x3424b(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x3427f(%rip), %rdi     # 0x49fc0
leaq 0x2c1e6(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2aa33(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x78, %esi
callq 0x5750
movq %rax, %rdi
movq 0x3420d(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2a8eb(%rip), %rdi     # 0x4066a
leaq 0x2c1a8(%rip), %rsi     # 0x41f2e
movl $0x78, %edx
leaq 0x2ccb6(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x38(%rbp), %rax
cmpq 0x10(%rbp), %rax
jb 0x15e5a
movq 0x34214(%rip), %rdi     # 0x49fc0
leaq 0x29494(%rip), %rsi     # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x38(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2948f(%rip), %rsi     # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2b7cf(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x34188(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x341bc(%rip), %rdi     # 0x49fc0
leaq 0x2c123(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2a970(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x79, %esi
callq 0x5750
movq %rax, %rdi
movq 0x3414a(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2a828(%rip), %rdi     # 0x4066a
leaq 0x2c0e5(%rip), %rsi     # 0x41f2e
movl $0x79, %edx
leaq 0x2cbf3(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x40(%rbp), %rax
cmpq 0x10(%rbp), %rax
jb 0x15f1d
movq 0x34151(%rip), %rdi     # 0x49fc0
leaq 0x293d1(%rip), %rsi     # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x293cc(%rip), %rsi     # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq 0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2b70c(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x340c5(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x340f9(%rip), %rdi     # 0x49fc0
leaq 0x2c060(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2a8ad(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x7a, %esi
callq 0x5750
movq %rax, %rdi
movq 0x34087(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2a765(%rip), %rdi     # 0x4066a
leaq 0x2c022(%rip), %rsi     # 0x41f2e
movl $0x7a, %edx
leaq 0x2cb30(%rip), %rcx     # 0x42a48
callq 0x51e0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x40(%rbp), %rcx
callq 0x15610
jmp 0x15b22
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)