// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::PrettyUnitTestResultPrinter::PrintFailedTests(testing::UnitTest const&)
void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
  const int failed_test_count = unit_test.failed_test_count();
  ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
  printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());

  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
    const TestSuite& test_suite = *unit_test.GetTestSuite(i);
    if (!test_suite.should_run() || (test_suite.failed_test_count() == 0)) {
      continue;
    }
    for (int j = 0; j < test_suite.total_test_count(); ++j) {
      const TestInfo& test_info = *test_suite.GetTestInfo(j);
      if (!test_info.should_run() || !test_info.result()->Failed()) {
        continue;
      }
      ColoredPrintf(GTestColor::kRed, "[  FAILED  ] ");
      printf("%s.%s", test_suite.name(), test_info.name());
      PrintFullTestCommentIfPresent(test_info);
      printf("\n");
    }
  }
  printf("\n%2d FAILED %s\n", failed_test_count,
         failed_test_count == 1 ? "TEST" : "TESTS");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8c960
movl %eax, -0xc(%rbp)
leaq 0x424ea(%rip), %rsi     # 0xcec8c
xorl %eax, %eax
movb %al, -0x59(%rbp)
movl $0x1, %edi
callq 0x8b660
movl -0xc(%rbp), %esi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x8bf30
movq -0x68(%rbp), %rdi
callq 0x102c0
movq %rax, %rsi
movb -0x59(%rbp), %al
leaq 0x4250b(%rip), %rdi     # 0xcece2
callq 0x10090
jmp 0x8c7de
leaq -0x30(%rbp), %rdi
callq 0x10fc8
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
movl %eax, -0x6c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8c990
movl %eax, %ecx
movl -0x6c(%rbp), %eax
cmpl %ecx, %eax
jge 0x8c922
movq -0x8(%rbp), %rdi
movl -0x40(%rbp), %esi
callq 0x8c9c0
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0xa9190
testb $0x1, %al
jne 0x8c829
jmp 0x8c837
movq -0x48(%rbp), %rdi
callq 0x83e70
cmpl $0x0, %eax
jne 0x8c856
jmp 0x8c914
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x10fc8
jmp 0x8c954
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x70(%rbp)
movq -0x48(%rbp), %rdi
callq 0x84030
movl %eax, %ecx
movl -0x70(%rbp), %eax
cmpl %ecx, %eax
jge 0x8c912
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
callq 0x8a9b0
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0xa91b0
testb $0x1, %al
jne 0x8c898
jmp 0x8c8ad
movq -0x58(%rbp), %rdi
callq 0xa32e0
movq %rax, %rdi
callq 0x88de0
testb $0x1, %al
jne 0x8c8af
jmp 0x8c904
movl $0x1, %edi
leaq 0x423d1(%rip), %rsi     # 0xcec8c
movb $0x0, %al
callq 0x8b660
movq -0x48(%rbp), %rdi
callq 0xa8fe0
movq %rax, -0x78(%rbp)
movq -0x58(%rbp), %rdi
callq 0xa3360
movq -0x78(%rbp), %rsi
movq %rax, %rdx
leaq 0x4240f(%rip), %rdi     # 0xcecf5
movb $0x0, %al
callq 0x10090
movq -0x58(%rbp), %rdi
callq 0x8c560
leaq 0x3eaf9(%rip), %rdi     # 0xcb3f6
movb $0x0, %al
callq 0x10090
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x8c85d
jmp 0x8c914
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x8c7ee
movl -0xc(%rbp), %esi
movl -0xc(%rbp), %ecx
leaq 0x423e1(%rip), %rdx     # 0xced10
leaq 0x423d5(%rip), %rax     # 0xced0b
cmpl $0x1, %ecx
cmoveq %rax, %rdx
leaq 0x423b7(%rip), %rdi     # 0xcecfb
movb $0x0, %al
callq 0x10090
addq $0x80, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x10e00
nopl (%rax)