// File: ambersun1234[P]AVL_Tree/./googletest/googletest/src/gtest.cc
// Function: testing::internal::UnitTestOptions::GetAbsolutePathToOutputFile[abi:cxx11]()
std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();

  std::string format = GetOutputFormat();
  if (format.empty())
    format = std::string(kDefaultOutputFormat);

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

  internal::FilePath output_name(colon + 1);
  if (!output_name.IsAbsolutePath())
    // FIXME: 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:
pushq %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x288(%rbp)
movq %rdi, %rax
movq %rax, -0x280(%rbp)
movq %rdi, -0x8(%rbp)
leaq 0x65dd1(%rip), %rdi     # 0x7c948
callq 0x9230
movq %rax, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x16a20
leaq -0x30(%rbp), %rdi
callq 0x9bc0
testb $0x1, %al
jne 0x16b98
jmp 0x16bfc
leaq -0x51(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x9c50
movq -0x290(%rbp), %rdx
leaq 0x4057d(%rip), %rsi     # 0x57133
leaq -0x50(%rbp), %rdi
callq 0xf1d0
jmp 0x16bc1
leaq -0x30(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x9860
leaq -0x50(%rbp), %rdi
callq 0x9db8
leaq -0x51(%rbp), %rdi
callq 0x96d0
jmp 0x16bfc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x51(%rbp), %rdi
callq 0x96d0
jmp 0x1727e
movq -0x10(%rbp), %rdi
movl $0x3a, %esi
callq 0x9200
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
jne 0x16e3a
callq 0x16240
movq %rax, -0x298(%rbp)
jmp 0x16c27
movq -0x298(%rbp), %rdi
callq 0x17570
movq %rax, -0x2a0(%rbp)
jmp 0x16c3c
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x9c50
movq -0x2a0(%rbp), %rsi
movq -0x2a8(%rbp), %rdx
leaq -0xd0(%rbp), %rdi
callq 0xf1d0
jmp 0x16c6b
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x37ad0
jmp 0x16c80
leaq -0x119(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x9c50
movq -0x2b0(%rbp), %rdx
leaq 0x40496(%rip), %rsi     # 0x57137
leaq -0x118(%rbp), %rdi
callq 0xf1d0
jmp 0x16caf
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x37ad0
jmp 0x16cc4
leaq -0x30(%rbp), %rdi
callq 0x9230
movq %rax, %r8
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x17290
jmp 0x16cee
leaq -0x90(%rbp), %rdi
callq 0x37b40
movq %rax, -0x2b8(%rbp)
jmp 0x16d03
movq -0x2b8(%rbp), %rsi
movq -0x288(%rbp), %rdi
callq 0x9250
jmp 0x16d18
leaq -0x90(%rbp), %rdi
callq 0x37b20
leaq -0xf8(%rbp), %rdi
callq 0x37b20
leaq -0x118(%rbp), %rdi
callq 0x9db8
leaq -0x119(%rbp), %rdi
callq 0x96d0
leaq -0xb0(%rbp), %rdi
callq 0x37b20
leaq -0xd0(%rbp), %rdi
callq 0x9db8
leaq -0xd1(%rbp), %rdi
callq 0x96d0
movl $0x1, -0x120(%rbp)
jmp 0x17265
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1727e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x16e29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x16e1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x16e05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x16df9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x16ded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x37b20
leaq -0xf8(%rbp), %rdi
callq 0x37b20
leaq -0x118(%rbp), %rdi
callq 0x9db8
leaq -0x119(%rbp), %rdi
callq 0x96d0
leaq -0xb0(%rbp), %rdi
callq 0x37b20
leaq -0xd0(%rbp), %rdi
callq 0x9db8
leaq -0xd1(%rbp), %rdi
callq 0x96d0
jmp 0x1727e
movq -0x70(%rbp), %rax
incq %rax
movq %rax, -0x2c8(%rbp)
leaq -0x161(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x9c50
movq -0x2c8(%rbp), %rsi
movq -0x2c0(%rbp), %rdx
leaq -0x160(%rbp), %rdi
callq 0xf1d0
jmp 0x16e77
leaq -0x140(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x37ad0
jmp 0x16e8c
leaq -0x160(%rbp), %rdi
callq 0x9db8
leaq -0x161(%rbp), %rdi
callq 0x96d0
leaq -0x140(%rbp), %rdi
callq 0x175a0
movb %al, -0x2c9(%rbp)
jmp 0x16eb8
movb -0x2c9(%rbp), %al
testb $0x1, %al
jne 0x17101
jmp 0x16ec8
callq 0x16240
movq %rax, -0x2d8(%rbp)
jmp 0x16ed6
movq -0x2d8(%rbp), %rdi
callq 0x17570
movq %rax, -0x2e0(%rbp)
jmp 0x16eeb
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x9c50
movq -0x2e0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
leaq -0x1c8(%rbp), %rdi
callq 0xf1d0
jmp 0x16f1a
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x37ad0
jmp 0x16f2f
movq -0x70(%rbp), %rax
incq %rax
movq %rax, -0x2f8(%rbp)
leaq -0x211(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x9c50
movq -0x2f8(%rbp), %rsi
movq -0x2f0(%rbp), %rdx
leaq -0x210(%rbp), %rdi
callq 0xf1d0
jmp 0x16f6c
leaq -0x1f0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x37ad0
jmp 0x16f81
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
callq 0x175d0
jmp 0x16f9d
leaq -0x140(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x37b50
jmp 0x16fb2
leaq -0x188(%rbp), %rdi
callq 0x37b20
leaq -0x1f0(%rbp), %rdi
callq 0x37b20
leaq -0x210(%rbp), %rdi
callq 0x9db8
leaq -0x211(%rbp), %rdi
callq 0x96d0
leaq -0x1a8(%rbp), %rdi
callq 0x37b20
leaq -0x1c8(%rbp), %rdi
callq 0x9db8
leaq -0x1c9(%rbp), %rdi
callq 0x96d0
jmp 0x17101
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17031
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x9db8
leaq -0x161(%rbp), %rdi
callq 0x96d0
jmp 0x1727e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17257
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x170f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x170e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x170cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x170c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x170b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x37b20
leaq -0x1f0(%rbp), %rdi
callq 0x37b20
leaq -0x210(%rbp), %rdi
callq 0x9db8
leaq -0x211(%rbp), %rdi
callq 0x96d0
leaq -0x1a8(%rbp), %rdi
callq 0x37b20
leaq -0x1c8(%rbp), %rdi
callq 0x9db8
leaq -0x1c9(%rbp), %rdi
callq 0x96d0
jmp 0x17257
leaq -0x140(%rbp), %rdi
callq 0x17720
movb %al, -0x2f9(%rbp)
jmp 0x17115
movb -0x2f9(%rbp), %al
testb $0x1, %al
jne 0x1715a
jmp 0x17121
leaq -0x140(%rbp), %rdi
callq 0x37b40
movq %rax, -0x308(%rbp)
jmp 0x17136
movq -0x308(%rbp), %rsi
movq -0x288(%rbp), %rdi
callq 0x9250
jmp 0x1714b
movl $0x1, -0x120(%rbp)
jmp 0x17249
leaq -0x258(%rbp), %rdi
callq 0x16830
jmp 0x17168
leaq -0x278(%rbp), %rdi
callq 0x16a20
jmp 0x17176
leaq -0x278(%rbp), %rdi
callq 0x9230
movq %rax, %rcx
leaq -0x238(%rbp), %rdi
leaq -0x140(%rbp), %rsi
leaq -0x258(%rbp), %rdx
callq 0x17780
jmp 0x171a1
leaq -0x278(%rbp), %rdi
callq 0x9db8
leaq -0x258(%rbp), %rdi
callq 0x37b20
leaq -0x238(%rbp), %rdi
callq 0x37b40
movq %rax, -0x310(%rbp)
jmp 0x171ce
movq -0x310(%rbp), %rsi
movq -0x288(%rbp), %rdi
callq 0x9250
jmp 0x171e3
movl $0x1, -0x120(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x37b20
jmp 0x17249
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17221
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x9db8
leaq -0x258(%rbp), %rdi
callq 0x37b20
jmp 0x17257
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x37b20
jmp 0x17257
leaq -0x140(%rbp), %rdi
callq 0x37b20
jmp 0x17265
leaq -0x140(%rbp), %rdi
callq 0x37b20
jmp 0x1727e
leaq -0x30(%rbp), %rdi
callq 0x9db8
movq -0x280(%rbp), %rax
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x9db8
movq -0x60(%rbp), %rdi
callq 0x9c40