// File: /workspace/github_cpp_makefile_star2_O2/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.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 execve() as it's a direct system call.  We
  // cannot use execvp() as it's a libc function and thus potentially
  // unsafe.  Since execve() doesn't search the PATH, the user must
  // invoke the test program via a valid path that contains at least
  // one path separator.
  execve(args->argv[0], args->argv, GetEnviron());
  DeathTestAbort(std::string("execve(") + 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 0x6a00
cmpl $-0x1, %eax
jne 0x14d9c
callq 0x6060
cmpl $0x4, (%rax)
je 0x14cae
leaq 0xa3d4(%rip), %rsi      # 0x1f0a5
leaq 0xd8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1543a
leaq 0x9577(%rip), %rdx      # 0x1e261
leaq 0xb8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x154d7
leaq 0xa3b3(%rip), %rdx      # 0x1f0b9
leaq 0x10(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x154d7
leaq 0xb4(%rsp), %rsi
movl $0x1d10, (%rsi)         # imm = 0x1D10
leaq 0xf8(%rsp), %rdi
callq 0x1703c
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x16fd5
leaq 0x9774(%rip), %rdx      # 0x1e4c5
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x154d7
leaq 0xaeb2(%rip), %rdx      # 0x1fc19
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0xa559(%rip), %rdx      # 0x1f2d6
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x154d7
leaq 0x90(%rsp), %rdi
callq 0x10f7e
callq 0x7a12
movq 0x19918(%rip), %rax     # 0x2e6c0
movq 0x10(%rax), %rbx
movq %rbx, %rdi
callq 0x6790
testl %eax, %eax
jne 0x14e77
movq (%r14), %rsi
movq (%rsi), %rdi
movq 0x191ff(%rip), %rax     # 0x2dfc8
movq (%rax), %rdx
callq 0x68c0
leaq 0xae6b(%rip), %rsi      # 0x1fc43
leaq 0xb8(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0x1543a
movq (%r14), %rax
movq (%rax), %rdx
leaq 0x10(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x154d7
leaq 0xae3f(%rip), %rdx      # 0x1fc4b
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x154d7
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x154d7
leaq 0xae05(%rip), %rdx      # 0x1fc39
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0xd8(%rsp), %rdi
callq 0x10fed
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x16fd5
leaq 0x90(%rsp), %rdi
callq 0x10f7e
leaq 0xadb1(%rip), %rsi      # 0x1fc2f
leaq 0x30(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x1543a
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x154d7
leaq 0xad8e(%rip), %rdx      # 0x1fc37
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0x10(%rsp), %rdi
callq 0x10fed
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x16fd5
leaq 0x90(%rsp), %rdi
callq 0x10f7e
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x6a28
jmp 0x14efb
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x6a28
jmp 0x14f2e
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x6a28
jmp 0x14f1c
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x6a28
jmp 0x14f3d
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6a28
jmp 0x14f4c
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x6a28
jmp 0x14f7c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6a28
jmp 0x14f8b
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x6a28
jmp 0x14f6d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6a28
jmp 0x14f9d
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6a28
jmp 0x14fac
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0x6a28
jmp 0x14fbb
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x6a28
jmp 0x14fca
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6a28
jmp 0x14fd9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6a28
jmp 0x14fe8
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6a28
jmp 0x14ffa
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6a28
jmp 0x15004
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x6a28
jmp 0x15011
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x15019
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x15019
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x6a28
jmp 0x15027
jmp 0x15024
jmp 0x15024
movq %rax, %rbx
movq %rbx, %rdi
callq 0x6900