// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::UnitTestOptions::GetAbsolutePathToOutputFile[abi:cxx11]()
std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
  std::string s = GTEST_FLAG_GET(output);
  const char* const gtest_output_flag = s.c_str();

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

  const char* const colon = strchr(gtest_output_flag, ':');
  if (colon == nullptr)
    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())
    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 $0x340, %rsp            # imm = 0x340
movq %rdi, -0x2b0(%rbp)
movq %rdi, %rax
movq %rax, -0x2a8(%rbp)
movq %rdi, -0x8(%rbp)
leaq 0x95be9(%rip), %rsi     # 0x117b20
leaq -0x28(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x102f0
movq -0x2a0(%rbp), %rdi
callq 0x102c0
movq %rax, -0x30(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x81db0
jmp 0x81f62
leaq -0x50(%rbp), %rdi
callq 0x10d70
testb $0x1, %al
jne 0x81f71
jmp 0x81fef
leaq -0x81(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
callq 0x10e10
movq -0x2b8(%rbp), %rdx
leaq 0x4a88e(%rip), %rsi     # 0xcc820
leaq -0x80(%rbp), %rdi
callq 0x1d070
jmp 0x81f9d
leaq -0x50(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x109b0
leaq -0x80(%rbp), %rdi
callq 0x10fc8
leaq -0x81(%rbp), %rdi
callq 0x10810
jmp 0x81fef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8268f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x81(%rbp), %rdi
callq 0x10810
jmp 0x82686
movq -0x30(%rbp), %rdi
movl $0x3a, %esi
callq 0x10270
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
jne 0x82233
callq 0x80640
movq %rax, -0x2c0(%rbp)
jmp 0x82020
movq -0x2c0(%rbp), %rdi
callq 0x826b0
movq %rax, -0x2c8(%rbp)
jmp 0x82035
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x10e10
movq -0x2c8(%rbp), %rsi
movq -0x2d0(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
callq 0x1d070
jmp 0x82064
leaq -0xd0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0xa3810
jmp 0x82079
leaq -0x139(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x10e10
movq -0x2d8(%rbp), %rdx
leaq 0x4a78a(%rip), %rsi     # 0xcc824
leaq -0x138(%rbp), %rdi
callq 0x1d070
jmp 0x820a8
leaq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xa3810
jmp 0x820bd
leaq -0x50(%rbp), %rdi
callq 0x102c0
movq %rax, %r8
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
leaq -0x118(%rbp), %rdx
xorl %ecx, %ecx
callq 0x7b740
jmp 0x820e7
leaq -0xb0(%rbp), %rdi
callq 0xa38f0
movq %rax, -0x2e0(%rbp)
jmp 0x820fc
movq -0x2e0(%rbp), %rsi
movq -0x2b0(%rbp), %rdi
callq 0x102f0
jmp 0x82111
leaq -0xb0(%rbp), %rdi
callq 0xa3900
leaq -0x118(%rbp), %rdi
callq 0xa3900
leaq -0x138(%rbp), %rdi
callq 0x10fc8
leaq -0x139(%rbp), %rdi
callq 0x10810
leaq -0xd0(%rbp), %rdi
callq 0xa3900
leaq -0xf0(%rbp), %rdi
callq 0x10fc8
leaq -0xf1(%rbp), %rdi
callq 0x10810
movl $0x1, -0x140(%rbp)
jmp 0x82664
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x82686
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x82222
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x82216
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x821fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x821f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x821e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0xa3900
leaq -0x118(%rbp), %rdi
callq 0xa3900
leaq -0x138(%rbp), %rdi
callq 0x10fc8
leaq -0x139(%rbp), %rdi
callq 0x10810
leaq -0xd0(%rbp), %rdi
callq 0xa3900
leaq -0xf0(%rbp), %rdi
callq 0x10fc8
leaq -0xf1(%rbp), %rdi
callq 0x10810
jmp 0x82686
movq -0x90(%rbp), %rax
incq %rax
movq %rax, -0x2f0(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x10e10
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
leaq -0x180(%rbp), %rdi
callq 0x1d070
jmp 0x82273
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xa3810
jmp 0x82288
leaq -0x180(%rbp), %rdi
callq 0x10fc8
leaq -0x181(%rbp), %rdi
callq 0x10810
leaq -0x160(%rbp), %rdi
callq 0x7bd90
movb %al, -0x2f1(%rbp)
jmp 0x822b4
movb -0x2f1(%rbp), %al
testb $0x1, %al
jne 0x82500
jmp 0x822c4
callq 0x80640
movq %rax, -0x300(%rbp)
jmp 0x822d2
movq -0x300(%rbp), %rdi
callq 0x826b0
movq %rax, -0x308(%rbp)
jmp 0x822e7
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x10e10
movq -0x308(%rbp), %rsi
movq -0x310(%rbp), %rdx
leaq -0x1e8(%rbp), %rdi
callq 0x1d070
jmp 0x82316
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0xa3810
jmp 0x8232b
movq -0x90(%rbp), %rax
incq %rax
movq %rax, -0x320(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x10e10
movq -0x320(%rbp), %rsi
movq -0x318(%rbp), %rdx
leaq -0x230(%rbp), %rdi
callq 0x1d070
jmp 0x8236b
leaq -0x210(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xa3810
jmp 0x82380
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
leaq -0x210(%rbp), %rdx
callq 0x7ba20
jmp 0x8239c
leaq -0x160(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xa51f0
jmp 0x823b1
leaq -0x1a8(%rbp), %rdi
callq 0xa3900
leaq -0x210(%rbp), %rdi
callq 0xa3900
leaq -0x230(%rbp), %rdi
callq 0x10fc8
leaq -0x231(%rbp), %rdi
callq 0x10810
leaq -0x1c8(%rbp), %rdi
callq 0xa3900
leaq -0x1e8(%rbp), %rdi
callq 0x10fc8
leaq -0x1e9(%rbp), %rdi
callq 0x10810
jmp 0x82500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x82430
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x10fc8
leaq -0x181(%rbp), %rdi
callq 0x10810
jmp 0x82686
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x82656
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x824ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x824e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x824cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x824bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x824b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xa3900
leaq -0x210(%rbp), %rdi
callq 0xa3900
leaq -0x230(%rbp), %rdi
callq 0x10fc8
leaq -0x231(%rbp), %rdi
callq 0x10810
leaq -0x1c8(%rbp), %rdi
callq 0xa3900
leaq -0x1e8(%rbp), %rdi
callq 0x10fc8
leaq -0x1e9(%rbp), %rdi
callq 0x10810
jmp 0x82656
leaq -0x160(%rbp), %rdi
callq 0x7bea0
movb %al, -0x321(%rbp)
jmp 0x82514
movb -0x321(%rbp), %al
testb $0x1, %al
jne 0x82559
jmp 0x82520
leaq -0x160(%rbp), %rdi
callq 0xa38f0
movq %rax, -0x330(%rbp)
jmp 0x82535
movq -0x330(%rbp), %rsi
movq -0x2b0(%rbp), %rdi
callq 0x102f0
jmp 0x8254a
movl $0x1, -0x140(%rbp)
jmp 0x82648
leaq -0x278(%rbp), %rdi
callq 0x81cd0
jmp 0x82567
leaq -0x298(%rbp), %rdi
callq 0x81db0
jmp 0x82575
leaq -0x298(%rbp), %rdi
callq 0x102c0
movq %rax, %rcx
leaq -0x258(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x278(%rbp), %rdx
callq 0x7bdc0
jmp 0x825a0
leaq -0x298(%rbp), %rdi
callq 0x10fc8
leaq -0x278(%rbp), %rdi
callq 0xa3900
leaq -0x258(%rbp), %rdi
callq 0xa38f0
movq %rax, -0x338(%rbp)
jmp 0x825cd
movq -0x338(%rbp), %rsi
movq -0x2b0(%rbp), %rdi
callq 0x102f0
jmp 0x825e2
movl $0x1, -0x140(%rbp)
leaq -0x258(%rbp), %rdi
callq 0xa3900
jmp 0x82648
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x82620
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x10fc8
leaq -0x278(%rbp), %rdi
callq 0xa3900
jmp 0x82656
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x258(%rbp), %rdi
callq 0xa3900
jmp 0x82656
leaq -0x160(%rbp), %rdi
callq 0xa3900
jmp 0x82664
leaq -0x160(%rbp), %rdi
callq 0xa3900
jmp 0x82686
leaq -0x50(%rbp), %rdi
callq 0x10fc8
leaq -0x28(%rbp), %rdi
callq 0x10fc8
movq -0x2a8(%rbp), %rax
addq $0x340, %rsp            # imm = 0x340
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x10fc8
leaq -0x28(%rbp), %rdi
callq 0x10fc8
movq -0x58(%rbp), %rdi
callq 0x10e00
nopw %cs:(%rax,%rax)