// File: /workspace/github_cpp_makefile_star2_O3/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 %r12
pushq %rbx
subq $0x10, %rsp
movl %edx, %r15d
movq %rsi, %r14
movq %rdi, %r12
movl %edx, %ecx
andl $0x3, %ecx
xorl %eax, %eax
cmpl $0x2, %ecx
jb 0xa33a
xorl %eax, %eax
cmpl $0x3, %ecx
jne 0xa32e
testb $0x8, %r15b
sete %al
shll $0x9, %eax
orl $0x2, %eax
jmp 0xa33a
testb $0x8, %r15b
sete %al
shll $0x9, %eax
incl %eax
movl %r15d, %esi
shll $0x4, %esi
andl $0x40, %esi
orl %eax, %esi
movq %r14, %rdi
movl $0x1b6, %edx            # imm = 0x1B6
xorl %eax, %eax
callq 0x3250
movl %eax, %ebx
movl %eax, 0x8(%r12)
cmpl $-0x1, %eax
je 0xa36a
movl %ebx, 0xc(%r12)
jmp 0xa475
movl $0xffffffff, 0xc(%r12)  # imm = 0xFFFFFFFF
testb %r15b, %r15b
js 0xa475
movq 0xbc6d(%rip), %r15      # 0x15ff0
leaq 0x7059(%rip), %rsi      # 0x113e3
movl $0x14, %edx
movq %r15, %rdi
callq 0x33a0
testq %r14, %r14
je 0xa3b8
movq %r14, %rdi
callq 0x3170
movq 0xbc45(%rip), %rdi      # 0x15ff0
movq %r14, %rsi
movq %rax, %rdx
callq 0x33a0
jmp 0xa3d0
movq (%r15), %rax
movq -0x18(%rax), %rax
leaq (%r15,%rax), %rdi
movl 0x20(%r15,%rax), %esi
orl $0x1, %esi
callq 0x3560
movq 0xbc19(%rip), %r14      # 0x15ff0
leaq 0x701e(%rip), %rsi      # 0x113fc
movl $0x3, %edx
movq %r14, %rdi
callq 0x33a0
callq 0x3050
movl (%rax), %edi
callq 0x3130
testq %rax, %rax
je 0xa41b
movq %rax, %r15
movq %rax, %rdi
callq 0x3170
movq 0xbbe2(%rip), %rdi      # 0x15ff0
movq %r15, %rsi
movq %rax, %rdx
callq 0x33a0
jmp 0xa433
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3560
leaq -0x21(%rbp), %rsi
movb $0x22, (%rsi)
movq 0xbbaf(%rip), %rdi      # 0x15ff0
movl $0x1, %edx
callq 0x33a0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3310
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3220
cmpl $-0x1, %ebx
setne %al
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq