// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::ExecDeathTestSpawnChild(char* const*, int)
static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
  ExecDeathTestArgs args = { argv, close_fd };
  pid_t child_pid = -1;

#  if GTEST_OS_QNX
  // Obtains the current directory and sets it to be closed in the child
  // process.
  const int cwd_fd = open(".", O_RDONLY);
  GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
  // 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;
  }

  int fd_flags;
  // Set close_fd to be closed after spawn.
  GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
                                        fd_flags | FD_CLOEXEC));
  struct inheritance inherit = {0};
  // spawn is a system call.
  child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron());
  // Restores the current working directory.
  GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));

#  else   // GTEST_OS_QNX
#   if GTEST_OS_LINUX
  // When a SIGPROF signal is received while fork() or clone() are executing,
  // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
  // it after the call to fork()/clone() is complete.
  struct sigaction saved_sigprof_action;
  struct sigaction ignore_sigprof_action;
  memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
  sigemptyset(&ignore_sigprof_action.sa_mask);
  ignore_sigprof_action.sa_handler = SIG_IGN;
  GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
      SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
#   endif  // GTEST_OS_LINUX

#   if GTEST_HAS_CLONE
  const bool use_fork = GTEST_FLAG(death_test_use_fork);

  if (!use_fork) {
    static const bool stack_grows_down = StackGrowsDown();
    const size_t stack_size = getpagesize();
    // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
    void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
                             MAP_ANON | MAP_PRIVATE, -1, 0);
    GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);

    // Maximum stack alignment in bytes:  For a downward-growing stack, this
    // amount is subtracted from size of the stack space to get an address
    // that is within the stack space and is aligned on all systems we care
    // about.  As far as I know there is no ABI with stack alignment greater
    // than 64.  We assume stack and stack_size already have alignment of
    // kMaxStackAlignment.
    const size_t kMaxStackAlignment = 64;
    void* const stack_top =
        static_cast<char*>(stack) +
            (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
    GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment &&
        reinterpret_cast<intptr_t>(stack_top) % kMaxStackAlignment == 0);

    child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);

    GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
  }
#   else
  const bool use_fork = true;
#   endif  // GTEST_HAS_CLONE

  if (use_fork && (child_pid = fork()) == 0) {
      ExecDeathTestChildMain(&args);
      _exit(0);
  }
#  endif  // GTEST_OS_QNX
#  if GTEST_OS_LINUX
  GTEST_DEATH_TEST_CHECK_SYSCALL_(
      sigaction(SIGPROF, &saved_sigprof_action, NULL));
#  endif  // GTEST_OS_LINUX

  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
  return child_pid;
}

