// File: /workspace/github_c_makefile_star2_O0/deplinenoise[P]tundra/unittest/googletest/googletest/src/gtest.cc
// Function: testing::internal::UnitTestImpl::FilterTests(testing::internal::UnitTestImpl::ReactionToSharding)
int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
  const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
      Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
  const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
      Int32FromEnvOrDie(kTestShardIndex, -1) : -1;

  // num_runnable_tests are the number of tests that will
  // run across all shards (i.e., match filter and are not disabled).
  // num_selected_tests are the number of tests to be run on
  // this shard.
  int num_runnable_tests = 0;
  int num_selected_tests = 0;
  for (size_t i = 0; i < test_cases_.size(); i++) {
    TestCase* const test_case = test_cases_[i];
    const std::string &test_case_name = test_case->name();
    test_case->set_should_run(false);

    for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
      TestInfo* const test_info = test_case->test_info_list()[j];
      const std::string test_name(test_info->name());
      // A test is disabled if test case name or test name matches
      // kDisableTestFilter.
      const bool is_disabled =
          internal::UnitTestOptions::MatchesFilter(test_case_name,
                                                   kDisableTestFilter) ||
          internal::UnitTestOptions::MatchesFilter(test_name,
                                                   kDisableTestFilter);
      test_info->is_disabled_ = is_disabled;

      const bool matches_filter =
          internal::UnitTestOptions::FilterMatchesTest(test_case_name,
                                                       test_name);
      test_info->matches_filter_ = matches_filter;

      const bool is_runnable =
          (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
          matches_filter;

      const bool is_selected = is_runnable &&
          (shard_tests == IGNORE_SHARDING_PROTOCOL ||
           ShouldRunTestOnShard(total_shards, shard_index,
                                num_runnable_tests));

      num_runnable_tests += is_runnable;
      num_selected_tests += is_selected;

      test_info->should_run_ = is_selected;
      test_case->set_should_run(test_case->should_run() || is_selected);
    }
  }
  return num_selected_tests;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb0(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x2614c
leaq 0x63476(%rip), %rdi     # 0x895b0
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x1f2d0
movl %eax, -0xb4(%rbp)
jmp 0x26159
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0xb4(%rbp)
jmp 0x26159
movl -0xb4(%rbp), %eax
movl %eax, -0x10(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x26181
leaq 0x63461(%rip), %rdi     # 0x895d0
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x1f2d0
movl %eax, -0xb8(%rbp)
jmp 0x2618e
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0xb8(%rbp)
jmp 0x2618e
movl -0xb8(%rbp), %eax
movl %eax, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movq $0x0, -0x28(%rbp)
movq -0xb0(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, -0xc0(%rbp)
addq $0xb8, %rdi
callq 0x31240
movq %rax, %rcx
movq -0xc0(%rbp), %rax
cmpq %rcx, %rax
jae 0x26563
movq -0xb0(%rbp), %rdi
addq $0xb8, %rdi
movq -0x28(%rbp), %rsi
callq 0x37600
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x35110
movq %rax, -0xd0(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0xee90
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x30890
jmp 0x26235
leaq -0x59(%rbp), %rdi
callq 0xe850
leaq -0x58(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0x37620
jmp 0x26253
movq $0x0, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x30(%rbp), %rdi
callq 0x37640
movq %rax, -0xd8(%rbp)
jmp 0x26278
movq -0xd8(%rbp), %rdi
callq 0x34a20
movq %rax, %rcx
movq -0xe0(%rbp), %rax
cmpq %rcx, %rax
jae 0x2653e
movq -0x30(%rbp), %rdi
callq 0x37640
movq %rax, -0xe8(%rbp)
jmp 0x262a9
movq -0xe8(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x34bf0
movq (%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
callq 0x33d80
movq %rax, -0xf0(%rbp)
jmp 0x262d2
leaq -0xa1(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0xee90
movq -0xf0(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
callq 0x30890
jmp 0x26301
leaq -0xa1(%rbp), %rdi
callq 0xe850
movq -0x38(%rbp), %rdi
leaq 0x63318(%rip), %rsi     # 0x89630
callq 0x15550
movb %al, -0xf9(%rbp)
jmp 0x26325
movb -0xf9(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xfa(%rbp)
jne 0x26363
jmp 0x2633a
leaq 0x632ef(%rip), %rsi     # 0x89630
leaq -0xa0(%rbp), %rdi
callq 0x15550
movb %al, -0xfb(%rbp)
jmp 0x26355
movb -0xfb(%rbp), %al
movb %al, -0xfa(%rbp)
jmp 0x26363
movb -0xfa(%rbp), %al
andb $0x1, %al
movb %al, -0xa2(%rbp)
movb -0xa2(%rbp), %cl
movq -0x80(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x81(%rax)
movq -0x38(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x155d0
movb %al, -0xfc(%rbp)
jmp 0x2639c
movb -0xfc(%rbp), %al
andb $0x1, %al
movb %al, -0xa3(%rbp)
movb -0xa3(%rbp), %cl
movq -0x80(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x82(%rax)
testb $0x1, 0x9b526(%rip)     # 0xc18ea
jne 0x263d7
xorl %eax, %eax
testb $0x1, -0xa2(%rbp)
movb %al, -0xfd(%rbp)
jne 0x263e3
movb -0xa3(%rbp), %al
movb %al, -0xfd(%rbp)
movb -0xfd(%rbp), %al
andb $0x1, %al
movb %al, -0xa4(%rbp)
xorl %eax, %eax
testb $0x1, -0xa4(%rbp)
movb %al, -0xfe(%rbp)
je 0x26430
movb $0x1, %al
cmpl $0x1, -0xc(%rbp)
movb %al, -0xff(%rbp)
je 0x26424
movl -0x10(%rbp), %edi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
callq 0x26c30
movb %al, -0xff(%rbp)
movb -0xff(%rbp), %al
movb %al, -0xfe(%rbp)
movb -0xfe(%rbp), %al
andb $0x1, %al
movb %al, -0xa5(%rbp)
movzbl -0xa4(%rbp), %ecx
andl $0x1, %ecx
movl -0x18(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x18(%rbp)
movzbl -0xa5(%rbp), %ecx
andl $0x1, %ecx
movl -0x1c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x1c(%rbp)
movb -0xa5(%rbp), %cl
movq -0x80(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x80(%rax)
movq -0x30(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x352b0
movb %al, -0x100(%rbp)
jmp 0x2648d
movb -0x100(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x109(%rbp)
jne 0x264ae
jmp 0x264a2
movb -0xa5(%rbp), %al
movb %al, -0x109(%rbp)
movq -0x108(%rbp), %rdi
movb -0x109(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x37620
jmp 0x264c8
leaq -0xa0(%rbp), %rdi
callq 0xf058
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x2625b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0xe850
jmp 0x2656f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xa1(%rbp), %rdi
callq 0xe850
jmp 0x26558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0xf058
jmp 0x26558
leaq -0x58(%rbp), %rdi
callq 0xf058
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x261ad
leaq -0x58(%rbp), %rdi
callq 0xf058
jmp 0x2656f
movl -0x1c(%rbp), %eax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0xee80
nopl (%rax,%rax)