// File: /workspace/github_cpp_makefile_star2_O2/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::NoExecDeathTest::AssumeRole()
DeathTest::TestRole NoExecDeathTest::AssumeRole() {
  const size_t thread_count = GetThreadCount();
  if (thread_count != 1) {
    GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
  }

  int pipe_fd[2];
  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);

  DeathTest::set_last_death_test_message("");
  CaptureStderr();
  // When we fork the process below, the log file buffers are copied, but the
  // file descriptors are shared.  We flush all log files here so that closing
  // the file descriptors in the child process doesn't throw off the
  // synchronization between descriptors and buffers in the parent process.
  // This is as close to the fork as possible to avoid a race condition in case
  // there are multiple threads running before the death test, and another
  // thread writes to the log file.
  FlushInfoLog();

  const pid_t child_pid = fork();
  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
  set_child_pid(child_pid);
  if (child_pid == 0) {
    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
    set_write_fd(pipe_fd[1]);
    // Redirects all logging to stderr in the child process to prevent
    // concurrent writes to the log files.  We capture stderr in the parent
    // process and append the child process' output to a log.
    LogToStderr();
    // Event forwarding to the listeners of event listener API mush be shut
    // down in death test subprocesses.
    GetUnitTestImpl()->listeners()->SuppressEventForwarding();
    g_in_fast_death_test_child = true;
    return EXECUTE_TEST;
  } else {
    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
    set_read_fd(pipe_fd[0]);
    set_spawned(true);
    return OVERSEE_TEST;
  }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x110, %rsp            # imm = 0x110
