// File: BenLangmead[P]bowtie/./ebwt.h
// Function: Ebwt::~Ebwt()
~Ebwt() {
		// Only free buffers if we're *not* using memory-mapped files
		if(!_useMm) {
			// Delete everything that was allocated in read(false, ...)
			if(_fchr    != NULL) delete[] _fchr;
			if(_ftab    != NULL) delete[] _ftab;
			if(_eftab   != NULL) delete[] _eftab;
			if(_offs != NULL && !useShmem_)
				delete[] _offs;
			else if(_offs != NULL && useShmem_)
				FREE_SHARED(_offs);
			if(_isa     != NULL) delete[] _isa;
			if(_plen    != NULL) delete[] _plen;
			if(_rstarts != NULL) delete[] _rstarts;
			if(_ebwt != NULL && !useShmem_)
				delete[] _ebwt;
			else if(_ebwt != NULL && useShmem_)
				FREE_SHARED(_ebwt);
		}
		if (_in1 != NULL) fclose(_in1);
		if (_in2 != NULL) fclose(_in2);
#ifdef EBWT_STATS
		cout << (_fw ? "Forward index:" : "Mirror index:") << endl;
		cout << "  mapLFEx:   " << mapLFExs_ << endl;
		cout << "  mapLF:     " << mapLFs_   << endl;
		cout << "  mapLF(c):  " << mapLFcs_  << endl;
		cout << "  mapLF1(c): " << mapLF1cs_ << endl;
		cout << "  mapLF(c):  " << mapLF1s_  << endl;
#endif
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
testb $0x1, 0xd0(%rax)
jne 0x23027
movq -0x10(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
je 0x22e6f
movq -0x10(%rbp), %rax
movq 0xa0(%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
je 0x22e6d
movq -0x18(%rbp), %rdi
callq 0x5510
jmp 0x22e6f
movq -0x10(%rbp), %rax
cmpq $0x0, 0xa8(%rax)
je 0x22e9d
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x22e9b
movq -0x20(%rbp), %rdi
callq 0x5510
jmp 0x22e9d
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb0(%rax)
je 0x22ecb
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0x22ec9
movq -0x28(%rbp), %rdi
callq 0x5510
jmp 0x22ecb
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb8(%rax)
je 0x22f06
movq -0x10(%rbp), %rax
testb $0x1, 0xd1(%rax)
jne 0x22f06
movq -0x10(%rbp), %rax
movq 0xb8(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x22f04
movq -0x30(%rbp), %rdi
callq 0x5510
jmp 0x22f33
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb8(%rax)
je 0x22f31
movq -0x10(%rbp), %rax
testb $0x1, 0xd1(%rax)
je 0x22f31
movq -0x10(%rbp), %rax
movq 0xb8(%rax), %rdi
callq 0x57e0
jmp 0x22f33
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc0(%rax)
je 0x22f61
movq -0x10(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x22f5f
movq -0x38(%rbp), %rdi
callq 0x5510
jmp 0x22f61
movq -0x10(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0x22f8f
movq -0x10(%rbp), %rax
movq 0x90(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
je 0x22f8d
movq -0x40(%rbp), %rdi
callq 0x5510
jmp 0x22f8f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x98(%rax)
je 0x22fbd
movq -0x10(%rbp), %rax
movq 0x98(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
je 0x22fbb
movq -0x48(%rbp), %rdi
callq 0x5510
jmp 0x22fbd
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc8(%rax)
je 0x22ff8
movq -0x10(%rbp), %rax
testb $0x1, 0xd1(%rax)
jne 0x22ff8
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, %rax
je 0x22ff6
movq -0x50(%rbp), %rdi
callq 0x5510
jmp 0x23025
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc8(%rax)
je 0x23023
movq -0x10(%rbp), %rax
testb $0x1, 0xd1(%rax)
je 0x23023
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rdi
callq 0x57e0
jmp 0x23025
jmp 0x23027
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x23043
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x5370
jmp 0x23041
jmp 0x23043
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2305f
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x5370
jmp 0x2305d
jmp 0x2305f
movq -0x10(%rbp), %rdi
addq $0xd8, %rdi
callq 0x22160
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x5888
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
callq 0x5888
addq $0x50, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x18920
nopw (%rax,%rax)