// File: /workspace/github_cpp_makefile_star2_O2/halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::JsonUnitTestResultPrinter::PrintJsonUnitTest(std::ostream*, testing::UnitTest const&)
void JsonUnitTestResultPrinter::PrintJsonUnitTest(std::ostream* stream,
                                                  const UnitTest& unit_test) {
  const std::string kTestsuites = "testsuites";
  const std::string kIndent = Indent(2);
  *stream << "{\n";

  OutputJsonKey(stream, kTestsuites, "tests", unit_test.reportable_test_count(),
                kIndent);
  OutputJsonKey(stream, kTestsuites, "failures", unit_test.failed_test_count(),
                kIndent);
  OutputJsonKey(stream, kTestsuites, "disabled",
                unit_test.reportable_disabled_test_count(), kIndent);
  OutputJsonKey(stream, kTestsuites, "errors", 0, kIndent);
  if (GTEST_FLAG_GET(shuffle)) {
    OutputJsonKey(stream, kTestsuites, "random_seed", unit_test.random_seed(),
                  kIndent);
  }
  OutputJsonKey(stream, kTestsuites, "timestamp",
                FormatEpochTimeInMillisAsRFC3339(unit_test.start_timestamp()),
                kIndent);
  OutputJsonKey(stream, kTestsuites, "time",
                FormatTimeInMillisAsDuration(unit_test.elapsed_time()), kIndent,
                false);

  *stream << TestPropertiesAsJson(unit_test.ad_hoc_test_result(), kIndent)
          << ",\n";

  OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
  *stream << kIndent << "\"" << kTestsuites << "\": [\n";

  bool comma = false;
  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
    if (unit_test.GetTestSuite(i)->reportable_test_count() > 0) {
      if (comma) {
        *stream << ",\n";
      } else {
        comma = true;
      }
      PrintJsonTestSuite(stream, *unit_test.GetTestSuite(i));
    }
  }

  // If there was a test failure outside of one of the test suites (like in a
  // test environment) include that in the output.
  if (unit_test.ad_hoc_test_result().Failed()) {
    if (comma) {
      *stream << ",\n";
    }
    OutputJsonTestSuiteForTestResult(stream, unit_test.ad_hoc_test_result());
  }

  *stream << "\n"
          << kIndent << "]\n"
          << "}\n";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x16b3f(%rip), %rsi     # 0x5c595
