// File: /workspace/github_cpp_makefile_star2_O2/mshabbirhasan[P]ups-indel/include/seqan/system/file_async.h
// Function: seqan::File<seqan::Async<void>>::open(char const*, int)
bool open(char const *fileName, int openMode = DefaultOpenMode<File>::VALUE) {
            handle = ::open(fileName, Base::_getOFlag(openMode & ~OPEN_ASYNC), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
			if (handle == -1) 
			{
				handleAsync = handle;
				if (!(openMode & OPEN_QUIET))
					std::cerr << "Open failed on file " << fileName << ": \"" << ::strerror(errno) << '"' << std::endl;
				return false;
			}

			if (Base::_getOFlag(openMode | OPEN_ASYNC) & O_DIRECT) 
			{
				handleAsync = ::open(fileName, Base::_getOFlag(openMode | (OPEN_ASYNC & ~OPEN_CREATE)), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
				if (handleAsync == -1 || errno == EINVAL) {	// fall back to cached access
					#if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
						if (!(openMode & OPEN_QUIET))
							std::cerr << "Warning: Direct access openening failed. \"" << ::strerror(errno) << '"' << std::endl;
					#endif
					handleAsync = handle;
				}
				#if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
				    else
						if (!(openMode & OPEN_QUIET))
							std::cerr << "Direct access successfully initiated" << std::endl;
				#endif
			} else
				handleAsync = handle;

			if (sizeof(FilePtr) < 8 && !(openMode & OPEN_QUIET))
				// To remove this warning, you have to options:
				// 1. include the following line before including anything in your application
				//    #define _FILE_OFFSET_BITS 64
				// 2. include <seqan/platform.h> or <seqan/sequence.h> before any other include
				std::cerr << "WARNING: FilePtr is not 64bit wide" << std::endl;


			SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
            return true;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, %r15d
movq %rsi, %r12
movq %rdi, %r14
movl %edx, %esi
andl $-0x11, %esi
callq 0x8056
movq %r12, %rdi
movl %eax, %esi
movl $0x1b6, %edx            # imm = 0x1B6
xorl %eax, %eax
callq 0x3250
movl %eax, %ebx
movl %eax, 0x8(%r14)
cmpl $-0x1, %eax
je 0x7f79
movl %r15d, %r13d
orl $0x10, %r13d
movq %r14, %rdi
movl %r13d, %esi
callq 0x8056
btl $0xe, %eax
jae 0x7f6f
movq %r14, %rdi
movl %r13d, %esi
callq 0x8056
movq %r12, %rdi
movl %eax, %esi
movl $0x1b6, %edx            # imm = 0x1B6
xorl %eax, %eax
callq 0x3250
movl %eax, 0xc(%r14)
cmpl $-0x1, %eax
je 0x7f2a
callq 0x3060
cmpl $0x16, (%rax)
jne 0x7fd7
testb %r15b, %r15b
js 0x7f6f
movq 0xc0ba(%rip), %rdi      # 0x13ff0
leaq 0x54a7(%rip), %rsi      # 0xd3e4
callq 0x3310
movq %rax, %r15
callq 0x3060
movl (%rax), %edi
callq 0x3130
movq %r15, %rdi
movq %rax, %rsi
callq 0x3310
pushq $0x22
popq %rsi
movq %rax, %rdi
callq 0x3390
movq %rax, %rdi
callq 0x31a0
movl 0x8(%r14), %eax
movl %eax, 0xc(%r14)
jmp 0x7ff7
orl $-0x1, 0xc(%r14)
testb %r15b, %r15b
js 0x7ff7
movq 0xc066(%rip), %rdi      # 0x13ff0
leaq 0x5436(%rip), %rsi      # 0xd3c7
callq 0x3310
movq %rax, %rdi
movq %r12, %rsi
callq 0x3310
leaq 0x5438(%rip), %rsi      # 0xd3e0
movq %rax, %rdi
callq 0x3310
movq %rax, %r14
callq 0x3060
movl (%rax), %edi
callq 0x3130
movq %r14, %rdi
movq %rax, %rsi
callq 0x3310
pushq $0x22
popq %rsi
movq %rax, %rdi
callq 0x3390
jmp 0x7fef
testb %r15b, %r15b
js 0x7ff7
movq 0xc00d(%rip), %rdi      # 0x13ff0
leaq 0x5425(%rip), %rsi      # 0xd40f
callq 0x3310
movq %rax, %rdi
callq 0x31a0
cmpl $-0x1, %ebx
setne %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq