// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::UnitTestOptions::GetAbsolutePathToOutputFile[abi:cxx11]()
std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
  if (gtest_output_flag == NULL)
    return "";

  const char* const colon = strchr(gtest_output_flag, ':');
  if (colon == NULL)
    return internal::FilePath::ConcatPaths(
        internal::FilePath(
            UnitTest::GetInstance()->original_working_dir()),
        internal::FilePath(kDefaultOutputFile)).string();

  internal::FilePath output_name(colon + 1);
  if (!output_name.IsAbsolutePath())
    // TODO(wan@google.com): on Windows \some\path is not an absolute
    // path (as its meaning depends on the current drive), yet the
    // following logic for turning it into an absolute path is wrong.
    // Fix it.
    output_name = internal::FilePath::ConcatPaths(
        internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
        internal::FilePath(colon + 1));

  if (!output_name.IsDirectory())
    return output_name.string();

  internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
      output_name, internal::GetCurrentExecutableName(),
      GetOutputFormat().c_str()));
  return result.string();
}

// Assembly:
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rdi, 0x80(%rsp)
movq %rdi, %rax
movq %rax, 0x88(%rsp)
movq %rdi, 0x2c0(%rsp)
leaq 0x4eb9f(%rip), %rdi     # 0x65be8
callq 0xe370
movq %rax, 0x2b8(%rsp)
cmpq $0x0, 0x2b8(%rsp)
jne 0x170c6
leaq 0x2b7(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xf420
movq 0x80(%rsp), %rdi
movq 0x78(%rsp), %rdx
leaq 0x360ef(%rip), %rsi     # 0x4d176
callq 0x32980
jmp 0x1708e
leaq 0x2b7(%rsp), %rdi
callq 0xeb40
jmp 0x177b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
leaq 0x2b7(%rsp), %rdi
callq 0xeb40
jmp 0x177c7
movq 0x2b8(%rsp), %rdi
movl $0x3a, %esi
callq 0xe340
movq %rax, 0x298(%rsp)
cmpq $0x0, 0x298(%rsp)
jne 0x17316
callq 0x16600
movq %rax, %rdi
callq 0x17940
movq %rax, 0x68(%rsp)
leaq 0x237(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0xf420
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0x238(%rsp), %rdi
callq 0x32980
jmp 0x1712c
leaq 0x258(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x32bc0
jmp 0x17143
leaq 0x1ef(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xf420
movq 0x60(%rsp), %rdx
leaq 0x3481f(%rip), %rsi     # 0x4b980
leaq 0x1f0(%rsp), %rdi
callq 0x32980
jmp 0x17170
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0x32bc0
jmp 0x17187
leaq 0x278(%rsp), %rdi
leaq 0x258(%rsp), %rsi
leaq 0x210(%rsp), %rdx
callq 0x177e0
jmp 0x171a6
leaq 0x278(%rsp), %rdi
callq 0x32c30
movq %rax, 0x58(%rsp)
jmp 0x171ba
movq 0x58(%rsp), %rsi
movq 0x80(%rsp), %rdi
callq 0xe3a0
jmp 0x171ce
leaq 0x278(%rsp), %rdi
callq 0x32c20
leaq 0x210(%rsp), %rdi
callq 0x32c20
leaq 0x1f0(%rsp), %rdi
callq 0xf698
leaq 0x1ef(%rsp), %rdi
callq 0xeb40
leaq 0x258(%rsp), %rdi
callq 0x32c20
leaq 0x238(%rsp), %rdi
callq 0xf698
leaq 0x237(%rsp), %rdi
callq 0xeb40
jmp 0x177b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x17304
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x172f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x172dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x172d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x172c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
leaq 0x278(%rsp), %rdi
callq 0x32c20
leaq 0x210(%rsp), %rdi
callq 0x32c20
leaq 0x1f0(%rsp), %rdi
callq 0xf698
leaq 0x1ef(%rsp), %rdi
callq 0xeb40
leaq 0x258(%rsp), %rdi
callq 0x32c20
leaq 0x238(%rsp), %rdi
callq 0xf698
leaq 0x237(%rsp), %rdi
callq 0xeb40
jmp 0x177c7
movq 0x298(%rsp), %rax
incq %rax
movq %rax, 0x48(%rsp)
leaq 0x1a7(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xf420
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0x1a8(%rsp), %rdi
callq 0x32980
jmp 0x17351
leaq 0x1c8(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x32bc0
jmp 0x17368
leaq 0x1a8(%rsp), %rdi
callq 0xf698
leaq 0x1a7(%rsp), %rdi
callq 0xeb40
leaq 0x1c8(%rsp), %rdi
callq 0x17960
movb %al, 0x47(%rsp)
jmp 0x17395
movb 0x47(%rsp), %al
testb $0x1, %al
jne 0x17634
jmp 0x173a3
callq 0x16600
movq %rax, 0x38(%rsp)
jmp 0x173af
movq 0x38(%rsp), %rdi
callq 0x17940
movq %rax, 0x30(%rsp)
jmp 0x173c0
leaq 0x13f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xf420
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0x140(%rsp), %rdi
callq 0x32980
jmp 0x173eb
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x32bc0
jmp 0x17402
movq 0x298(%rsp), %rax
incq %rax
movq %rax, 0x18(%rsp)
leaq 0xf7(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xf420
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0xf8(%rsp), %rdi
callq 0x32980
jmp 0x1743d
leaq 0x118(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x32bc0
jmp 0x17454
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x118(%rsp), %rdx
callq 0x177e0
jmp 0x17473
leaq 0x1c8(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x32c40
jmp 0x1748a
leaq 0x180(%rsp), %rdi
callq 0x32c20
leaq 0x118(%rsp), %rdi
callq 0x32c20
leaq 0xf8(%rsp), %rdi
callq 0xf698
leaq 0xf7(%rsp), %rdi
callq 0xeb40
leaq 0x160(%rsp), %rdi
callq 0x32c20
leaq 0x140(%rsp), %rdi
callq 0xf698
leaq 0x13f(%rsp), %rdi
callq 0xeb40
jmp 0x17634
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x17521
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0xf698
leaq 0x1a7(%rsp), %rdi
callq 0xeb40
jmp 0x177c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x177a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x17622
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x17615
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x175fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x175ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x175e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
leaq 0x180(%rsp), %rdi
callq 0x32c20
leaq 0x118(%rsp), %rdi
callq 0x32c20
leaq 0xf8(%rsp), %rdi
callq 0xf698
leaq 0xf7(%rsp), %rdi
callq 0xeb40
leaq 0x160(%rsp), %rdi
callq 0x32c20
leaq 0x140(%rsp), %rdi
callq 0xf698
leaq 0x13f(%rsp), %rdi
callq 0xeb40
jmp 0x177a8
leaq 0x1c8(%rsp), %rdi
callq 0x17990
movb %al, 0x17(%rsp)
jmp 0x17647
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x17689
jmp 0x17651
leaq 0x1c8(%rsp), %rdi
callq 0x32c30
movq %rax, 0x8(%rsp)
jmp 0x17665
movq 0x8(%rsp), %rsi
movq 0x80(%rsp), %rdi
callq 0xe3a0
jmp 0x17679
movl $0x1, 0xf0(%rsp)
jmp 0x17799
leaq 0xb0(%rsp), %rdi
callq 0x16c90
jmp 0x17698
leaq 0x90(%rsp), %rdi
callq 0x16e70
jmp 0x176a7
leaq 0x90(%rsp), %rdi
callq 0xe370
movq %rax, %rcx
leaq 0xd0(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x17a00
jmp 0x176d6
leaq 0x90(%rsp), %rdi
callq 0xf698
leaq 0xb0(%rsp), %rdi
callq 0x32c20
leaq 0xd0(%rsp), %rdi
callq 0x32c30
movq %rax, (%rsp)
jmp 0x17703
movq (%rsp), %rsi
movq 0x80(%rsp), %rdi
callq 0xe3a0
jmp 0x17716
movl $0x1, 0xf0(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x32c20
jmp 0x17799
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
jmp 0x17767
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
leaq 0x90(%rsp), %rdi
callq 0xf698
leaq 0xb0(%rsp), %rdi
callq 0x32c20
jmp 0x177a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2a8(%rsp)
movl %eax, 0x2a4(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x32c20
jmp 0x177a8
leaq 0x1c8(%rsp), %rdi
callq 0x32c20
jmp 0x177b7
leaq 0x1c8(%rsp), %rdi
callq 0x32c20
jmp 0x177c7
movq 0x88(%rsp), %rax
addq $0x2c8, %rsp            # imm = 0x2C8
retq
movq 0x2a8(%rsp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)