// File: /workspace/github_cpp_makefile_star2_O3/mshabbirhasan[P]ups-indel/include/seqan/system/file_sync.h
// Function: seqan::File<seqan::Sync<void>>::openTemp(int)
bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE) {
            // Construct the pattern for the temporary file.
            //
            // First, try to get the temporary directory from the environment
            // variables TMPDIR, TMP.
            CharString tmpDir;
            if ((getuid() == geteuid()) && (getgid() == getegid())) 
			{
                char * res;
                if ((res = getenv("TMPDIR")) != NULL)
                    tmpDir = res;
                else
                    if ((res = getenv("TMP")) != NULL)
                        tmpDir = res;
            }
            // If this does not work, try to use the constant
            // SEQAN_DEFAULT_TMPDIR, fall back to "/tmp", if this does not
            // work.
#ifdef SEQAN_DEFAULT_TMPDIR
            if (empty(tmpDir))
                tmpDir = SEQAN_DEFAULT_TMPDIR;
#else  // #ifdef SEQAN_DEFAULT_TMPDIR
            if (empty(tmpDir))
                tmpDir = "/tmp";
#endif  // #ifdef SEQAN_DEFAULT_TMPDIR

            // At this point, we have a temporary directory.  Now, we add the
            // file name template to get the full path template.
            append(tmpDir, "/SQNXXXXXX");
            // Open temporary file and unlink it immediately afterwards so the
            // memory is released when the program exits.
            int oldMode = umask(077);  // Create with restrictive permissions.
			if ((handle = ::mkstemp(toCString(tmpDir))) == -1) {
			    umask(oldMode);  // Reset umask mode.
				if (!(openMode & OPEN_QUIET))
					::std::cerr << "Couldn't create temporary file " << tmpDir << ". (" << ::strerror(errno) << ")" << ::std::endl;
				return false;
			}
			if (!(close() && open(toCString(tmpDir), openMode))) 
			{
				umask(oldMode);  // Reset umask mode.
			    return false;
            }
			umask(oldMode);  // Reset umask mode.
            #ifdef SEQAN_DEBUG
				if (::unlink(toCString(tmpDir)) == -1 && !(openMode & OPEN_QUIET))
					::std::cerr << "Couldn't unlink temporary file " << tmpDir << ". (" << ::strerror(errno) << ")" << ::std::endl;
            #else
				::unlink(toCString(tmpDir));
			#endif
			return true;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %esi, %ebx
movq %rdi, %r14
leaq -0x40(%rbp), %rdi
callq 0x8e1e
callq 0x3190
movl %eax, %r15d
callq 0x3200
cmpl %eax, %r15d
jne 0xa745
callq 0x3380
movl %eax, %r15d
callq 0x3030
cmpl %eax, %r15d
jne 0xa745
leaq 0x6e42(%rip), %rdi      # 0x114d8
callq 0x33f0
movq %rax, -0x50(%rbp)
testq %rax, %rax
je 0xa6e7
leaq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xaade
leaq -0x38(%rbp), %r8
leaq 0x6c46(%rip), %rax      # 0x11302
movq %rax, (%rsp)
leaq 0x6c01(%rip), %rdi      # 0x112c8
leaq 0x6c20(%rip), %rcx      # 0x112ee
leaq 0x6c24(%rip), %r9       # 0x112f9
leaq -0x40(%rbp), %rdx
movl $0xae, %esi
xorl %eax, %eax
callq 0x90eb
jmp 0xa73d
leaq 0x6df1(%rip), %rdi      # 0x114df
callq 0x33f0
movq %rax, -0x50(%rbp)
testq %rax, %rax
je 0xa745
leaq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xaade
leaq -0x38(%rbp), %r8
leaq 0x6bee(%rip), %rax      # 0x11302
movq %rax, (%rsp)
leaq 0x6ba9(%rip), %rdi      # 0x112c8
leaq 0x6bc8(%rip), %rcx      # 0x112ee
leaq 0x6bcc(%rip), %r9       # 0x112f9
leaq -0x40(%rbp), %rdx
movl $0xae, %esi
xorl %eax, %eax
callq 0x90eb
testb %al, %al
je 0xaac0
movq -0x38(%rbp), %rax
cmpq -0x40(%rbp), %rax
jne 0xa7a2
leaq 0x6d8d(%rip), %rax      # 0x114e3
leaq -0x50(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x40(%rbp), %rdi
callq 0xb012
leaq -0x38(%rbp), %r8
leaq 0x6b91(%rip), %rax      # 0x11302
movq %rax, (%rsp)
leaq 0x6b4c(%rip), %rdi      # 0x112c8
leaq 0x6b6b(%rip), %rcx      # 0x112ee
leaq 0x6b6f(%rip), %r9       # 0x112f9
leaq -0x40(%rbp), %rdx
movl $0xae, %esi
xorl %eax, %eax
callq 0x90eb
testb %al, %al
je 0xaac0
leaq 0x6d3f(%rip), %rax      # 0x114e8
leaq -0x50(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x40(%rbp), %rdi
callq 0xb2be
movl %ebx, -0x54(%rbp)
movl $0x3f, %edi
callq 0x35d0
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %r12
movq -0x38(%rbp), %rbx
movq %rbx, %r13
subq %r12, %r13
movq -0x30(%rbp), %rcx
cmpq %rcx, %r13
jb 0xa842
leaq 0x1(%r13), %rax
cmpq %rax, %rcx
jae 0xa842
movq %rax, %rcx
shrq %rcx
addq %rax, %rcx
cmpq $0x20, %rax
movl $0x20, %r15d
cmovaeq %rcx, %r15
leaq 0x1(%r15), %rdi
callq 0x3340
movq %rax, -0x40(%rbp)
movq %r15, -0x30(%rbp)
testq %r12, %r12
je 0xa835
cmpq %r12, %rbx
je 0xa829
movq %rax, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3530
movq %r12, %rdi
callq 0x32f0
movq -0x40(%rbp), %rax
addq %rax, %r13
movq %r13, -0x38(%rbp)
movq %rax, %r12
movq %r13, %rbx
testq %rbx, %rbx
je 0xa84e
movb $0x0, (%rbx)
movq -0x40(%rbp), %r12
movq %r12, %rdi
callq 0x3100
movl %eax, 0x8(%r14)
cmpl $-0x1, %eax
je 0xa9bb
movq (%r14), %rax
movq %r14, %rdi
callq *0x18(%rax)
testb %al, %al
je 0xa9ae
movq -0x40(%rbp), %r12
movq -0x38(%rbp), %rbx
movq %rbx, %r13
subq %r12, %r13
movq -0x30(%rbp), %rcx
cmpq %rcx, %r13
jb 0xa8ed
leaq 0x1(%r13), %rax
cmpq %rax, %rcx
jae 0xa8ed
movq %rax, %rcx
shrq %rcx
addq %rax, %rcx
cmpq $0x20, %rax
movl $0x20, %r15d
cmovaeq %rcx, %r15
leaq 0x1(%r15), %rdi
callq 0x3340
movq %rax, -0x40(%rbp)
movq %r15, -0x30(%rbp)
testq %r12, %r12
je 0xa8e0
cmpq %r12, %rbx
je 0xa8d4
movq %rax, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3530
movq %r12, %rdi
callq 0x32f0
movq -0x40(%rbp), %rax
addq %rax, %r13
movq %r13, -0x38(%rbp)
movq %rax, %r12
movq %r13, %rbx
testq %rbx, %rbx
je 0xa8f9
movb $0x0, (%rbx)
movq -0x40(%rbp), %r12
movq (%r14), %rax
movq %r14, %rdi
movq %r12, %rsi
movl -0x54(%rbp), %edx
callq *0x10(%rax)
testb %al, %al
je 0xa9ae
movl -0x44(%rbp), %edi
callq 0x35d0
movq -0x40(%rbp), %rbx
movq -0x38(%rbp), %r15
movq %r15, %r14
subq %rbx, %r14
movq -0x30(%rbp), %rcx
cmpq %rcx, %r14
jb 0xa992
leaq 0x1(%r14), %rax
cmpq %rax, %rcx
jae 0xa992
movq %rax, %rcx
shrq %rcx
addq %rax, %rcx
cmpq $0x20, %rax
movl $0x20, %r12d
cmovaeq %rcx, %r12
leaq 0x1(%r12), %rdi
callq 0x3340
movq %rax, -0x40(%rbp)
movq %r12, -0x30(%rbp)
testq %rbx, %rbx
je 0xa985
cmpq %rbx, %r15
je 0xa979
movq %rax, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x3530
movq %rbx, %rdi
callq 0x32f0
movq -0x40(%rbp), %rax
addq %rax, %r14
movq %r14, -0x38(%rbp)
movq %rax, %rbx
movq %r14, %r15
testq %r15, %r15
je 0xa99f
movb $0x0, (%r15)
movq -0x40(%rbp), %rbx
movq %rbx, %rdi
callq 0x3180
movb $0x1, %bl
jmp 0xaaa6
movl -0x44(%rbp), %edi
callq 0x35d0
jmp 0xaaa4
movl -0x44(%rbp), %edi
callq 0x35d0
cmpb $0x0, -0x54(%rbp)
js 0xaaa4
movq 0xb61c(%rip), %rdi      # 0x15ff0
leaq 0x6b18(%rip), %rsi      # 0x114f3
movl $0x1f, %edx
callq 0x33a0
movq 0xb604(%rip), %rdi      # 0x15ff0
leaq 0x6855(%rip), %rdx      # 0x11248
leaq -0x40(%rbp), %rsi
callq 0xb597
movq 0xb5ed(%rip), %rbx      # 0x15ff0
leaq 0x69ee(%rip), %rsi      # 0x113f8
movl $0x3, %edx
movq %rbx, %rdi
callq 0x33a0
callq 0x3050
movl (%rax), %edi
callq 0x3130
testq %rax, %rax
je 0xaa47
movq %rax, %r14
movq %rax, %rdi
callq 0x3170
movq 0xb5b6(%rip), %rdi      # 0x15ff0
movq %r14, %rsi
movq %rax, %rdx
callq 0x33a0
jmp 0xaa5e
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x3560
movq 0xb58b(%rip), %rbx      # 0x15ff0
leaq 0x6ad8(%rip), %rsi      # 0x11544
movl $0x1, %edx
movq %rbx, %rdi
callq 0x33a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3310
movsbl %al, %esi
movq 0xb559(%rip), %rdi      # 0x15ff0
callq 0x3040
movq %rax, %rdi
callq 0x3220
xorl %ebx, %ebx
movq -0x40(%rbp), %rdi
callq 0x32f0
movl %ebx, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x31e0
jmp 0xaac9
jmp 0xaac9
movq %rax, %rbx
movq -0x40(%rbp), %rdi
callq 0x32f0
movq %rbx, %rdi
callq 0x35b0
nop