// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::UnitTestImpl::ListTestsMatchingFilter()
void UnitTestImpl::ListTestsMatchingFilter() {
  // Print at most this many characters for each type/value parameter.
  const int kMaxParamLength = 250;

  for (auto* test_suite : test_suites_) {
    bool printed_test_suite_name = false;

    for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
      const TestInfo* const test_info = test_suite->test_info_list()[j];
      if (test_info->matches_filter_) {
        if (!printed_test_suite_name) {
          printed_test_suite_name = true;
          printf("%s.", test_suite->name());
          if (test_suite->type_param() != nullptr) {
            printf("  # %s = ", kTypeParamLabel);
            // We print the type parameter on a single line to make
            // the output easy to parse by a program.
            PrintOnOneLine(test_suite->type_param(), kMaxParamLength);
          }
          printf("\n");
        }
        printf("  %s", test_info->name());
        if (test_info->value_param() != nullptr) {
          printf("  # %s = ", kValueParamLabel);
          // We print the value parameter on a single line to make the
          // output easy to parse by a program.
          PrintOnOneLine(test_info->value_param(), kMaxParamLength);
        }
        printf("\n");
      }
    }
  }
  fflush(stdout);
#if GTEST_HAS_FILE_SYSTEM
  const std::string& output_format = UnitTestOptions::GetOutputFormat();
  if (output_format == "xml" || output_format == "json") {
    FILE* fileout =
        OpenFileForWriting(UnitTestOptions::GetAbsolutePathToOutputFile());
    std::stringstream stream;
    if (output_format == "xml") {
      XmlUnitTestResultPrinter(
          UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
          .PrintXmlTestsList(&stream, test_suites_);
    } else if (output_format == "json") {
      JsonUnitTestResultPrinter(
          UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
          .PrintJsonTestList(&stream, test_suites_);
    }
    fprintf(fileout, "%s", StringStreamToString(&stream).c_str());
    fclose(fileout);
  }
#endif  // GTEST_HAS_FILE_SYSTEM
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x340, %rsp            # imm = 0x340
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movl $0xfa, -0xc(%rbp)
addq $0xb8, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xab030
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0xab720
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xab750
testb $0x1, %al
jne 0x9c38b
jmp 0x9c4f4
leaq -0x20(%rbp), %rdi
callq 0xab790
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movb $0x0, -0x31(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq -0x30(%rbp), %rdi
callq 0xab7d0
movq %rax, %rdi
callq 0xa89d0
movq %rax, %rcx
movq -0x2f0(%rbp), %rax
cmpq %rcx, %rax
jae 0x9c4e4
movq -0x30(%rbp), %rdi
callq 0xab7d0
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0xa8b20
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
testb $0x1, 0x82(%rax)
je 0x9c4d1
testb $0x1, -0x31(%rbp)
jne 0x9c46f
movb $0x1, -0x31(%rbp)
movq -0x30(%rbp), %rdi
callq 0xa8fe0
movq %rax, %rsi
leaq 0x33053(%rip), %rdi     # 0xcf473
movb $0x0, %al
callq 0x10090
movq -0x30(%rbp), %rdi
callq 0xa9000
cmpq $0x0, %rax
je 0x9c461
leaq 0x3303a(%rip), %rdi     # 0xcf477
leaq 0x3042e(%rip), %rsi     # 0xcc872
movb $0x0, %al
callq 0x10090
movq -0x30(%rbp), %rdi
callq 0xa9000
movq %rax, %rdi
movl $0xfa, %esi
callq 0x9ca60
leaq 0x2ef8e(%rip), %rdi     # 0xcb3f6
movb $0x0, %al
callq 0x10090
movq -0x48(%rbp), %rdi
callq 0xa3360
movq %rax, %rsi
leaq 0x32fff(%rip), %rdi     # 0xcf481
movb $0x0, %al
callq 0x10090
movq -0x48(%rbp), %rdi
callq 0xa96e0
cmpq $0x0, %rax
je 0x9c4c3
leaq 0x32fd8(%rip), %rdi     # 0xcf477
leaq 0x30432(%rip), %rsi     # 0xcc8d8
movb $0x0, %al
callq 0x10090
movq -0x48(%rbp), %rdi
callq 0xa96e0
movq %rax, %rdi
movl $0xfa, %esi
callq 0x9ca60
leaq 0x2ef2c(%rip), %rdi     # 0xcb3f6
movb $0x0, %al
callq 0x10090
jmp 0x9c4d3
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x9c3a7
jmp 0x9c4e6
leaq -0x20(%rbp), %rdi
callq 0xab7f0
jmp 0x9c375
movq 0x7aa85(%rip), %rax     # 0x116f80
movq (%rax), %rdi
callq 0x10930
leaq -0x70(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x81db0
movq -0x300(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
leaq 0x32cf2(%rip), %rsi     # 0xcf21b
callq 0x4dd00
movb %al, -0x2f1(%rbp)
jmp 0x9c536
movb -0x2f1(%rbp), %al
testb $0x1, %al
jne 0x9c569
jmp 0x9c542
movq -0x50(%rbp), %rdi
leaq 0x32cd2(%rip), %rsi     # 0xcf21f
callq 0x4dd00
movb %al, -0x301(%rbp)
jmp 0x9c55a
movb -0x301(%rbp), %al
testb $0x1, %al
jne 0x9c569
jmp 0x9c847
leaq -0xa8(%rbp), %rdi
callq 0x81f10
jmp 0x9c577
leaq -0xa8(%rbp), %rdi
callq 0x8e0b0
movq %rax, -0x310(%rbp)
jmp 0x9c58c
leaq -0xa8(%rbp), %rdi
callq 0x10fc8
movq -0x310(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x10500
jmp 0x9c5b4
movq -0x50(%rbp), %rdi
leaq 0x32c5c(%rip), %rsi     # 0xcf21b
callq 0x4dd00
movb %al, -0x311(%rbp)
jmp 0x9c5cc
movb -0x311(%rbp), %al
testb $0x1, %al
jne 0x9c5db
jmp 0x9c6dd
leaq -0x278(%rbp), %rdi
callq 0x81f10
jmp 0x9c5e9
leaq -0x278(%rbp), %rdi
callq 0x102c0
movq %rax, %rsi
leaq -0x258(%rbp), %rdi
callq 0x8de80
jmp 0x9c606
xorl %eax, %eax
leaq -0x230(%rbp), %rcx
cmpq $0x0, %rcx
movq %rax, -0x320(%rbp)
je 0x9c62e
leaq -0x230(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x320(%rbp)
movq -0x2e8(%rbp), %rsi
movq -0x320(%rbp), %rdi
addq $0xb8, %rsi
callq 0x8ee20
jmp 0x9c64a
leaq -0x258(%rbp), %rdi
callq 0xab810
leaq -0x278(%rbp), %rdi
callq 0x10fc8
jmp 0x9c7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x9c859
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x10fc8
jmp 0x9c859
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x9c839
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x9c6cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x258(%rbp), %rdi
callq 0xab810
leaq -0x278(%rbp), %rdi
callq 0x10fc8
jmp 0x9c839
movq -0x50(%rbp), %rdi
leaq 0x32b37(%rip), %rsi     # 0xcf21f
callq 0x4dd00
movb %al, -0x321(%rbp)
jmp 0x9c6f5
movb -0x321(%rbp), %al
testb $0x1, %al
jne 0x9c704
jmp 0x9c7c1
leaq -0x2c0(%rbp), %rdi
callq 0x81f10
jmp 0x9c712
leaq -0x2c0(%rbp), %rdi
callq 0x102c0
movq %rax, %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x93cf0
jmp 0x9c72f
xorl %eax, %eax
leaq -0x230(%rbp), %rcx
cmpq $0x0, %rcx
movq %rax, -0x330(%rbp)
je 0x9c757
leaq -0x230(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x330(%rbp)
movq -0x2e8(%rbp), %rsi
movq -0x330(%rbp), %rdi
addq $0xb8, %rsi
callq 0x99130
jmp 0x9c773
leaq -0x2a0(%rbp), %rdi
callq 0xab850
leaq -0x2c0(%rbp), %rdi
callq 0x10fc8
jmp 0x9c7c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x9c7b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0xab850
leaq -0x2c0(%rbp), %rdi
callq 0x10fc8
jmp 0x9c839
jmp 0x9c7c3
movq -0x88(%rbp), %rax
movq %rax, -0x338(%rbp)
leaq -0x2e0(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x84590
jmp 0x9c7e6
leaq -0x2e0(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x102c0
movq -0x338(%rbp), %rdi
movq %rax, %rdx
leaq 0x32c79(%rip), %rsi     # 0xcf483
xorl %eax, %eax
callq 0x10bc0
movq -0x340(%rbp), %rdi
callq 0x10fc8
movq -0x88(%rbp), %rdi
callq 0x10730
jmp 0x9c82b
leaq -0x230(%rbp), %rdi
callq 0x10570
jmp 0x9c847
leaq -0x230(%rbp), %rdi
callq 0x10570
jmp 0x9c859
leaq -0x70(%rbp), %rdi
callq 0x10fc8
addq $0x340, %rsp            # imm = 0x340
popq %rbp
retq
leaq -0x70(%rbp), %rdi
callq 0x10fc8
movq -0x78(%rbp), %rdi
callq 0x10e00
nopl (%rax,%rax)