leaq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x1337a
leaq 0x58(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x46dae
leaq 0x16c25(%rip), %rsi     # 0x5c69e
movq %rbx, %rdi
callq 0xd550
leaq 0x15b80(%rip), %rsi     # 0x5b608
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1337a
movq %r14, %rdi
callq 0x45906
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
movl %eax, %ecx
callq 0x461f2
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x1746e(%rip), %rsi     # 0x5cf3b
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1337a
movq %r14, %rdi
callq 0x422d2
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
movl %eax, %ecx
callq 0x461f2
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x16988(%rip), %rsi     # 0x5c49a
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1337a
movq %r14, %rdi
callq 0x426c4
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
movl %eax, %ecx
callq 0x461f2
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x16954(%rip), %rsi     # 0x5c4ab
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1337a
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x461f2
leaq 0x10(%rsp), %rdi
callq 0xdbe8
cmpb $0x1, 0x3edca(%rip)     # 0x8495e
jne 0x45bdb
leaq 0x15ae1(%rip), %rsi     # 0x5b67e
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1337a
movq 0x40(%r14), %rax
movl 0x21c(%rax), %ecx
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
callq 0x461f2
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x168d0(%rip), %rsi     # 0x5c4b2
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1337a
movq 0x40(%r14), %rax
movq 0x228(%rax), %rsi
leaq 0x38(%rsp), %rdi
callq 0x46e3a
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x38(%rsp), %rcx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
callq 0x46060
leaq 0x38(%rsp), %rdi
callq 0xdbe8
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x15a2d(%rip), %rsi     # 0x5b66e
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1337a
movq 0x40(%r14), %rax
movq 0x230(%rax), %rsi
leaq 0x38(%rsp), %rdi
callq 0x46dc6
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x38(%rsp), %rcx
leaq 0x58(%rsp), %r8
movq %rbx, %rdi
xorl %r9d, %r9d
callq 0x46060
leaq 0x38(%rsp), %rdi
callq 0xdbe8
leaq 0x10(%rsp), %rdi
callq 0xdbe8
movl $0x178, %esi            # imm = 0x178
addq 0x40(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x47220
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xd4e0
leaq 0x169ef(%rip), %rsi     # 0x5c6b3
movq %rax, %rdi
callq 0xd550
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x1680a(%rip), %rsi     # 0x5c4e7
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1337a
leaq 0x168d5(%rip), %rsi     # 0x5c5c8
leaq 0x38(%rsp), %rdi
leaq 0x37(%rsp), %rdx
callq 0x1337a
leaq 0x78(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x38(%rsp), %rcx
leaq 0x58(%rsp), %r8
pushq $0x1
popq %r9
movq %rbx, %rdi
callq 0x46060
leaq 0x38(%rsp), %rdi
callq 0xdbe8
leaq 0x10(%rsp), %rdi
callq 0xdbe8
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0xd4e0
leaq 0x16966(%rip), %rsi     # 0x5c6b0
movq %rax, %rdi
callq 0xd550
leaq 0x78(%rsp), %rsi
movq %rax, %rdi
callq 0xd4e0
leaq 0x16909(%rip), %rsi     # 0x5c66f
movq %rax, %rdi
callq 0xd550
xorl %r12d, %r12d
leaq 0x1693b(%rip), %r15     # 0x5c6b3
xorl %ebp, %ebp
movq 0x40(%r14), %rdi
movq 0xc0(%rdi), %rax
subq 0xb8(%rdi), %rax
shrq $0x3, %rax
cmpl %eax, %ebp
jge 0x45de2
movq %r14, %rdi
movl %ebp, %esi
callq 0x422f4
movq %rax, %rdi
callq 0x3d522
testl %eax, %eax
jle 0x45dd8
movb $0x1, %r13b
testb $0x1, %r12b
je 0x45dc1
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd550
movl %r12d, %r13d
movq %r14, %rdi
movl %ebp, %esi
callq 0x422f4
movq %rbx, %rdi
movq %rax, %rsi
callq 0x47bf4
jmp 0x45ddb
movl %r12d, %r13d
incl %ebp
movl %r13d, %r12d
jmp 0x45d7a
addq $0x178, %rdi            # imm = 0x178
callq 0x40042
testb %al, %al
je 0x45e18
testb $0x1, %r12b
je 0x45e07
leaq 0x168b4(%rip), %rsi     # 0x5c6b3
movq %rbx, %rdi
callq 0xd550
movl $0x178, %esi            # imm = 0x178
addq 0x40(%r14), %rsi
movq %rbx, %rdi
callq 0x46374
leaq 0x1333a(%rip), %rsi     # 0x59159
movq %rbx, %rdi
callq 0xd550
leaq 0x58(%rsp), %rsi
movq %rax, %rdi
callq 0xd4e0
leaq 0x16844(%rip), %rsi     # 0x5c67f
movq %rax, %rdi
callq 0xd550
leaq 0x16880(%rip), %rsi     # 0x5c6ca
movq %rax, %rdi
callq 0xd550
leaq 0x58(%rsp), %rdi
callq 0xdbe8
leaq 0x78(%rsp), %rdi
callq 0xdbe8
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x45eb2
jmp 0x45ec5
jmp 0x45e8a
jmp 0x45eb2
jmp 0x45ec5
jmp 0x45ec5
jmp 0x45e8a
jmp 0x45eb2
jmp 0x45ec5
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0xdbe8
jmp 0x45eb5
jmp 0x45eb2
jmp 0x45ec5
jmp 0x45eb2
jmp 0x45ec5
jmp 0x45ec5
jmp 0x45ec5
jmp 0x45ec5
movq %rax, %rbx
jmp 0x45ed2
jmp 0x45eb2
jmp 0x45eb2
jmp 0x45eb2
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xdbe8
jmp 0x45ec8
jmp 0x45ec5
jmp 0x45ec5
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0xdbe8
leaq 0x78(%rsp), %rdi
callq 0xdbe8
movq %rbx, %rdi
callq 0xdaa0