// File: 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
movq %rsp, %rbp
subq $0x380, %rsp            # imm = 0x380
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x10e10
movq -0x238(%rbp), %rdx
leaq 0x3b060(%rip), %rsi     # 0xcefb1
leaq -0x30(%rbp), %rdi
callq 0x1d070
jmp 0x93f5c
leaq -0x31(%rbp), %rdi
callq 0x10810
leaq -0x68(%rbp), %rdi
movl $0x2, %esi
callq 0x96b40
jmp 0x93f75
movq -0x8(%rbp), %rdi
leaq 0x3b13a(%rip), %rsi     # 0xcf0ba
callq 0x10720
jmp 0x93f87
movq -0x8(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x10e10
movq -0x240(%rbp), %rdx
leaq 0x3a015(%rip), %rsi     # 0xcdfc8
leaq -0x88(%rbp), %rdi
callq 0x1d070
jmp 0x93fc1
movq -0x10(%rbp), %rdi
callq 0x93c60
movl %eax, -0x24c(%rbp)
jmp 0x93fd2
movl -0x24c(%rbp), %ecx
movq -0x248(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x93ffb
leaq -0x88(%rbp), %rdi
callq 0x10fc8
leaq -0x89(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x10e10
movq -0x258(%rbp), %rdx
leaq 0x3b922(%rip), %rsi     # 0xcf961
leaq -0xb0(%rbp), %rdi
callq 0x1d070
jmp 0x9404d
movq -0x10(%rbp), %rdi
callq 0x8c960
movl %eax, -0x264(%rbp)
jmp 0x9405e
movl -0x264(%rbp), %ecx
movq -0x260(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x94087
leaq -0xb0(%rbp), %rdi
callq 0x10fc8
leaq -0xb1(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x278(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x10e10
movq -0x270(%rbp), %rdx
leaq 0x3adeb(%rip), %rsi     # 0xceeb6
leaq -0xd8(%rbp), %rdi
callq 0x1d070
jmp 0x940d9
movq -0x10(%rbp), %rdi
callq 0x8d040
movl %eax, -0x27c(%rbp)
jmp 0x940ea
movl -0x27c(%rbp), %ecx
movq -0x278(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x94113
leaq -0xd8(%rbp), %rdi
callq 0x10fc8
leaq -0xd9(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x290(%rbp)
leaq -0x101(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x10e10
movq -0x288(%rbp), %rdx
leaq 0x3ad70(%rip), %rsi     # 0xceec7
leaq -0x100(%rbp), %rdi
callq 0x1d070
jmp 0x94165
movq -0x290(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x100(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x9418a
leaq -0x100(%rbp), %rdi
callq 0x10fc8
leaq -0x101(%rbp), %rdi
callq 0x10810
testb $0x1, 0x839a5(%rip)     # 0x117b4e
je 0x9438f
movq -0x8(%rbp), %rax
movq %rax, -0x2a0(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x10e10
movq -0x298(%rbp), %rdx
leaq 0x39e63(%rip), %rsi     # 0xce03e
leaq -0x128(%rbp), %rdi
callq 0x1d070
jmp 0x941e9
movq -0x10(%rbp), %rdi
callq 0x8bf10
movl %eax, -0x2a4(%rbp)
jmp 0x941fa
movl -0x2a4(%rbp), %ecx
movq -0x2a0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x128(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x94223
leaq -0x128(%rbp), %rdi
callq 0x10fc8
leaq -0x129(%rbp), %rdi
callq 0x10810
jmp 0x9438f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x10810
jmp 0x949a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9499e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x942a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x10fc8
leaq -0x89(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x942d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x10fc8
leaq -0xb1(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94310
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x10fc8
leaq -0xd9(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94347
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x10fc8
leaq -0x101(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9437e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x10fc8
leaq -0x129(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq -0x8(%rbp), %rax
movq %rax, -0x2b8(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x10e10
movq -0x2b0(%rbp), %rdx
leaq 0x3ab13(%rip), %rsi     # 0xceece
leaq -0x150(%rbp), %rdi
callq 0x1d070
jmp 0x943c9
movq -0x10(%rbp), %rdi
callq 0x93c90
movq %rax, -0x2c0(%rbp)
jmp 0x943db
movq -0x2c0(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x96c90
jmp 0x943f0
movq -0x2b8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x150(%rbp), %rdx
leaq -0x178(%rbp), %rcx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94bf0
jmp 0x9441a
leaq -0x178(%rbp), %rdi
callq 0x10fc8
leaq -0x150(%rbp), %rdi
callq 0x10fc8
leaq -0x151(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x2d0(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x10e10
movq -0x2c8(%rbp), %rdx
leaq 0x39bc4(%rip), %rsi     # 0xce02e
leaq -0x198(%rbp), %rdi
callq 0x1d070
jmp 0x94478
movq -0x10(%rbp), %rdi
callq 0x8cfb0
movq %rax, -0x2d8(%rbp)
jmp 0x9448a
movq -0x2d8(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x96bc0
jmp 0x9449f
movq -0x2d0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x198(%rbp), %rdx
leaq -0x1c0(%rbp), %rcx
leaq -0x68(%rbp), %r8
xorl %r9d, %r9d
callq 0x94bf0
jmp 0x944c6
leaq -0x1c0(%rbp), %rdi
callq 0x10fc8
leaq -0x198(%rbp), %rdi
callq 0x10fc8
leaq -0x199(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x93cc0
movq %rax, -0x2e0(%rbp)
jmp 0x94507
movq -0x2e0(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x97170
jmp 0x94520
movq -0x2e8(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x10680
movq %rax, -0x2f0(%rbp)
jmp 0x9453c
movq -0x2f0(%rbp), %rdi
leaq 0x3ab85(%rip), %rsi     # 0xcf0cf
callq 0x10720
jmp 0x94551
leaq -0x1e0(%rbp), %rdi
callq 0x10fc8
movq -0x8(%rbp), %rax
movq %rax, -0x300(%rbp)
leaq -0x201(%rbp), %rdi
movq %rdi, -0x2f8(%rbp)
callq 0x10e10
movq -0x2f8(%rbp), %rdx
leaq 0x3a97a(%rip), %rsi     # 0xcef03
leaq -0x200(%rbp), %rdi
callq 0x1d070
jmp 0x94597
leaq -0x229(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x10e10
movq -0x308(%rbp), %rdx
leaq 0x3aa2c(%rip), %rsi     # 0xcefe4
leaq -0x228(%rbp), %rdi
callq 0x1d070
jmp 0x945c6
movq -0x300(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x200(%rbp), %rdx
leaq -0x228(%rbp), %rcx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94bf0
jmp 0x945f0
leaq -0x228(%rbp), %rdi
callq 0x10fc8
leaq -0x229(%rbp), %rdi
callq 0x10810
leaq -0x200(%rbp), %rdi
callq 0x10fc8
leaq -0x201(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x10680
movq %rax, -0x310(%rbp)
jmp 0x94636
movq -0x310(%rbp), %rdi
leaq 0x3aa88(%rip), %rsi     # 0xcf0cc
callq 0x10720
movq %rax, -0x318(%rbp)
jmp 0x94652
movq -0x318(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10680
movq %rax, -0x320(%rbp)
jmp 0x9466b
movq -0x320(%rbp), %rdi
leaq 0x3aa12(%rip), %rsi     # 0xcf08b
callq 0x10720
jmp 0x94680
movb $0x0, -0x22a(%rbp)
movl $0x0, -0x230(%rbp)
movl -0x230(%rbp), %eax
movl %eax, -0x328(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8c990
movl %eax, -0x324(%rbp)
jmp 0x946ae
movl -0x328(%rbp), %eax
movl -0x324(%rbp), %ecx
cmpl %ecx, %eax
jge 0x94894
movq -0x10(%rbp), %rdi
movl -0x230(%rbp), %esi
callq 0x8c9c0
movq %rax, -0x330(%rbp)
jmp 0x946da
movq -0x330(%rbp), %rdi
callq 0x83fc0
movl %eax, -0x334(%rbp)
jmp 0x946ee
movl -0x334(%rbp), %eax
cmpl $0x0, %eax
jle 0x9487e
testb $0x1, -0x22a(%rbp)
je 0x9483d
movq -0x8(%rbp), %rdi
leaq 0x3a9ba(%rip), %rsi     # 0xcf0cf
callq 0x10720
jmp 0x9471c
jmp 0x94844
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94761
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94755
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x10fc8
leaq -0x150(%rbp), %rdi
callq 0x10fc8
leaq -0x151(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x947b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x947a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x10fc8
leaq -0x198(%rbp), %rdi
callq 0x10fc8
leaq -0x199(%rbp), %rdi
callq 0x10810
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x10fc8
jmp 0x94995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9482c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94814
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x10fc8
leaq -0x229(%rbp), %rdi
callq 0x10810
leaq -0x200(%rbp), %rdi
callq 0x10fc8
leaq -0x201(%rbp), %rdi
callq 0x10810
jmp 0x94995
movb $0x1, -0x22a(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0x10(%rbp), %rdi
movl -0x230(%rbp), %esi
callq 0x8c9c0
movq %rax, -0x340(%rbp)
jmp 0x94867
movq -0x340(%rbp), %rsi
movq -0x348(%rbp), %rdi
callq 0x98700
jmp 0x9487c
jmp 0x9487e
jmp 0x94880
movl -0x230(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x230(%rbp)
jmp 0x94691
movq -0x10(%rbp), %rdi
callq 0x93cc0
movq %rax, -0x350(%rbp)
jmp 0x948a6
movq -0x350(%rbp), %rdi
callq 0x88de0
movb %al, -0x351(%rbp)
jmp 0x948ba
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x948c6
jmp 0x94917
testb $0x1, -0x22a(%rbp)
je 0x948e3
movq -0x8(%rbp), %rdi
leaq 0x3a7f5(%rip), %rsi     # 0xcf0cf
callq 0x10720
jmp 0x948e1
jmp 0x948e3
movq -0x8(%rbp), %rax
movq %rax, -0x368(%rbp)
movq -0x10(%rbp), %rdi
callq 0x93cc0
movq %rax, -0x360(%rbp)
jmp 0x94900
movq -0x360(%rbp), %rsi
movq -0x368(%rbp), %rdi
callq 0x95190
jmp 0x94915
jmp 0x94917
movq -0x8(%rbp), %rdi
leaq 0x36ad4(%rip), %rsi     # 0xcb3f6
callq 0x10720
movq %rax, -0x370(%rbp)
jmp 0x94930
movq -0x370(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x10680
movq %rax, -0x378(%rbp)
jmp 0x94949
movq -0x378(%rbp), %rdi
leaq 0x3a744(%rip), %rsi     # 0xcf09b
callq 0x10720
movq %rax, -0x380(%rbp)
jmp 0x94965
movq -0x380(%rbp), %rdi
leaq 0x3a773(%rip), %rsi     # 0xcf0e6
callq 0x10720
jmp 0x9497a
leaq -0x68(%rbp), %rdi
callq 0x10fc8
leaq -0x30(%rbp), %rdi
callq 0x10fc8
addq $0x380, %rsp            # imm = 0x380
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x10fc8
leaq -0x30(%rbp), %rdi
callq 0x10fc8
movq -0x40(%rbp), %rdi
callq 0x10e00