// Assembly:
subq $0x7c8, %rsp            # imm = 0x7C8
movq %rdi, 0x7c0(%rsp)
movl %esi, 0x7bc(%rsp)
movq 0x7c0(%rsp), %rax
movq %rax, 0x7a8(%rsp)
movl 0x7bc(%rsp), %eax
movl %eax, 0x7b0(%rsp)
movl $0xffffffff, 0x7a4(%rsp) # imm = 0xFFFFFFFF
leaq 0x670(%rsp), %rdi
xorl %esi, %esi
movl $0x98, %edx
callq 0xe4f0
leaq 0x670(%rsp), %rdi
addq $0x8, %rdi
callq 0xede0
movl $0x1, %eax
movq %rax, 0x670(%rsp)
jmp 0x2d3c3
movl $0x1b, %edi
leaq 0x670(%rsp), %rsi
leaq 0x708(%rsp), %rdx
callq 0xedf0
movl %eax, 0x66c(%rsp)
xorl %eax, %eax
cmpl $-0x1, 0x66c(%rsp)
movb %al, 0x5b(%rsp)
jne 0x2d403
callq 0xe080
cmpl $0x4, (%rax)
sete %al
movb %al, 0x5b(%rsp)
movb 0x5b(%rsp), %al
testb $0x1, %al
jne 0x2d3c3
cmpl $-0x1, 0x66c(%rsp)
jne 0x2d6f3
leaq 0x587(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xf420
movq 0x50(%rsp), %rdx
leaq 0x203ed(%rip), %rsi     # 0x4d824
leaq 0x588(%rsp), %rdi
callq 0x32980
jmp 0x2d446
leaq 0x1f4b2(%rip), %rdx     # 0x4c8ff
leaq 0x5a8(%rsp), %rdi
leaq 0x588(%rsp), %rsi
callq 0x32c70
jmp 0x2d464
leaq 0x203cd(%rip), %rdx     # 0x4d838
leaq 0x5c8(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
callq 0x32c70
jmp 0x2d482
movl $0x1d75, 0x54c(%rsp) # imm = 0x1D75
leaq 0x550(%rsp), %rdi
leaq 0x54c(%rsp), %rsi
callq 0x370b0
jmp 0x2d4a4
leaq 0x5e8(%rsp), %rdi
leaq 0x5c8(%rsp), %rsi
leaq 0x550(%rsp), %rdx
callq 0x36fc0
jmp 0x2d4c3
leaq 0x1f6b1(%rip), %rdx     # 0x4cb7b
leaq 0x608(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
callq 0x32c70
jmp 0x2d4e1
leaq 0x20db8(%rip), %rdx     # 0x4e2a0
leaq 0x628(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0x32c70
jmp 0x2d4ff
leaq 0x2054f(%rip), %rdx     # 0x4da55
leaq 0x648(%rsp), %rdi
leaq 0x628(%rsp), %rsi
callq 0x32c70
jmp 0x2d51d
leaq 0x648(%rsp), %rdi
callq 0x293e0
jmp 0x2d52c
leaq 0x648(%rsp), %rdi
callq 0xf698
leaq 0x628(%rsp), %rdi
callq 0xf698
leaq 0x608(%rsp), %rdi
callq 0xf698
leaq 0x5e8(%rsp), %rdi
callq 0xf698
leaq 0x550(%rsp), %rdi
callq 0xf698
leaq 0x5c8(%rsp), %rdi
callq 0xf698
leaq 0x5a8(%rsp), %rdi
callq 0xf698
leaq 0x588(%rsp), %rdi
callq 0xf698
leaq 0x587(%rsp), %rdi
callq 0xeb40
jmp 0x2d6f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d6e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d6d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d6c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d6ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d6ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d6a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d693
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d686
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x648(%rsp), %rdi
callq 0xf698
leaq 0x628(%rsp), %rdi
callq 0xf698
leaq 0x608(%rsp), %rdi
callq 0xf698
leaq 0x5e8(%rsp), %rdi
callq 0xf698
leaq 0x550(%rsp), %rdi
callq 0xf698
leaq 0x5c8(%rsp), %rdi
callq 0xf698
leaq 0x5a8(%rsp), %rdi
callq 0xf698
leaq 0x588(%rsp), %rdi
callq 0xf698
leaq 0x587(%rsp), %rdi
callq 0xeb40
jmp 0x2e687
jmp 0x2d6f5
callq 0x39eb0
testb $0x1, %al
jne 0x2d3c1
movb 0x38640(%rip), %al      # 0x65d48
andb $0x1, %al
movb %al, 0x54b(%rsp)
testb $0x1, 0x54b(%rsp)
jne 0x2e067
cmpb $0x0, 0x38682(%rip)     # 0x65da8
jne 0x2d752
leaq 0x38679(%rip), %rdi     # 0x65da8
callq 0xf4a0
cmpl $0x0, %eax
je 0x2d752
callq 0x2c090
andb $0x1, %al
movb %al, 0x3865a(%rip)      # 0x65da0
leaq 0x3865b(%rip), %rdi     # 0x65da8
callq 0xe610
callq 0xf470
cltq
movq %rax, 0x540(%rsp)
movq 0x540(%rsp), %rsi
xorl %eax, %eax
movl %eax, %r9d
movl $0x3, %edx
movl $0x22, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movq %r9, %rdi
callq 0xf430
movq %rax, 0x538(%rsp)
movq $-0x1, %rax
cmpq %rax, 0x538(%rsp)
setne %al
movzbl %al, %edi
andl $0x1, %edi
callq 0x16400
testb $0x1, %al
jne 0x2da3c
leaq 0x477(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xf420
movq 0x48(%rsp), %rdx
leaq 0x20053(%rip), %rsi     # 0x4d824
leaq 0x478(%rsp), %rdi
callq 0x32980
jmp 0x2d7e0
leaq 0x1f118(%rip), %rdx     # 0x4c8ff
leaq 0x498(%rsp), %rdi
leaq 0x478(%rsp), %rsi
callq 0x32c70
jmp 0x2d7fe
leaq 0x20033(%rip), %rdx     # 0x4d838
leaq 0x4b8(%rsp), %rdi
leaq 0x498(%rsp), %rsi
callq 0x32c70
jmp 0x2d81c
movl $0x1d81, 0x44c(%rsp) # imm = 0x1D81
leaq 0x450(%rsp), %rdi
leaq 0x44c(%rsp), %rsi
callq 0x370b0
jmp 0x2d83e
leaq 0x4d8(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
leaq 0x450(%rsp), %rdx
callq 0x36fc0
jmp 0x2d85d
leaq 0x1f317(%rip), %rdx     # 0x4cb7b
leaq 0x4f8(%rsp), %rdi
leaq 0x4d8(%rsp), %rsi
callq 0x32c70
jmp 0x2d87b
leaq 0x20a61(%rip), %rdx     # 0x4e2e3
leaq 0x518(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
callq 0x32c70
jmp 0x2d899
leaq 0x518(%rsp), %rdi
callq 0x293e0
jmp 0x2d8a8
leaq 0x518(%rsp), %rdi
callq 0xf698
leaq 0x4f8(%rsp), %rdi
callq 0xf698
leaq 0x4d8(%rsp), %rdi
callq 0xf698
leaq 0x450(%rsp), %rdi
callq 0xf698
leaq 0x4b8(%rsp), %rdi
callq 0xf698
leaq 0x498(%rsp), %rdi
callq 0xf698
leaq 0x478(%rsp), %rdi
callq 0xf698
leaq 0x477(%rsp), %rdi
callq 0xeb40
jmp 0x2da3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2da2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2da1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2da10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2da03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d9f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d9e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2d9dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x518(%rsp), %rdi
callq 0xf698
leaq 0x4f8(%rsp), %rdi
callq 0xf698
leaq 0x4d8(%rsp), %rdi
callq 0xf698
leaq 0x450(%rsp), %rdi
callq 0xf698
leaq 0x4b8(%rsp), %rdi
callq 0xf698
leaq 0x498(%rsp), %rdi
callq 0xf698
leaq 0x478(%rsp), %rdi
callq 0xf698
leaq 0x477(%rsp), %rdi
callq 0xeb40
jmp 0x2e687
jmp 0x2da3e
callq 0x39eb0
testb $0x1, %al
jne 0x2d78e
movq $0x40, 0x440(%rsp)
movq 0x538(%rsp), %rax
movq %rax, 0x40(%rsp)
testb $0x1, 0x38335(%rip)     # 0x65da0
je 0x2da80
movq 0x540(%rsp), %rax
subq $0x40, %rax
movq %rax, 0x38(%rsp)
jmp 0x2da89
xorl %eax, %eax
movq %rax, 0x38(%rsp)
jmp 0x2da89
movq 0x40(%rsp), %rax
movq 0x38(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x438(%rsp)
xorl %eax, %eax
cmpq $0x40, 0x540(%rsp)
movb %al, 0x37(%rsp)
jbe 0x2dac6
movq 0x438(%rsp), %rax
andq $0x3f, %rax
cmpq $0x0, %rax
sete %al
movb %al, 0x37(%rsp)
movb 0x37(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
callq 0x16400
testb $0x1, %al
jne 0x2dd66
leaq 0x377(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xf420
movq 0x28(%rsp), %rdx
leaq 0x1fd29(%rip), %rsi     # 0x4d824
leaq 0x378(%rsp), %rdi
callq 0x32980
jmp 0x2db0a
leaq 0x1edee(%rip), %rdx     # 0x4c8ff
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x32c70
jmp 0x2db28
leaq 0x1fd09(%rip), %rdx     # 0x4d838
leaq 0x3b8(%rsp), %rdi
leaq 0x398(%rsp), %rsi
callq 0x32c70
jmp 0x2db46
movl $0x1d8e, 0x34c(%rsp) # imm = 0x1D8E
leaq 0x350(%rsp), %rdi
leaq 0x34c(%rsp), %rsi
callq 0x370b0
jmp 0x2db68
leaq 0x3d8(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
leaq 0x350(%rsp), %rdx
callq 0x36fc0
jmp 0x2db87
leaq 0x1efed(%rip), %rdx     # 0x4cb7b
leaq 0x3f8(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
callq 0x32c70
jmp 0x2dba5
leaq 0x2074b(%rip), %rdx     # 0x4e2f7
leaq 0x418(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0x32c70
jmp 0x2dbc3
leaq 0x418(%rsp), %rdi
callq 0x293e0
jmp 0x2dbd2
leaq 0x418(%rsp), %rdi
callq 0xf698
leaq 0x3f8(%rsp), %rdi
callq 0xf698
leaq 0x3d8(%rsp), %rdi
callq 0xf698
leaq 0x350(%rsp), %rdi
callq 0xf698
leaq 0x3b8(%rsp), %rdi
callq 0xf698
leaq 0x398(%rsp), %rdi
callq 0xf698
leaq 0x378(%rsp), %rdi
callq 0xf698
leaq 0x377(%rsp), %rdi
callq 0xeb40
jmp 0x2dd66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dd06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x418(%rsp), %rdi
callq 0xf698
leaq 0x3f8(%rsp), %rdi
callq 0xf698
leaq 0x3d8(%rsp), %rdi
callq 0xf698
leaq 0x350(%rsp), %rdi
callq 0xf698
leaq 0x3b8(%rsp), %rdi
callq 0xf698
leaq 0x398(%rsp), %rdi
callq 0xf698
leaq 0x378(%rsp), %rdi
callq 0xf698
leaq 0x377(%rsp), %rdi
callq 0xeb40
jmp 0x2e687
jmp 0x2dd68
callq 0x39eb0
testb $0x1, %al
jne 0x2da9e
movq 0x438(%rsp), %rsi
leaq 0x37bc(%rip), %rdi      # 0x31540
movl $0x11, %edx
leaq 0x7a8(%rsp), %rcx
movb $0x0, %al
callq 0xf510
movl %eax, 0x7a4(%rsp)
movq 0x538(%rsp), %rdi
movq 0x540(%rsp), %rsi
callq 0xe520
cmpl $-0x1, %eax
setne %al
movzbl %al, %edi
andl $0x1, %edi
callq 0x16400
testb $0x1, %al
jne 0x2e056
leaq 0x287(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xf420
movq 0x20(%rsp), %rdx
leaq 0x1fa39(%rip), %rsi     # 0x4d824
leaq 0x288(%rsp), %rdi
callq 0x32980
jmp 0x2ddfa
leaq 0x1eafe(%rip), %rdx     # 0x4c8ff
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x32c70
jmp 0x2de18
leaq 0x1fa19(%rip), %rdx     # 0x4d838
leaq 0x2c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x32c70
jmp 0x2de36
movl $0x1d92, 0x25c(%rsp) # imm = 0x1D92
leaq 0x260(%rsp), %rdi
leaq 0x25c(%rsp), %rsi
callq 0x370b0
jmp 0x2de58
leaq 0x2e8(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
leaq 0x260(%rsp), %rdx
callq 0x36fc0
jmp 0x2de77
leaq 0x1ecfd(%rip), %rdx     # 0x4cb7b
leaq 0x308(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0x32c70
jmp 0x2de95
leaq 0x204be(%rip), %rdx     # 0x4e35a
leaq 0x328(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x32c70
jmp 0x2deb3
leaq 0x328(%rsp), %rdi
callq 0x293e0
jmp 0x2dec2
leaq 0x328(%rsp), %rdi
callq 0xf698
leaq 0x308(%rsp), %rdi
callq 0xf698
leaq 0x2e8(%rsp), %rdi
callq 0xf698
leaq 0x260(%rsp), %rdi
callq 0xf698
leaq 0x2c8(%rsp), %rdi
callq 0xf698
leaq 0x2a8(%rsp), %rdi
callq 0xf698
leaq 0x288(%rsp), %rdi
callq 0xf698
leaq 0x287(%rsp), %rdi
callq 0xeb40
jmp 0x2e056
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e037
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e02a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e01d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e010
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e003
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2dff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x328(%rsp), %rdi
callq 0xf698
leaq 0x308(%rsp), %rdi
callq 0xf698
leaq 0x2e8(%rsp), %rdi
callq 0xf698
leaq 0x260(%rsp), %rdi
callq 0xf698
leaq 0x2c8(%rsp), %rdi
callq 0xf698
leaq 0x2a8(%rsp), %rdi
callq 0xf698
leaq 0x288(%rsp), %rdi
callq 0xf698
leaq 0x287(%rsp), %rdi
callq 0xeb40
jmp 0x2e687
jmp 0x2e058
callq 0x39eb0
testb $0x1, %al
jne 0x2dd9f
jmp 0x2e067
testb $0x1, 0x54b(%rsp)
je 0x2e096
callq 0xe240
movl %eax, 0x7a4(%rsp)
cmpl $0x0, %eax
jne 0x2e096
leaq 0x7a8(%rsp), %rdi
callq 0x31540
xorl %edi, %edi
callq 0xf280
jmp 0x2e098
jmp 0x2e09a
movl $0x1b, %edi
leaq 0x708(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xedf0
movl %eax, 0x258(%rsp)
xorl %eax, %eax
cmpl $-0x1, 0x258(%rsp)
movb %al, 0x1f(%rsp)
jne 0x2e0d6
callq 0xe080
cmpl $0x4, (%rax)
sete %al
movb %al, 0x1f(%rsp)
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x2e09a
cmpl $-0x1, 0x258(%rsp)
jne 0x2e3c6
leaq 0x177(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xf420
movq 0x10(%rsp), %rdx
leaq 0x1f71a(%rip), %rsi     # 0x4d824
leaq 0x178(%rsp), %rdi
callq 0x32980
jmp 0x2e119
leaq 0x1e7df(%rip), %rdx     # 0x4c8ff
leaq 0x198(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x32c70
jmp 0x2e137
leaq 0x1f6fa(%rip), %rdx     # 0x4d838
leaq 0x1b8(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x32c70
jmp 0x2e155
movl $0x1d9f, 0x14c(%rsp) # imm = 0x1D9F
leaq 0x150(%rsp), %rdi
leaq 0x14c(%rsp), %rsi
callq 0x370b0
jmp 0x2e177
leaq 0x1d8(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
leaq 0x150(%rsp), %rdx
callq 0x36fc0
jmp 0x2e196
leaq 0x1e9de(%rip), %rdx     # 0x4cb7b
leaq 0x1f8(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x32c70
jmp 0x2e1b4
leaq 0x201bf(%rip), %rdx     # 0x4e37a
leaq 0x218(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x32c70
jmp 0x2e1d2
leaq 0x1f87c(%rip), %rdx     # 0x4da55
leaq 0x238(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x32c70
jmp 0x2e1f0
leaq 0x238(%rsp), %rdi
callq 0x293e0
jmp 0x2e1ff
leaq 0x238(%rsp), %rdi
callq 0xf698
leaq 0x218(%rsp), %rdi
callq 0xf698
leaq 0x1f8(%rsp), %rdi
callq 0xf698
leaq 0x1d8(%rsp), %rdi
callq 0xf698
leaq 0x150(%rsp), %rdi
callq 0xf698
leaq 0x1b8(%rsp), %rdi
callq 0xf698
leaq 0x198(%rsp), %rdi
callq 0xf698
leaq 0x178(%rsp), %rdi
callq 0xf698
leaq 0x177(%rsp), %rdi
callq 0xeb40
jmp 0x2e3c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e3b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e3a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e39a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e38d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e373
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e366
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x238(%rsp), %rdi
callq 0xf698
leaq 0x218(%rsp), %rdi
callq 0xf698
leaq 0x1f8(%rsp), %rdi
callq 0xf698
leaq 0x1d8(%rsp), %rdi
callq 0xf698
leaq 0x150(%rsp), %rdi
callq 0xf698
leaq 0x1b8(%rsp), %rdi
callq 0xf698
leaq 0x198(%rsp), %rdi
callq 0xf698
leaq 0x178(%rsp), %rdi
callq 0xf698
leaq 0x177(%rsp), %rdi
callq 0xeb40
jmp 0x2e687
jmp 0x2e3c8
callq 0x39eb0
testb $0x1, %al
jne 0x2e098
jmp 0x2e3d7
cmpl $-0x1, 0x7a4(%rsp)
setne %al
movzbl %al, %edi
andl $0x1, %edi
callq 0x16400
testb $0x1, %al
jne 0x2e669
leaq 0x87(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xf420
movq 0x8(%rsp), %rdx
leaq 0x1f411(%rip), %rsi     # 0x4d824
leaq 0x88(%rsp), %rdi
callq 0x32980
jmp 0x2e422
leaq 0x1e4d6(%rip), %rdx     # 0x4c8ff
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x32c70
jmp 0x2e440
leaq 0x1f3f1(%rip), %rdx     # 0x4d838
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x32c70
jmp 0x2e45e
movl $0x1da2, 0x5c(%rsp)     # imm = 0x1DA2
leaq 0x60(%rsp), %rdi
leaq 0x5c(%rsp), %rsi
callq 0x370b0
jmp 0x2e477
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x36fc0
jmp 0x2e493
leaq 0x1e6e1(%rip), %rdx     # 0x4cb7b
leaq 0x108(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x32c70
jmp 0x2e4b1
leaq 0x1f54c(%rip), %rdx     # 0x4da04
leaq 0x128(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x32c70
jmp 0x2e4cf
leaq 0x128(%rsp), %rdi
callq 0x293e0
jmp 0x2e4de
leaq 0x128(%rsp), %rdi
callq 0xf698
leaq 0x108(%rsp), %rdi
callq 0xf698
leaq 0xe8(%rsp), %rdi
callq 0xf698
leaq 0x60(%rsp), %rdi
callq 0xf698
leaq 0xc8(%rsp), %rdi
callq 0xf698
leaq 0xa8(%rsp), %rdi
callq 0xf698
leaq 0x88(%rsp), %rdi
callq 0xf698
leaq 0x87(%rsp), %rdi
callq 0xeb40
jmp 0x2e669
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e65a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e64d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e640
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e633
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e629
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e61c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x2e60f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x128(%rsp), %rdi
callq 0xf698
leaq 0x108(%rsp), %rdi
callq 0xf698
leaq 0xe8(%rsp), %rdi
callq 0xf698
leaq 0x60(%rsp), %rdi
callq 0xf698
leaq 0xc8(%rsp), %rdi
callq 0xf698
leaq 0xa8(%rsp), %rdi
callq 0xf698
leaq 0x88(%rsp), %rdi
callq 0xf698
leaq 0x87(%rsp), %rdi
callq 0xeb40
jmp 0x2e687
jmp 0x2e66b
callq 0x39eb0
testb $0x1, %al
jne 0x2e3d7
movl 0x7a4(%rsp), %eax
addq $0x7c8, %rsp            # imm = 0x7C8
retq
movq 0x578(%rsp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)