// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::PrettyUnitTestResultPrinter::OnTestIterationEnd(testing::UnitTest const&, int)
void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
                                                     int /*iteration*/) {
  ColoredPrintf(GTestColor::kGreen, "[==========] ");
  printf("%s from %s ran.",
         FormatTestCount(unit_test.test_to_run_count()).c_str(),
         FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
  if (GTEST_FLAG_GET(print_time)) {
    printf(" (%s ms total)",
           internal::StreamableToString(unit_test.elapsed_time()).c_str());
  }
  printf("\n");
  ColoredPrintf(GTestColor::kGreen, "[  PASSED  ] ");
  printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());

  const int skipped_test_count = unit_test.skipped_test_count();
  if (skipped_test_count > 0) {
    ColoredPrintf(GTestColor::kGreen, "[  SKIPPED ] ");
    printf("%s, listed below:\n", FormatTestCount(skipped_test_count).c_str());
    PrintSkippedTests(unit_test);
  }

  if (!unit_test.Passed()) {
    PrintFailedTests(unit_test);
    PrintFailedTestSuites(unit_test);
  }

  int num_disabled = unit_test.reportable_disabled_test_count();
  if (num_disabled && !GTEST_FLAG_GET(also_run_disabled_tests)) {
    if (unit_test.Passed()) {
      printf("\n");  // Add a spacer if no FAILURE banner is displayed.
    }
    ColoredPrintf(GTestColor::kYellow, "  YOU HAVE %d DISABLED %s\n\n",
                  num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
  }
  // Ensure that Google Test output is printed before, e.g., heapchecker output.
  fflush(stdout);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
leaq 0x41f69(%rip), %rsi     # 0xcebe6
xorl %eax, %eax
movl $0x2, %edi
callq 0x8b660
movq -0x10(%rbp), %rdi
callq 0x8bf70
movl %eax, %esi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x8bf30
movq -0xf0(%rbp), %rdi
callq 0x102c0
movq %rax, -0xe8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8bfe0
movl %eax, -0xe0(%rbp)
jmp 0x8ccc8
movl -0xe0(%rbp), %esi
leaq -0x58(%rbp), %rdi
callq 0x8bfa0
jmp 0x8ccd9
leaq -0x58(%rbp), %rdi
callq 0x102c0
movq -0xe8(%rbp), %rsi
movq %rax, %rdx
leaq 0x4206e(%rip), %rdi     # 0xced61
xorl %eax, %eax
callq 0x10090
jmp 0x8ccfc
leaq -0x58(%rbp), %rdi
callq 0x10fc8
leaq -0x38(%rbp), %rdi
callq 0x10fc8
testb $0x1, 0x8ae2c(%rip)     # 0x117b41
je 0x8cdc0
movq -0x10(%rbp), %rdi
callq 0x8cfb0
movq %rax, -0x90(%rbp)
leaq -0x88(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
leaq -0x90(%rbp), %rsi
callq 0xa90d0
movq -0xf8(%rbp), %rdi
callq 0x102c0
movq %rax, %rsi
leaq 0x42016(%rip), %rdi     # 0xced71
xorl %eax, %eax
callq 0x10090
jmp 0x8cd64
leaq -0x88(%rbp), %rdi
callq 0x10fc8
jmp 0x8cdc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x8cd95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x10fc8
leaq -0x38(%rbp), %rdi
callq 0x10fc8
jmp 0x8cfa3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x10fc8
jmp 0x8cfa3
leaq 0x3e62f(%rip), %rdi     # 0xcb3f6
xorl %eax, %eax
movb %al, -0xf9(%rbp)
callq 0x10090
movb -0xf9(%rbp), %al
leaq 0x41f9f(%rip), %rsi     # 0xced80
movl $0x2, %edi
callq 0x8b660
movq -0x10(%rbp), %rdi
callq 0x8cfe0
movl %eax, %esi
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x8bf30
movq -0x108(%rbp), %rdi
callq 0x102c0
movq %rax, %rsi
movb -0xf9(%rbp), %al
leaq 0x41d87(%rip), %rdi     # 0xcebac
callq 0x10090
jmp 0x8ce2c
leaq -0xb0(%rbp), %rdi
callq 0x10fc8
movq -0x10(%rbp), %rdi
callq 0x8cc30
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
jle 0x8cefa
leaq 0x41e23(%rip), %rsi     # 0xcec7e
xorl %eax, %eax
movb %al, -0x109(%rbp)
movl $0x2, %edi
callq 0x8b660
movl -0xb4(%rbp), %esi
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x8bf30
movq -0x118(%rbp), %rdi
callq 0x102c0
movq %rax, %rsi
movb -0x109(%rbp), %al
leaq 0x41e40(%rip), %rdi     # 0xcece2
callq 0x10090
jmp 0x8cea9
leaq -0xd8(%rbp), %rdi
callq 0x10fc8
movq -0x10(%rbp), %rdi
callq 0x8cae0
jmp 0x8cefa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x10fc8
jmp 0x8cfa3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x10fc8
jmp 0x8cfa3
movq -0x10(%rbp), %rdi
callq 0x8d010
testb $0x1, %al
jne 0x8cf19
movq -0x10(%rbp), %rdi
callq 0x8c780
movq -0x10(%rbp), %rdi
callq 0x8c9f0
movq -0x10(%rbp), %rdi
callq 0x8d040
movl %eax, -0xdc(%rbp)
cmpl $0x0, -0xdc(%rbp)
je 0x8cf8b
testb $0x1, 0x8ab9b(%rip)     # 0x117ad3
jne 0x8cf8b
movq -0x10(%rbp), %rdi
callq 0x8d010
testb $0x1, %al
jne 0x8cf49
jmp 0x8cf57
leaq 0x3e4a6(%rip), %rdi     # 0xcb3f6
movb $0x0, %al
callq 0x10090
movl -0xdc(%rbp), %edx
movl -0xdc(%rbp), %esi
leaq 0x41da6(%rip), %rcx     # 0xced10
leaq 0x41d9a(%rip), %rax     # 0xced0b
cmpl $0x1, %esi
cmoveq %rax, %rcx
movl $0x3, %edi
leaq 0x41e0a(%rip), %rsi     # 0xced8e
movb $0x0, %al
callq 0x8b660
movq 0x89fee(%rip), %rax     # 0x116f80
movq (%rax), %rdi
callq 0x10930
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x10e00
nopl (%rax)