// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream*, testing::UnitTest const&)
void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
                                                const UnitTest& unit_test) {
  const std::string kTestsuites = "testsuites";

  *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  *stream << "<" << kTestsuites;

  OutputXmlAttribute(stream, kTestsuites, "tests",
                     StreamableToString(unit_test.reportable_test_count()));
  OutputXmlAttribute(stream, kTestsuites, "failures",
                     StreamableToString(unit_test.failed_test_count()));
  OutputXmlAttribute(
      stream, kTestsuites, "disabled",
      StreamableToString(unit_test.reportable_disabled_test_count()));
  OutputXmlAttribute(stream, kTestsuites, "errors", "0");
  OutputXmlAttribute(stream, kTestsuites, "time",
                     FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
  OutputXmlAttribute(
      stream, kTestsuites, "timestamp",
      FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));

  if (GTEST_FLAG_GET(shuffle)) {
    OutputXmlAttribute(stream, kTestsuites, "random_seed",
                       StreamableToString(unit_test.random_seed()));
  }
  *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());

  OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
  *stream << ">\n";

  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
    if (unit_test.GetTestSuite(i)->reportable_test_count() > 0)
      PrintXmlTestSuite(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()) {
    OutputXmlTestSuiteForTestResult(stream, unit_test.ad_hoc_test_result());
  }

  *stream << "</" << kTestsuites << ">\n";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x410, %rsp            # imm = 0x410
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x10e10
movq -0x2e0(%rbp), %rdx
leaq 0x40d50(%rip), %rsi     # 0xcefb1
leaq -0x30(%rbp), %rdi
callq 0x1d070
jmp 0x8e26c
leaq -0x31(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rdi
leaq 0x40d3c(%rip), %rsi     # 0xcefbc
callq 0x10720
jmp 0x8e287
movq -0x8(%rbp), %rdi
leaq 0x40d77(%rip), %rsi     # 0xcf009
callq 0x10720
movq %rax, -0x2e8(%rbp)
jmp 0x8e2a0
movq -0x2e8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10680
jmp 0x8e2b2
movq -0x8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x10e10
movq -0x2f0(%rbp), %rdx
leaq 0x3fced(%rip), %rsi     # 0xcdfc8
leaq -0x68(%rbp), %rdi
callq 0x1d070
jmp 0x8e2e6
movq -0x10(%rbp), %rdi
callq 0x93c60
movl %eax, -0x2fc(%rbp)
jmp 0x8e2f7
movl -0x2fc(%rbp), %eax
movl %eax, -0x94(%rbp)
leaq -0x90(%rbp), %rdi
leaq -0x94(%rbp), %rsi
callq 0xa2c60
jmp 0x8e318
movq -0x2f8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x90(%rbp), %rcx
callq 0x8fd80
jmp 0x8e335
leaq -0x90(%rbp), %rdi
callq 0x10fc8
leaq -0x68(%rbp), %rdi
callq 0x10fc8
leaq -0x69(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x310(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x10e10
movq -0x308(%rbp), %rdx
leaq 0x415e2(%rip), %rsi     # 0xcf961
leaq -0xb8(%rbp), %rdi
callq 0x1d070
jmp 0x8e38d
movq -0x10(%rbp), %rdi
callq 0x8c960
movl %eax, -0x314(%rbp)
jmp 0x8e39e
movl -0x314(%rbp), %eax
movl %eax, -0xe4(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0xe4(%rbp), %rsi
callq 0xa2c60
jmp 0x8e3bf
movq -0x310(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
leaq -0xe0(%rbp), %rcx
callq 0x8fd80
jmp 0x8e3df
leaq -0xe0(%rbp), %rdi
callq 0x10fc8
leaq -0xb8(%rbp), %rdi
callq 0x10fc8
leaq -0xb9(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x328(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x10e10
movq -0x320(%rbp), %rdx
leaq 0x40a87(%rip), %rsi     # 0xceeb6
leaq -0x108(%rbp), %rdi
callq 0x1d070
jmp 0x8e43d
movq -0x10(%rbp), %rdi
callq 0x8d040
movl %eax, -0x32c(%rbp)
jmp 0x8e44e
movl -0x32c(%rbp), %eax
movl %eax, -0x134(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x134(%rbp), %rsi
callq 0xa2c60
jmp 0x8e46f
movq -0x328(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x108(%rbp), %rdx
leaq -0x130(%rbp), %rcx
callq 0x8fd80
jmp 0x8e48f
leaq -0x130(%rbp), %rdi
callq 0x10fc8
leaq -0x108(%rbp), %rdi
callq 0x10fc8
leaq -0x109(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x340(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x10e10
movq -0x338(%rbp), %rdx
leaq 0x409e8(%rip), %rsi     # 0xceec7
leaq -0x158(%rbp), %rdi
callq 0x1d070
jmp 0x8e4ed
leaq -0x181(%rbp), %rdi
movq %rdi, -0x348(%rbp)
callq 0x10e10
movq -0x348(%rbp), %rdx
leaq 0x41260(%rip), %rsi     # 0xcf76e
leaq -0x180(%rbp), %rdi
callq 0x1d070
jmp 0x8e51c
movq -0x340(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x158(%rbp), %rdx
leaq -0x180(%rbp), %rcx
callq 0x8fd80
jmp 0x8e53c
leaq -0x180(%rbp), %rdi
callq 0x10fc8
leaq -0x181(%rbp), %rdi
callq 0x10810
leaq -0x158(%rbp), %rdi
callq 0x10fc8
leaq -0x159(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x358(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x10e10
movq -0x350(%rbp), %rdx
leaq 0x3fa96(%rip), %rsi     # 0xce02e
leaq -0x1a8(%rbp), %rdi
callq 0x1d070
jmp 0x8e5a6
movq -0x10(%rbp), %rdi
callq 0x8cfb0
movq %rax, -0x360(%rbp)
jmp 0x8e5b8
movq -0x360(%rbp), %rsi
leaq -0x1d0(%rbp), %rdi
callq 0x8f590
jmp 0x8e5cd
movq -0x358(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
callq 0x8fd80
jmp 0x8e5ed
leaq -0x1d0(%rbp), %rdi
callq 0x10fc8
leaq -0x1a8(%rbp), %rdi
callq 0x10fc8
leaq -0x1a9(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rax
movq %rax, -0x370(%rbp)
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x10e10
movq -0x368(%rbp), %rdx
leaq 0x40891(%rip), %rsi     # 0xceece
leaq -0x1f0(%rbp), %rdi
callq 0x1d070
jmp 0x8e64b
movq -0x10(%rbp), %rdi
callq 0x93c90
movq %rax, -0x378(%rbp)
jmp 0x8e65d
movq -0x378(%rbp), %rsi
leaq -0x218(%rbp), %rdi
callq 0x8f720
jmp 0x8e672
movq -0x370(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
leaq -0x218(%rbp), %rcx
callq 0x8fd80
jmp 0x8e692
leaq -0x218(%rbp), %rdi
callq 0x10fc8
leaq -0x1f0(%rbp), %rdi
callq 0x10fc8
leaq -0x1f1(%rbp), %rdi
callq 0x10810
testb $0x1, 0x89491(%rip)     # 0x117b4e
je 0x8e9e0
movq -0x8(%rbp), %rax
movq %rax, -0x388(%rbp)
leaq -0x239(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x10e10
movq -0x380(%rbp), %rdx
leaq 0x3f94f(%rip), %rsi     # 0xce03e
leaq -0x238(%rbp), %rdi
callq 0x1d070
jmp 0x8e6fd
movq -0x10(%rbp), %rdi
callq 0x8bf10
movl %eax, -0x38c(%rbp)
jmp 0x8e70e
movl -0x38c(%rbp), %eax
movl %eax, -0x264(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0x264(%rbp), %rsi
callq 0xa2c60
jmp 0x8e72f
movq -0x388(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x238(%rbp), %rdx
leaq -0x260(%rbp), %rcx
callq 0x8fd80
jmp 0x8e74f
leaq -0x260(%rbp), %rdi
callq 0x10fc8
leaq -0x238(%rbp), %rdi
callq 0x10fc8
leaq -0x239(%rbp), %rdi
callq 0x10810
jmp 0x8e9e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x10810
jmp 0x8ed06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e7d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x10fc8
leaq -0x68(%rbp), %rdi
callq 0x10fc8
leaq -0x69(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e82e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e822
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x10fc8
leaq -0xb8(%rbp), %rdi
callq 0x10fc8
leaq -0xb9(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e87f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e873
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x10fc8
leaq -0x108(%rbp), %rdi
callq 0x10fc8
leaq -0x109(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e8dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e8c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x10fc8
leaq -0x181(%rbp), %rdi
callq 0x10810
leaq -0x158(%rbp), %rdi
callq 0x10fc8
leaq -0x159(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e92d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e921
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x10fc8
leaq -0x1a8(%rbp), %rdi
callq 0x10fc8
leaq -0x1a9(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e97e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e972
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x10fc8
leaq -0x1f0(%rbp), %rdi
callq 0x10fc8
leaq -0x1f1(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e9cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8e9c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x10fc8
leaq -0x238(%rbp), %rdi
callq 0x10fc8
leaq -0x239(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
movq -0x8(%rbp), %rax
movq %rax, -0x3a0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x93cc0
movq %rax, -0x398(%rbp)
jmp 0x8e9fd
movq -0x398(%rbp), %rsi
leaq -0x288(%rbp), %rdi
callq 0x93a20
jmp 0x8ea12
movq -0x3a0(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x10680
jmp 0x8ea27
leaq -0x288(%rbp), %rdi
callq 0x10fc8
movq -0x8(%rbp), %rax
movq %rax, -0x3b0(%rbp)
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x10e10
movq -0x3a8(%rbp), %rdx
leaq 0x404a4(%rip), %rsi     # 0xcef03
leaq -0x2a8(%rbp), %rdi
callq 0x1d070
jmp 0x8ea6d
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x10e10
movq -0x3b8(%rbp), %rdx
leaq 0x40556(%rip), %rsi     # 0xcefe4
leaq -0x2d0(%rbp), %rdi
callq 0x1d070
jmp 0x8ea9c
movq -0x3b0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x2a8(%rbp), %rdx
leaq -0x2d0(%rbp), %rcx
callq 0x8fd80
jmp 0x8eabc
leaq -0x2d0(%rbp), %rdi
callq 0x10fc8
leaq -0x2d1(%rbp), %rdi
callq 0x10810
leaq -0x2a8(%rbp), %rdi
callq 0x10fc8
leaq -0x2a9(%rbp), %rdi
callq 0x10810
movq -0x8(%rbp), %rdi
leaq 0x4043f(%rip), %rsi     # 0xcef36
callq 0x10720
jmp 0x8eafe
movl $0x0, -0x2d8(%rbp)
movl -0x2d8(%rbp), %eax
movl %eax, -0x3c0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8c990
movl %eax, -0x3bc(%rbp)
jmp 0x8eb25
movl -0x3c0(%rbp), %eax
movl -0x3bc(%rbp), %ecx
cmpl %ecx, %eax
jge 0x8ec3e
movq -0x10(%rbp), %rdi
movl -0x2d8(%rbp), %esi
callq 0x8c9c0
movq %rax, -0x3c8(%rbp)
jmp 0x8eb51
movq -0x3c8(%rbp), %rdi
callq 0x83fc0
movl %eax, -0x3cc(%rbp)
jmp 0x8eb65
movl -0x3cc(%rbp), %eax
cmpl $0x0, %eax
jle 0x8ec28
movq -0x8(%rbp), %rax
movq %rax, -0x3e0(%rbp)
movq -0x10(%rbp), %rdi
movl -0x2d8(%rbp), %esi
callq 0x8c9c0
movq %rax, -0x3d8(%rbp)
jmp 0x8eb97
movq -0x3d8(%rbp), %rsi
movq -0x3e0(%rbp), %rdi
callq 0x92f80
jmp 0x8ebac
jmp 0x8ec28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x10fc8
jmp 0x8ecfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8ec17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8ebff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x10fc8
leaq -0x2d1(%rbp), %rdi
callq 0x10810
leaq -0x2a8(%rbp), %rdi
callq 0x10fc8
leaq -0x2a9(%rbp), %rdi
callq 0x10810
jmp 0x8ecfd
jmp 0x8ec2a
movl -0x2d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2d8(%rbp)
jmp 0x8eb08
movq -0x10(%rbp), %rdi
callq 0x93cc0
movq %rax, -0x3e8(%rbp)
jmp 0x8ec50
movq -0x3e8(%rbp), %rdi
callq 0x88de0
movb %al, -0x3e9(%rbp)
jmp 0x8ec64
movb -0x3e9(%rbp), %al
testb $0x1, %al
jne 0x8ec70
jmp 0x8eca4
movq -0x8(%rbp), %rax
movq %rax, -0x400(%rbp)
movq -0x10(%rbp), %rdi
callq 0x93cc0
movq %rax, -0x3f8(%rbp)
jmp 0x8ec8d
movq -0x3f8(%rbp), %rsi
movq -0x400(%rbp), %rdi
callq 0x90180
jmp 0x8eca2
jmp 0x8eca4
movq -0x8(%rbp), %rdi
leaq 0x40373(%rip), %rsi     # 0xcf022
callq 0x10720
movq %rax, -0x408(%rbp)
jmp 0x8ecbd
movq -0x408(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10680
movq %rax, -0x410(%rbp)
jmp 0x8ecd6
movq -0x410(%rbp), %rdi
leaq 0x40252(%rip), %rsi     # 0xcef36
callq 0x10720
jmp 0x8eceb
leaq -0x30(%rbp), %rdi
callq 0x10fc8
addq $0x410, %rsp            # imm = 0x410
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x10fc8
movq -0x40(%rbp), %rdi
callq 0x10e00
nop