// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::JsonUnitTestResultPrinter::PrintJsonTestSuite(std::ostream*, testing::TestSuite const&)
void JsonUnitTestResultPrinter::PrintJsonTestSuite(
    std::ostream* stream, const TestSuite& test_suite) {
  const std::string kTestsuite = "testsuite";
  const std::string kIndent = Indent(6);

  *stream << Indent(4) << "{\n";
  OutputJsonKey(stream, kTestsuite, "name", test_suite.name(), kIndent);
  OutputJsonKey(stream, kTestsuite, "tests", test_suite.reportable_test_count(),
                kIndent);
  if (!GTEST_FLAG_GET(list_tests)) {
    OutputJsonKey(stream, kTestsuite, "failures",
                  test_suite.failed_test_count(), kIndent);
    OutputJsonKey(stream, kTestsuite, "disabled",
                  test_suite.reportable_disabled_test_count(), kIndent);
    OutputJsonKey(stream, kTestsuite, "errors", 0, kIndent);
    OutputJsonKey(
        stream, kTestsuite, "timestamp",
        FormatEpochTimeInMillisAsRFC3339(test_suite.start_timestamp()),
        kIndent);
    OutputJsonKey(stream, kTestsuite, "time",
                  FormatTimeInMillisAsDuration(test_suite.elapsed_time()),
                  kIndent, false);
    *stream << TestPropertiesAsJson(test_suite.ad_hoc_test_result(), kIndent)
            << ",\n";
  }

  *stream << kIndent << "\"" << kTestsuite << "\": [\n";

  bool comma = false;
  for (int i = 0; i < test_suite.total_test_count(); ++i) {
    if (test_suite.GetTestInfo(i)->is_reportable()) {
      if (comma) {
        *stream << ",\n";
      } else {
        comma = true;
      }
      OutputJsonTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
    }
  }
  *stream << "\n" << kIndent << "]\n" << Indent(4) << "}";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x390, %rsp            # imm = 0x390
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x10e10
movq -0x258(%rbp), %rdx
leaq 0x36767(%rip), %rsi     # 0xcee98
leaq -0x30(%rbp), %rdi
callq 0x1d070
jmp 0x9873c
leaq -0x31(%rbp), %rdi
callq 0x10810
leaq -0x68(%rbp), %rdi
movl $0x6, %esi
callq 0x96b40
jmp 0x98755
movq -0x8(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0x88(%rbp), %rdi
movl $0x4, %esi
callq 0x96b40
jmp 0x98773
movq -0x260(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x10680
movq %rax, -0x268(%rbp)
jmp 0x9878f
movq -0x268(%rbp), %rdi
leaq 0x3691d(%rip), %rsi     # 0xcf0ba
callq 0x10720
jmp 0x987a4
leaq -0x88(%rbp), %rdi
callq 0x10fc8
movq -0x8(%rbp), %rax
movq %rax, -0x278(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x10e10
movq -0x270(%rbp), %rdx
leaq 0x36727(%rip), %rsi     # 0xcef03
leaq -0xa8(%rbp), %rdi
callq 0x1d070
jmp 0x987ea
movq -0x10(%rbp), %rdi
callq 0xa8fe0
movq %rax, -0x280(%rbp)
jmp 0x987fc
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x10e10
movq -0x280(%rbp), %rsi
movq -0x288(%rbp), %rdx
leaq -0xd0(%rbp), %rdi
callq 0x1d070
jmp 0x9882b
movq -0x278(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
leaq -0xd0(%rbp), %rcx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94bf0
jmp 0x98855
leaq -0xd0(%rbp), %rdi
callq 0x10fc8
leaq -0xd1(%rbp), %rdi
callq 0x10810
leaq -0xa8(%rbp), %rdi
callq 0x10fc8
leaq -0xa9(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x10e10
movq -0x290(%rbp), %rdx
leaq 0x35717(%rip), %rsi     # 0xcdfc8
leaq -0xf8(%rbp), %rdi
callq 0x1d070
jmp 0x988bf
movq -0x10(%rbp), %rdi
callq 0x83fc0
movl %eax, -0x29c(%rbp)
jmp 0x988d0
movl -0x29c(%rbp), %ecx
movq -0x298(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x988f9
leaq -0xf8(%rbp), %rdi
callq 0x10fc8
leaq -0xf9(%rbp), %rdi
callq 0x10810
testb $0x1, 0x7f201(%rip)     # 0x117b19
jne 0x98edf
movq -0x8(%rbp), %rax
movq %rax, -0x2b0(%rbp)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x10e10
movq -0x2a8(%rbp), %rdx
leaq 0x37017(%rip), %rsi     # 0xcf961
leaq -0x120(%rbp), %rdi
callq 0x1d070
jmp 0x98958
movq -0x10(%rbp), %rdi
callq 0x83e70
movl %eax, -0x2b4(%rbp)
jmp 0x98969
movl -0x2b4(%rbp), %ecx
movq -0x2b0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x120(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x98992
leaq -0x120(%rbp), %rdi
callq 0x10fc8
leaq -0x121(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x10e10
movq -0x2c0(%rbp), %rdx
leaq 0x364e0(%rip), %rsi     # 0xceeb6
leaq -0x148(%rbp), %rdi
callq 0x1d070
jmp 0x989e4
movq -0x10(%rbp), %rdi
callq 0x83ee0
movl %eax, -0x2cc(%rbp)
jmp 0x989f5
movl -0x2cc(%rbp), %ecx
movq -0x2c8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x148(%rbp), %rdx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x98a1e
leaq -0x148(%rbp), %rdi
callq 0x10fc8
leaq -0x149(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x2e0(%rbp)
leaq -0x171(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x10e10
movq -0x2d8(%rbp), %rdx
leaq 0x36465(%rip), %rsi     # 0xceec7
leaq -0x170(%rbp), %rdi
callq 0x1d070
jmp 0x98a70
movq -0x2e0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x170(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94ed0
jmp 0x98a95
leaq -0x170(%rbp), %rdi
callq 0x10fc8
leaq -0x171(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x2f0(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x10e10
movq -0x2e8(%rbp), %rdx
leaq 0x363f5(%rip), %rsi     # 0xceece
leaq -0x198(%rbp), %rdi
callq 0x1d070
jmp 0x98ae7
movq -0x10(%rbp), %rdi
callq 0xa97e0
movq %rax, -0x2f8(%rbp)
jmp 0x98af9
movq -0x2f8(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x96c90
jmp 0x98b0e
movq -0x2f0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x198(%rbp), %rdx
leaq -0x1c0(%rbp), %rcx
leaq -0x68(%rbp), %r8
movl $0x1, %r9d
callq 0x94bf0
jmp 0x98b38
leaq -0x1c0(%rbp), %rdi
callq 0x10fc8
leaq -0x198(%rbp), %rdi
callq 0x10fc8
leaq -0x199(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x308(%rbp)
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x10e10
movq -0x300(%rbp), %rdx
leaq 0x354a6(%rip), %rsi     # 0xce02e
leaq -0x1e0(%rbp), %rdi
callq 0x1d070
jmp 0x98b96
movq -0x10(%rbp), %rdi
callq 0xa9170
movq %rax, -0x310(%rbp)
jmp 0x98ba8
movq -0x310(%rbp), %rsi
leaq -0x208(%rbp), %rdi
callq 0x96bc0
jmp 0x98bbd
movq -0x308(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
leaq -0x208(%rbp), %rcx
leaq -0x68(%rbp), %r8
xorl %r9d, %r9d
callq 0x94bf0
jmp 0x98be4
leaq -0x208(%rbp), %rdi
callq 0x10fc8
leaq -0x1e0(%rbp), %rdi
callq 0x10fc8
leaq -0x1e1(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x320(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f00
movq %rax, -0x318(%rbp)
jmp 0x98c25
movq -0x318(%rbp), %rsi
leaq -0x228(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x97170
jmp 0x98c3e
movq -0x320(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x10680
movq %rax, -0x328(%rbp)
jmp 0x98c5a
movq -0x328(%rbp), %rdi
leaq 0x36467(%rip), %rsi     # 0xcf0cf
callq 0x10720
jmp 0x98c6f
leaq -0x228(%rbp), %rdi
callq 0x10fc8
jmp 0x98edf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x10810
jmp 0x9911d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x99114
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x10fc8
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98d33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98d1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x10fc8
leaq -0xd1(%rbp), %rdi
callq 0x10810
leaq -0xa8(%rbp), %rdi
callq 0x10fc8
leaq -0xa9(%rbp), %rdi
callq 0x10810
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98d6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x10fc8
leaq -0xf9(%rbp), %rdi
callq 0x10810
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98da1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x10fc8
leaq -0x121(%rbp), %rdi
callq 0x10810
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98dd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x10fc8
leaq -0x149(%rbp), %rdi
callq 0x10810
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x10fc8
leaq -0x171(%rbp), %rdi
callq 0x10810
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98e60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98e54
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 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98eb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x98ea5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x10fc8
leaq -0x1e0(%rbp), %rdi
callq 0x10fc8
leaq -0x1e1(%rbp), %rdi
callq 0x10810
jmp 0x9910b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x10fc8
jmp 0x9910b
movq -0x8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x10680
movq %rax, -0x330(%rbp)
jmp 0x98ef5
movq -0x330(%rbp), %rdi
leaq 0x361c9(%rip), %rsi     # 0xcf0cc
callq 0x10720
movq %rax, -0x338(%rbp)
jmp 0x98f11
movq -0x338(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10680
movq %rax, -0x340(%rbp)
jmp 0x98f2a
movq -0x340(%rbp), %rdi
leaq 0x36153(%rip), %rsi     # 0xcf08b
callq 0x10720
jmp 0x98f3f
movb $0x0, -0x229(%rbp)
movl $0x0, -0x230(%rbp)
movl -0x230(%rbp), %eax
movl %eax, -0x344(%rbp)
movq -0x10(%rbp), %rdi
callq 0x84030
movl %eax, %ecx
movl -0x344(%rbp), %eax
cmpl %ecx, %eax
jge 0x9903a
movq -0x10(%rbp), %rdi
movl -0x230(%rbp), %esi
callq 0x8a9b0
movq %rax, -0x350(%rbp)
jmp 0x98f8d
movq -0x350(%rbp), %rdi
callq 0xa9800
movb %al, -0x351(%rbp)
jmp 0x98fa1
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x98fad
jmp 0x99024
testb $0x1, -0x229(%rbp)
je 0x98fca
movq -0x8(%rbp), %rdi
leaq 0x3610e(%rip), %rsi     # 0xcf0cf
callq 0x10720
jmp 0x98fc8
jmp 0x98fd1
movb $0x1, -0x229(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x368(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8fe0
movq %rax, -0x360(%rbp)
jmp 0x98fee
movq -0x10(%rbp), %rdi
movl -0x230(%rbp), %esi
callq 0x8a9b0
movq %rax, -0x370(%rbp)
jmp 0x99006
movq -0x370(%rbp), %rdx
movq -0x360(%rbp), %rsi
movq -0x368(%rbp), %rdi
callq 0x97850
jmp 0x99022
jmp 0x99024
jmp 0x99026
movl -0x230(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x230(%rbp)
jmp 0x98f50
movq -0x8(%rbp), %rdi
leaq 0x323b1(%rip), %rsi     # 0xcb3f6
callq 0x10720
movq %rax, -0x378(%rbp)
jmp 0x99053
movq -0x378(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x10680
movq %rax, -0x380(%rbp)
jmp 0x9906c
movq -0x380(%rbp), %rdi
leaq 0x36021(%rip), %rsi     # 0xcf09b
callq 0x10720
movq %rax, -0x388(%rbp)
jmp 0x99088
leaq -0x250(%rbp), %rdi
movl $0x4, %esi
callq 0x96b40
jmp 0x9909b
movq -0x388(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x10680
movq %rax, -0x390(%rbp)
jmp 0x990b7
movq -0x390(%rbp), %rdi
leaq 0x3601f(%rip), %rsi     # 0xcf0e4
callq 0x10720
jmp 0x990cc
leaq -0x250(%rbp), %rdi
callq 0x10fc8
leaq -0x68(%rbp), %rdi
callq 0x10fc8
leaq -0x30(%rbp), %rdi
callq 0x10fc8
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x10fc8
leaq -0x68(%rbp), %rdi
callq 0x10fc8
leaq -0x30(%rbp), %rdi
callq 0x10fc8
movq -0x40(%rbp), %rdi
callq 0x10e00
nopw %cs:(%rax,%rax)