// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::PrettyUnitTestResultPrinter::OnTestIterationStart(testing::UnitTest const&, int)
void PrettyUnitTestResultPrinter::OnTestIterationStart(
    const UnitTest& unit_test, int iteration) {
  if (GTEST_FLAG_GET(repeat) != 1)
    printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);

  std::string f = GTEST_FLAG_GET(filter);
  const char* const filter = f.c_str();

  // Prints the filter if it's not *.  This reminds the user that some
  // tests may be skipped.
  if (!String::CStringEquals(filter, kUniversalFilter)) {
    ColoredPrintf(GTestColor::kYellow, "Note: %s filter = %s\n", GTEST_NAME_,
                  filter);
  }

  if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
    const int32_t shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
    ColoredPrintf(GTestColor::kYellow, "Note: This is test shard %d of %s.\n",
                  static_cast<int>(shard_index) + 1,
                  internal::posix::GetEnv(kTestTotalShards));
  }

  if (GTEST_FLAG_GET(shuffle)) {
    ColoredPrintf(GTestColor::kYellow,
                  "Note: Randomizing tests' orders with a seed of %d .\n",
                  unit_test.random_seed());
  }

  ColoredPrintf(GTestColor::kGreen, "[==========] ");
  printf("Running %s from %s.\n",
         FormatTestCount(unit_test.test_to_run_count()).c_str(),
         FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
  fflush(stdout);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
cmpl $0x1, 0x8c73b(%rip)     # 0x117b48
je 0x8b423
movl -0x14(%rbp), %esi
addl $0x1, %esi
leaq 0x43723(%rip), %rdi     # 0xceb3f
movb $0x0, %al
callq 0x10090
leaq -0x38(%rbp), %rdi
leaq 0x8c6ca(%rip), %rsi     # 0x117af8
callq 0x102f0
leaq -0x38(%rbp), %rdi
callq 0x102c0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
leaq 0x413e5(%rip), %rsi     # 0xcc830
callq 0x84170
testb $0x1, %al
jne 0x8b487
movq -0x40(%rbp), %rcx
leaq 0x4370c(%rip), %rsi     # 0xceb6b
leaq 0x4371b(%rip), %rdx     # 0xceb81
xorl %eax, %eax
movl $0x3, %edi
callq 0x8b660
jmp 0x8b474
jmp 0x8b487
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8b646
leaq 0x413b2(%rip), %rdi     # 0xcc840
leaq 0x413cb(%rip), %rsi     # 0xcc860
xorl %edx, %edx
callq 0x8b810
movb %al, -0x91(%rbp)
jmp 0x8b4a4
movb -0x91(%rbp), %al
testb $0x1, %al
jne 0x8b4b0
jmp 0x8b516
leaq 0x413a9(%rip), %rdi     # 0xcc860
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x8be40
movl %eax, -0x98(%rbp)
jmp 0x8b4c9
movl -0x98(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
incl %eax
movl %eax, -0xa4(%rbp)
leaq 0x4135c(%rip), %rdi     # 0xcc840
callq 0xa4300
movq %rax, -0xa0(%rbp)
jmp 0x8b4f2
movq -0xa0(%rbp), %rcx
movl -0xa4(%rbp), %edx
leaq 0x43687(%rip), %rsi     # 0xceb8d
xorl %eax, %eax
movl $0x3, %edi
callq 0x8b660
jmp 0x8b514
jmp 0x8b516
testb $0x1, 0x8c631(%rip)     # 0x117b4e
je 0x8b54d
movq -0x10(%rbp), %rdi
callq 0x8bf10
movl %eax, -0xa8(%rbp)
jmp 0x8b530
movl -0xa8(%rbp), %edx
leaq 0x43674(%rip), %rsi     # 0xcebb1
xorl %eax, %eax
movl $0x3, %edi
callq 0x8b660
jmp 0x8b54b
jmp 0x8b54d
leaq 0x43692(%rip), %rsi     # 0xcebe6
xorl %eax, %eax
movl $0x2, %edi
callq 0x8b660
jmp 0x8b562
movq -0x10(%rbp), %rdi
callq 0x8bf70
movl %eax, -0xac(%rbp)
jmp 0x8b573
movl -0xac(%rbp), %esi
leaq -0x70(%rbp), %rdi
callq 0x8bf30
jmp 0x8b584
leaq -0x70(%rbp), %rdi
callq 0x102c0
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8bfe0
movl %eax, -0xb0(%rbp)
jmp 0x8b5a5
movl -0xb0(%rbp), %esi
leaq -0x90(%rbp), %rdi
callq 0x8bfa0
jmp 0x8b5b9
leaq -0x90(%rbp), %rdi
callq 0x102c0
movq -0xb8(%rbp), %rsi
movq %rax, %rdx
leaq 0x4361e(%rip), %rdi     # 0xcebf4
xorl %eax, %eax
callq 0x10090
jmp 0x8b5df
leaq -0x90(%rbp), %rdi
callq 0x10fc8
leaq -0x70(%rbp), %rdi
callq 0x10fc8
movq 0x8b985(%rip), %rax     # 0x116f80
movq (%rax), %rdi
callq 0x10930
jmp 0x8b605
leaq -0x38(%rbp), %rdi
callq 0x10fc8
addq $0xc0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8b63d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x10fc8
leaq -0x70(%rbp), %rdi
callq 0x10fc8
leaq -0x38(%rbp), %rdi
callq 0x10fc8
movq -0x48(%rbp), %rdi
callq 0x10e00
nopl (%rax,%rax)