movq %rdi, %rbx
leaq 0xc3e6(%rip), %rdx      # 0x1e261
leaq 0x50(%rsp), %rdi
pushq $0x1
popq %rbp
movl %ebp, %esi
movl $0x1c97, %ecx           # imm = 0x1C97
callq 0x1418e
leaq 0x8(%rsp), %rdi
callq 0x8f22
movq 0x8(%rsp), %r14
addq $0x10, %r14
leaq 0xdbc8(%rip), %rsi      # 0x1fa71
movq %r14, %rdi
callq 0x6410
leaq 0xdbee(%rip), %rsi      # 0x1faa6
movq %r14, %rdi
callq 0x6410
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0xc60a(%rip), %rsi      # 0x1e4da
callq 0x6410
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0xd329(%rip), %rsi      # 0x1f20e
callq 0x6410
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0xdbd4(%rip), %rsi      # 0x1face
callq 0x6410
movq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdi
callq 0x90f7
leaq 0x8(%rsp), %rdi
callq 0x731c
movq 0x1c0c9(%rip), %rdi     # 0x2dfe8
leaq 0x28(%rsp), %rsi
callq 0x63c0
leaq 0x28(%rsp), %rdi
callq 0x6a28
leaq 0x50(%rsp), %rdi
callq 0x14252
leaq 0x48(%rsp), %rdi
callq 0x66d0
cmpl $-0x1, %eax
je 0x121aa
leaq 0xcb4e(%rip), %rsi      # 0x1eaa5
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1543a
leaq 0x28(%rsp), %rdi
callq 0x110cc
leaq 0x28(%rsp), %rdi
callq 0x6a28
callq 0x1247b
callq 0x18244
callq 0x6110
cmpl $-0x1, %eax
je 0x12260
movl %eax, 0x2c(%rbx)
testl %eax, %eax
je 0x12092
movl 0x4c(%rsp), %edi
callq 0x6a00
cmpl $-0x1, %eax
jne 0x120c0
callq 0x6060
cmpl $0x4, (%rax)
je 0x11f9d
leaq 0xd0e5(%rip), %rsi      # 0x1f0a5
leaq 0x70(%rsp), %rdi
leaq 0x3(%rsp), %rdx
callq 0x1543a
leaq 0xc28b(%rip), %rdx      # 0x1e261
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x154d7
leaq 0xd0ca(%rip), %rdx      # 0x1f0b9
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x154d7
leaq 0x4(%rsp), %rsi
movl $0x1cb8, (%rsi)         # imm = 0x1CB8
leaq 0xf0(%rsp), %rdi
callq 0x1703c
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x16fd5
leaq 0xc485(%rip), %rdx      # 0x1e4c5
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x154d7
leaq 0xd24e(%rip), %rdx      # 0x1f2a7
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0xd267(%rip), %rdx      # 0x1f2d6
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x154d7
leaq 0x28(%rsp), %rdi
callq 0x10f7e
callq 0x6060
cmpl $0x4, (%rax)
jne 0x120db
movl 0x48(%rsp), %edi
callq 0x6a00
cmpl $-0x1, %eax
je 0x12088
movl 0x4c(%rsp), %eax
movl %eax, 0x28(%rbx)
callq 0x1552e
movq 0x190(%rax), %rax
movb $0x0, 0x8(%rax)
movb $0x1, 0x1c653(%rip)     # 0x2e711
jmp 0x120cd
movl 0x48(%rsp), %eax
movl %eax, 0x24(%rbx)
movb $0x1, 0x18(%rbx)
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x110, %rsp            # imm = 0x110
popq %rbx
popq %r14
popq %rbp
retq
leaq 0xcfc3(%rip), %rsi      # 0x1f0a5
leaq 0x70(%rsp), %rdi
leaq 0x3(%rsp), %rdx
callq 0x1543a
leaq 0xc169(%rip), %rdx      # 0x1e261
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x154d7
leaq 0xcfa8(%rip), %rdx      # 0x1f0b9
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x154d7
leaq 0x4(%rsp), %rsi
movl $0x1cac, (%rsi)         # imm = 0x1CAC
leaq 0xf0(%rsp), %rdi
callq 0x1703c
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x16fd5
leaq 0xc363(%rip), %rdx      # 0x1e4c5
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x154d7
leaq 0xd11a(%rip), %rdx      # 0x1f295
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0xd145(%rip), %rdx      # 0x1f2d6
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x154d7
leaq 0x28(%rsp), %rdi
callq 0x10f7e
leaq 0xcef4(%rip), %rsi      # 0x1f0a5
leaq 0x90(%rsp), %rdi
leaq 0x4(%rsp), %rdx
callq 0x1543a
leaq 0xc097(%rip), %rdx      # 0x1e261
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x154d7
leaq 0xced3(%rip), %rdx      # 0x1f0b9
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x154d7
leaq 0xf0(%rsp), %rsi
movl $0x1c9b, (%rsi)         # imm = 0x1C9B
leaq 0x70(%rsp), %rdi
callq 0x1703c
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x16fd5
leaq 0xc294(%rip), %rdx      # 0x1e4c5
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0xd02a(%rip), %rdx      # 0x1f271
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x154d7
leaq 0x28(%rsp), %rdi
callq 0x10f7e
leaq 0xce3e(%rip), %rsi      # 0x1f0a5
leaq 0x90(%rsp), %rdi
leaq 0x4(%rsp), %rdx
callq 0x1543a
leaq 0xbfe1(%rip), %rdx      # 0x1e261
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x154d7
leaq 0xce1d(%rip), %rdx      # 0x1f0b9
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x154d7
leaq 0xf0(%rsp), %rsi
movl $0x1ca9, (%rsi)         # imm = 0x1CA9
leaq 0x70(%rsp), %rdi
callq 0x1703c
leaq 0x50(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x16fd5
leaq 0xc1de(%rip), %rdx      # 0x1e4c5
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x154d7
leaq 0xcf88(%rip), %rdx      # 0x1f285
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x154d7
leaq 0x28(%rsp), %rdi
callq 0x10f7e
jmp 0x1231a
jmp 0x12329
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x6a28
jmp 0x1232c
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x6a28
jmp 0x1233d
jmp 0x1233a
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6a28
jmp 0x1234e
jmp 0x1234b
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x6a28
jmp 0x12363
jmp 0x12372
jmp 0x12381
jmp 0x12360
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x6a28
jmp 0x12397
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x6a28
jmp 0x12384
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x6a28
jmp 0x123a9
jmp 0x123a6
jmp 0x12394
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x6a28
jmp 0x123bc
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6a28
jmp 0x123cc
jmp 0x123c9
jmp 0x123b9
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
jmp 0x1244b
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x6a28
jmp 0x123ea
jmp 0x123e7
jmp 0x1246d
jmp 0x1246d
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x6a28
jmp 0x1241e
jmp 0x1241b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x1244b
jmp 0x1246d
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x6a28
jmp 0x12461
movq %rax, %rbx
jmp 0x12461
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x6a28
jmp 0x12432
jmp 0x1242f
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x6a28
jmp 0x12446
jmp 0x12443
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x6a28
jmp 0x12470
jmp 0x1246d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x731c
leaq 0x50(%rsp), %rdi
callq 0x14252
jmp 0x12470
movq %rax, %rbx
movq %rbx, %rdi
callq 0x6900