// File: 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:
subq $0x308, %rsp            # imm = 0x308
movq %rdi, 0x2f8(%rsp)
movq 0x2f8(%rsp), %rax
movq %rax, 0x2f0(%rsp)
jmp 0x31561
movq 0x2f0(%rsp), %rax
movl 0x8(%rax), %edi
callq 0xf640
movl %eax, 0x2ec(%rsp)
xorl %eax, %eax
cmpl $-0x1, 0x2ec(%rsp)
movb %al, 0x2f(%rsp)
jne 0x31597
callq 0xe080
cmpl $0x4, (%rax)
sete %al
movb %al, 0x2f(%rsp)
movb 0x2f(%rsp), %al
testb $0x1, %al
jne 0x31561
cmpl $-0x1, 0x2ec(%rsp)
jne 0x31887
leaq 0x207(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xf420
movq 0x20(%rsp), %rdx
leaq 0x1c259(%rip), %rsi     # 0x4d824
leaq 0x208(%rsp), %rdi
callq 0x32980
jmp 0x315da
leaq 0x1b31e(%rip), %rdx     # 0x4c8ff
leaq 0x228(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x32c70
jmp 0x315f8
leaq 0x1c239(%rip), %rdx     # 0x4d838
leaq 0x248(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x32c70
jmp 0x31616
movl $0x1d10, 0x1cc(%rsp) # imm = 0x1D10
leaq 0x1d0(%rsp), %rdi
leaq 0x1cc(%rsp), %rsi
callq 0x370b0
jmp 0x31638
leaq 0x268(%rsp), %rdi
leaq 0x248(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
callq 0x36fc0
jmp 0x31657
leaq 0x1b51d(%rip), %rdx     # 0x4cb7b
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x32c70
jmp 0x31675
leaq 0x1cd2e(%rip), %rdx     # 0x4e3aa
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x32c70
jmp 0x31693
leaq 0x1c3bb(%rip), %rdx     # 0x4da55
leaq 0x2c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x32c70
jmp 0x316b1
leaq 0x2c8(%rsp), %rdi
callq 0x293e0
jmp 0x316c0
leaq 0x2c8(%rsp), %rdi
callq 0xf698
leaq 0x2a8(%rsp), %rdi
callq 0xf698
leaq 0x288(%rsp), %rdi
callq 0xf698
leaq 0x268(%rsp), %rdi
callq 0xf698
leaq 0x1d0(%rsp), %rdi
callq 0xf698
leaq 0x248(%rsp), %rdi
callq 0xf698
leaq 0x228(%rsp), %rdi
callq 0xf698
leaq 0x208(%rsp), %rdi
callq 0xf698
leaq 0x207(%rsp), %rdi
callq 0xeb40
jmp 0x31887
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31875
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31868
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3185b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3184e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31841
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31834
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31827
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x3181a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0xf698
leaq 0x2a8(%rsp), %rdi
callq 0xf698
leaq 0x288(%rsp), %rdi
callq 0xf698
leaq 0x268(%rsp), %rdi
callq 0xf698
leaq 0x1d0(%rsp), %rdi
callq 0xf698
leaq 0x248(%rsp), %rdi
callq 0xf698
leaq 0x228(%rsp), %rdi
callq 0xf698
leaq 0x208(%rsp), %rdi
callq 0xf698
leaq 0x207(%rsp), %rdi
callq 0xeb40
jmp 0x31d36
jmp 0x31889
callq 0x39eb0
testb $0x1, %al
jne 0x3155f
callq 0x16600
movq %rax, %rdi
callq 0x17940
movq %rax, 0x1c0(%rsp)
movq 0x1c0(%rsp), %rdi
callq 0xf0c0
cmpl $0x0, %eax
je 0x31aa1
leaq 0x13f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xf420
movq 0x18(%rsp), %rdx
leaq 0x1cae1(%rip), %rsi     # 0x4e3c0
leaq 0x140(%rsp), %rdi
callq 0x32980
jmp 0x318ee
movq 0x1c0(%rsp), %rdx
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x32c70
jmp 0x3190d
leaq 0x1cab4(%rip), %rdx     # 0x4e3c8
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x32c70
jmp 0x3192b
leaq 0x118(%rsp), %rdi
callq 0x294c0
jmp 0x3193a
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x118(%rsp), %rdx
callq 0x36fc0
jmp 0x31959
leaq 0x1a0(%rsp), %rdi
callq 0x293e0
jmp 0x31968
leaq 0x1a0(%rsp), %rdi
callq 0xf698
leaq 0x118(%rsp), %rdi
callq 0xf698
leaq 0x180(%rsp), %rdi
callq 0xf698
leaq 0x160(%rsp), %rdi
callq 0xf698
leaq 0x140(%rsp), %rdi
callq 0xf698
leaq 0x13f(%rsp), %rdi
callq 0xeb40
movl $0x1, 0x304(%rsp)
jmp 0x31d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31a8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31a82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31a75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31a68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31a5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xf698
leaq 0x118(%rsp), %rdi
callq 0xf698
leaq 0x180(%rsp), %rdi
callq 0xf698
leaq 0x160(%rsp), %rdi
callq 0xf698
leaq 0x140(%rsp), %rdi
callq 0xf698
leaq 0x13f(%rsp), %rdi
callq 0xeb40
jmp 0x31d36
movq 0x2f0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq (%rax), %rax
movq %rax, (%rsp)
callq 0x40690
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0xf370
leaq 0x57(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xf420
movq 0x10(%rsp), %rdx
leaq 0x1c8eb(%rip), %rsi     # 0x4e3d4
leaq 0x58(%rsp), %rdi
callq 0x32980
jmp 0x31af5
movq 0x2f0(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdx
leaq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x32c70
jmp 0x31b14
leaq 0x1c8c1(%rip), %rdx     # 0x4e3dc
leaq 0x98(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x32c70
jmp 0x31b2f
movq 0x1c0(%rsp), %rdx
leaq 0xb8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x32c70
jmp 0x31b4e
leaq 0x1c875(%rip), %rdx     # 0x4e3ca
leaq 0xd8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x32c70
jmp 0x31b6c
leaq 0x30(%rsp), %rdi
callq 0x294c0
jmp 0x31b78
leaq 0xf8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x36fc0
jmp 0x31b94
leaq 0xf8(%rsp), %rdi
callq 0x293e0
jmp 0x31ba3
leaq 0xf8(%rsp), %rdi
callq 0xf698
leaq 0x30(%rsp), %rdi
callq 0xf698
leaq 0xd8(%rsp), %rdi
callq 0xf698
leaq 0xb8(%rsp), %rdi
callq 0xf698
leaq 0x98(%rsp), %rdi
callq 0xf698
leaq 0x78(%rsp), %rdi
callq 0xf698
leaq 0x58(%rsp), %rdi
callq 0xf698
leaq 0x57(%rsp), %rdi
callq 0xeb40
movl $0x1, 0x304(%rsp)
jmp 0x31d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31d1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31d11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31d07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31cfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31ced
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31ce0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
jmp 0x31cd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1f8(%rsp)
movl %eax, 0x1f4(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0xf698
leaq 0x30(%rsp), %rdi
callq 0xf698
leaq 0xd8(%rsp), %rdi
callq 0xf698
leaq 0xb8(%rsp), %rdi
callq 0xf698
leaq 0x98(%rsp), %rdi
callq 0xf698
leaq 0x78(%rsp), %rdi
callq 0xf698
leaq 0x58(%rsp), %rdi
callq 0xf698
leaq 0x57(%rsp), %rdi
callq 0xeb40
jmp 0x31d36
movl 0x304(%rsp), %eax
addq $0x308, %rsp            # imm = 0x308
retq
movq 0x1f8(%rsp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)