// File: /workspace/github_cpp_makefile_star2_O1/mshabbirhasan[P]ups-indel/include/seqan/system/file_sync.h
// Function: seqan::File<seqan::Sync<void>>::open(char const*, int)
virtual bool open(char const *fileName, int openMode = DefaultOpenMode<File>::VALUE) {
            handle = ::open(fileName, _getOFlag(openMode), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
			if (handle == -1 && errno == EINVAL) {	// fall back to cached access
	            #ifdef SEQAN_DEBUG_OR_TEST_
					if (!(openMode & OPEN_QUIET))
						::std::cerr << "Warning: Direct access openening failed: " << fileName << "." << ::std::endl;
				#endif			
          	    handle = ::open(fileName, _getOFlag(openMode & ~OPEN_ASYNC), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
			}
			
			if (handle == -1) {
				if (!(openMode & OPEN_QUIET))
					::std::cerr << "Open failed on file " << fileName << ". (" << ::strerror(errno) << ")" << ::std::endl;
				return false;
			}

			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, %r14d
movq %rsi, %rbx
movq %rdi, %r15
movl %edx, %r12d
andl $0x3, %r12d
xorl %esi, %esi
cmpl $0x2, %r12d
jb 0xa5fb
xorl %esi, %esi
cmpl $0x3, %r12d
jne 0xa5ee
testb $0x8, %r14b
sete %sil
shll $0x9, %esi
orl $0x2, %esi
jmp 0xa5fb
testb $0x8, %r14b
sete %sil
shll $0x9, %esi
incl %esi
movl %r14d, %r13d
shll $0x4, %r13d
andl $0x40, %r13d
orl %r13d, %esi
movq %rbx, %rdi
movl $0x1b6, %edx            # imm = 0x1B6
xorl %eax, %eax
callq 0x3250
movl %eax, 0x8(%r15)
cmpl $-0x1, %eax
jne 0xa66e
callq 0x3050
cmpl $0x16, (%rax)
jne 0xa66e
xorl %esi, %esi
cmpl $0x2, %r12d
jb 0xa658
xorl %esi, %esi
cmpl $0x3, %r12d
jne 0xa64b
testb $0x8, %r14b
sete %sil
shll $0x9, %esi
orl $0x2, %esi
jmp 0xa658
testb $0x8, %r14b
sete %sil
shll $0x9, %esi
incl %esi
orl %r13d, %esi
movq %rbx, %rdi
movl $0x1b6, %edx            # imm = 0x1B6
xorl %eax, %eax
callq 0x3250
movl %eax, 0x8(%r15)
movl 0x8(%r15), %r15d
movl %r15d, %eax
notl %eax
andl $0x80, %r14d
orl %eax, %r14d
jne 0xa778
movq 0xb962(%rip), %r14      # 0x15ff0
leaq 0x6d4e(%rip), %rsi      # 0x113e3
movl $0x14, %edx
movq %r14, %rdi
callq 0x33a0
testq %rbx, %rbx
je 0xa6c3
movq %rbx, %rdi
callq 0x3170
movq 0xb93a(%rip), %rdi      # 0x15ff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x33a0
jmp 0xa6db
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3560
movq 0xb90e(%rip), %rbx      # 0x15ff0
leaq 0x6d0f(%rip), %rsi      # 0x113f8
movl $0x3, %edx
movq %rbx, %rdi
callq 0x33a0
callq 0x3050
movl (%rax), %edi
callq 0x3130
testq %rax, %rax
je 0xa726
movq %rax, %r14
movq %rax, %rdi
callq 0x3170
movq 0xb8d7(%rip), %rdi      # 0x15ff0
movq %r14, %rsi
movq %rax, %rdx
callq 0x33a0
jmp 0xa73d
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x3560
leaq 0x6e00(%rip), %rsi      # 0x11544
movl $0x1, %edx
movq %rbx, %rdi
callq 0x33a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3310
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3220
cmpl $-0x1, %r15d
setne %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq