// File: /workspace/github_cpp_makefile_star2_O1/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::ShouldShard(char const*, char const*, bool)
bool ShouldShard(const char* total_shards_env,
                 const char* shard_index_env,
                 bool in_subprocess_for_death_test) {
  if (in_subprocess_for_death_test) {
    return false;
  }

  const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
  const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);

  if (total_shards == -1 && shard_index == -1) {
    return false;
  } else if (total_shards == -1 && shard_index != -1) {
    const Message msg = Message()
      << "Invalid environment variables: you have "
      << kTestShardIndex << " = " << shard_index
      << ", but have left " << kTestTotalShards << " unset.\n";
    ColoredPrintf(COLOR_RED, msg.GetString().c_str());
    fflush(stdout);
    exit(EXIT_FAILURE);
  } else if (total_shards != -1 && shard_index == -1) {
    const Message msg = Message()
      << "Invalid environment variables: you have "
      << kTestTotalShards << " = " << total_shards
      << ", but have left " << kTestShardIndex << " unset.\n";
    ColoredPrintf(COLOR_RED, msg.GetString().c_str());
    fflush(stdout);
    exit(EXIT_FAILURE);
  } else if (shard_index < 0 || shard_index >= total_shards) {
    const Message msg = Message()
      << "Invalid environment variables: we require 0 <= "
      << kTestShardIndex << " < " << kTestTotalShards
      << ", but you have " << kTestShardIndex << "=" << shard_index
      << ", " << kTestTotalShards << "=" << total_shards << ".\n";
    ColoredPrintf(COLOR_RED, msg.GetString().c_str());
    fflush(stdout);
    exit(EXIT_FAILURE);
  }

  return total_shards > 1;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
testl %edx, %edx
jne 0xee02
movq %rsi, %r14
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xf1f2
movl %eax, %ebx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xf1f2
movl %eax, %ebp
andl %ebx, %eax
cmpl $-0x1, %eax
je 0xee02
cmpl $-0x1, %ebx
setne %al
cmpl $-0x1, %ebp
sete %cl
orb %al, %cl
je 0xee0d
cmpl $-0x1, %ebp
setne %al
cmpl $-0x1, %ebx
sete %cl
orb %al, %cl
je 0xef00
testl %ebp, %ebp
js 0xf023
cmpl %ebx, %ebp
jge 0xf023
cmpl $0x2, %ebx
setge %al
jmp 0xee04
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x9de4
movq (%rbx), %rdi
addq $0x10, %rdi
leaq 0x1a123(%rip), %rsi     # 0x28f4b
movl $0x28, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1869e(%rip), %rsi     # 0x274e0
movl $0x11, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1a1a3(%rip), %rsi     # 0x28fff
movl $0x3, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
movl %ebp, %esi
callq 0x68a0
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1a0ee(%rip), %rsi     # 0x28f74
movl $0x10, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x18620(%rip), %rsi     # 0x274c0
movl $0x12, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1a0cb(%rip), %rsi     # 0x28f85
movl $0x8, %edx
callq 0x6510
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2094c
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xeeec
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
movq 0x28(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0xa059
jmp 0xefee
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x9de4
movq (%r14), %rdi
addq $0x10, %rdi
leaq 0x1a030(%rip), %rsi     # 0x28f4b
movl $0x28, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1858b(%rip), %rsi     # 0x274c0
movl $0x12, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1a0b0(%rip), %rsi     # 0x28fff
movl $0x3, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
movl %ebx, %esi
callq 0x68a0
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x19ffb(%rip), %rsi     # 0x28f74
movl $0x10, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1854d(%rip), %rsi     # 0x274e0
movl $0x11, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x19fd8(%rip), %rsi     # 0x28f85
movl $0x8, %edx
callq 0x6510
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2094c
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xefdf
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
movq 0x28(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0xa059
leaq 0x8(%rsp), %rbx
movq (%rbx), %rsi
movl $0x1, %edi
xorl %eax, %eax
callq 0xea2a
movq %rbx, %rdi
callq 0x69e8
movq 0x27f77(%rip), %rax     # 0x36f88
movq (%rax), %rdi
callq 0x6560
movl $0x1, %edi
callq 0x65b0
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x9de4
movq (%r14), %rdi
addq $0x10, %rdi
leaq 0x19f50(%rip), %rsi     # 0x28f8e
movl $0x2f, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x18488(%rip), %rsi     # 0x274e0
movl $0x11, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x19f4c(%rip), %rsi     # 0x28fbe
movl $0x3, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x18434(%rip), %rsi     # 0x274c0
movl $0x12, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x19f1c(%rip), %rsi     # 0x28fc2
movl $0xf, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x18420(%rip), %rsi     # 0x274e0
movl $0x11, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1a8ae(%rip), %rsi     # 0x29988
movl $0x1, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
movl %ebp, %esi
callq 0x68a0
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1ad26(%rip), %rsi     # 0x29e2a
movl $0x2, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x183a2(%rip), %rsi     # 0x274c0
movl $0x12, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x1a850(%rip), %rsi     # 0x29988
movl $0x1, %edx
callq 0x6510
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
movl %ebx, %esi
callq 0x68a0
movq 0x8(%rsp), %rdi
addq $0x10, %rdi
leaq 0x198cf(%rip), %rsi     # 0x28a31
movl $0x2, %edx
callq 0x6510
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2094c
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xf194
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
movq 0x28(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0xa059
jmp 0xefee
jmp 0xf1ac
jmp 0xf1ac
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xf1ea
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x28(%rsp)
jmp 0xf1ea
jmp 0xf1ce
jmp 0xf1ce
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xf1ea
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
movq %rbx, %rdi
callq 0x68e0