// File: /workspace/github_cpp_makefile_star2_O2/halfflat[P]tinyopt/test/googletest/googletest/src/gtest-death-test.cc
// Function: testing::internal::ExecDeathTestChildMain(void*)
static int ExecDeathTestChildMain(void* child_arg) {
  ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));

  // We need to execute the test program in the same environment where
  // it was originally invoked.  Therefore we change to the original
  // working directory first.
  const char* const original_dir =
      UnitTest::GetInstance()->original_working_dir();
  // We can safely call chdir() as it's a direct system call.
  if (chdir(original_dir) != 0) {
    DeathTestAbort(std::string("chdir(\"") + original_dir +
                   "\") failed: " + GetLastErrnoDescription());
    return EXIT_FAILURE;
  }

  // We can safely call execv() as it's almost a direct system call. We
  // cannot use execvp() as it's a libc function and thus potentially
  // unsafe.  Since execv() doesn't search the PATH, the user must
  // invoke the test program via a valid path that contains at least
  // one path separator.
  execv(args->argv[0], args->argv);
  DeathTestAbort(std::string("execv(") + args->argv[0] + ", ...) in " +
                 original_dir + " failed: " + GetLastErrnoDescription());
  return EXIT_FAILURE;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, %r14
movl 0x8(%r14), %edi
callq 0xdba0
cmpl $-0x1, %eax
jne 0x4a4e9
callq 0xd060
cmpl $0x4, (%rax)
je 0x4a3fb
leaq 0x10c4e(%rip), %rsi     # 0x5b06c
leaq 0xd8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1337a
leaq 0x10b5f(%rip), %rdx     # 0x5af96
leaq 0xb8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x4c05c
leaq 0x10c2d(%rip), %rdx     # 0x5b080
leaq 0x10(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4c05c
leaq 0xb4(%rsp), %rsi
movl $0x4a3, (%rsi)          # imm = 0x4A3
leaq 0xf8(%rsp), %rdi
callq 0x4c0e2
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x4c07b
leaq 0x121c4(%rip), %rdx     # 0x5c662
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x4c05c
leaq 0x128e9(%rip), %rdx     # 0x5cd9d
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x4c05c
leaq 0x10dd3(%rip), %rdx     # 0x5b29d
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x4c05c
leaq 0x90(%rsp), %rdi
callq 0x35a78
callq 0x3b634
movq 0x3a51b(%rip), %rax     # 0x84a10
movq 0x10(%rax), %rbx
movq %rbx, %rdi
callq 0xd920
testl %eax, %eax
jne 0x4a5ba
movq (%r14), %rsi
movq (%rsi), %rdi
callq 0xd510
leaq 0x128ac(%rip), %rsi     # 0x5cdc7
leaq 0xb8(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0x1337a
movq (%r14), %rax
movq (%rax), %rdx
leaq 0x10(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4c05c
leaq 0x1287f(%rip), %rdx     # 0x5cdce
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x4c05c
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x4c05c
leaq 0x12846(%rip), %rdx     # 0x5cdbd
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x4c05c
leaq 0xd8(%rsp), %rdi
callq 0x359e4
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x4c07b
leaq 0x90(%rsp), %rdi
callq 0x35a78
leaq 0x127f2(%rip), %rsi     # 0x5cdb3
leaq 0x30(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x1337a
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x4c05c
leaq 0x127cf(%rip), %rdx     # 0x5cdbb
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x4c05c
leaq 0x10(%rsp), %rdi
callq 0x359e4
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x4c07b
leaq 0x90(%rsp), %rdi
callq 0x35a78
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xdbe8
jmp 0x4a63e
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xdbe8
jmp 0x4a671
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xdbe8
jmp 0x4a65f
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0xdbe8
jmp 0x4a680
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xdbe8
jmp 0x4a68f
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xdbe8
jmp 0x4a6bf
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xdbe8
jmp 0x4a6ce
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xdbe8
jmp 0x4a6b0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xdbe8
jmp 0x4a6e0
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xdbe8
jmp 0x4a6ef
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0xdbe8
jmp 0x4a6fe
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xdbe8
jmp 0x4a70d
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xdbe8
jmp 0x4a71c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xdbe8
jmp 0x4a72b
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xdbe8
jmp 0x4a73d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xdbe8
jmp 0x4a747
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xdbe8
jmp 0x4a754
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x4a75c
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x4a75c
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0xdbe8
jmp 0x4a76a
jmp 0x4a767
jmp 0x4a767
movq %rax, %rbx
movq %rbx, %rdi
callq 0xdaa0