// File: /workspace/github_cpp_makefile_star2_O2/ambersun1234[P]AVL_Tree/./googletest/googletest/src/gtest.cc
// Function: testing::internal::JsonUnitTestResultPrinter::OutputJsonTestInfo(std::ostream*, char const*, testing::TestInfo const&)
void JsonUnitTestResultPrinter::OutputJsonTestInfo(::std::ostream* stream,
                                                   const char* test_case_name,
                                                   const TestInfo& test_info) {
  const TestResult& result = *test_info.result();
  const std::string kTestcase = "testcase";
  const std::string kIndent = Indent(10);

  *stream << Indent(8) << "{\n";
  OutputJsonKey(stream, kTestcase, "name", test_info.name(), kIndent);

  if (test_info.value_param() != NULL) {
    OutputJsonKey(stream, kTestcase, "value_param",
                  test_info.value_param(), kIndent);
  }
  if (test_info.type_param() != NULL) {
    OutputJsonKey(stream, kTestcase, "type_param", test_info.type_param(),
                  kIndent);
  }
  if (GTEST_FLAG(list_tests)) {
    OutputJsonKey(stream, kTestcase, "file", test_info.file(), kIndent);
    OutputJsonKey(stream, kTestcase, "line", test_info.line(), kIndent, false);
    *stream << "\n" << Indent(8) << "}";
    return;
  }

  OutputJsonKey(stream, kTestcase, "status",
                test_info.should_run() ? "RUN" : "NOTRUN", kIndent);
  OutputJsonKey(stream, kTestcase, "time",
                FormatTimeInMillisAsDuration(result.elapsed_time()), kIndent);
  OutputJsonKey(stream, kTestcase, "classname", test_case_name, kIndent, false);
  *stream << TestPropertiesAsJson(result, kIndent);

  int failures = 0;
  for (int i = 0; i < result.total_part_count(); ++i) {
    const TestPartResult& part = result.GetTestPartResult(i);
    if (part.failed()) {
      *stream << ",\n";
      if (++failures == 1) {
        *stream << kIndent << "\"" << "failures" << "\": [\n";
      }
      const std::string location =
          internal::FormatCompilerIndependentFileLocation(part.file_name(),
                                                          part.line_number());
      const std::string message = EscapeJson(location + "\n" + part.message());
      *stream << kIndent << "  {\n"
              << kIndent << "    \"failure\": \"" << message << "\",\n"
              << kIndent << "    \"type\": \"\"\n"
              << kIndent << "  }";
    }
  }

  if (failures > 0)
    *stream << "\n" << kIndent << "]";
  *stream << "\n" << Indent(8) << "}";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rdx, 0x20(%rsp)
movq %rsi, %r15
movq %rdi, %r14
leaq 0x12c08(%rip), %rsi     # 0x2a585
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb770
leaq 0x50(%rsp), %rdi
pushq $0xa
popq %rsi
callq 0x1806c
movq %rsp, %rdi
pushq $0x8
popq %rsi
callq 0x1806c
movq %rsp, %rsi
movq %r14, %rdi
callq 0x8410
leaq 0x12d58(%rip), %rsi     # 0x2a70e
movq %rax, %rdi
callq 0x8460
movq %rsp, %rdi
callq 0x8aa8
leaq 0x12bff(%rip), %rsi     # 0x2a5cc
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rsi
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0xb770
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
pushq $0x1
popq %r9
movq %r14, %rdi
callq 0x17646
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
movq 0x20(%rsp), %rax
movq 0x48(%rax), %rax
testq %rax, %rax
je 0x17aaa
cmpq $0x0, (%rax)
je 0x17aaa
leaq 0x12b4b(%rip), %rsi     # 0x2a58e
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
movq 0x20(%rsp), %rax
movq 0x48(%rax), %rax
testq %rax, %rax
je 0x17a66
movq (%rax), %rsi
jmp 0x17a68
xorl %esi, %esi
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0xb770
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
pushq $0x1
popq %r9
movq %r14, %rdi
callq 0x17646
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
movq 0x20(%rsp), %rax
movq 0x40(%rax), %rax
testq %rax, %rax
je 0x17b2c
cmpq $0x0, (%rax)
je 0x17b2c
leaq 0x12ad5(%rip), %rsi     # 0x2a59a
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
movq 0x20(%rsp), %rax
movq 0x40(%rax), %rax
testq %rax, %rax
je 0x17ae8
movq (%rax), %rsi
jmp 0x17aea
xorl %esi, %esi
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0xb770
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
pushq $0x1
popq %r9
movq %r14, %rdi
callq 0x17646
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
cmpb $0x1, 0x27c86(%rip)     # 0x3f7b9
jne 0x17c13
leaq 0x12a65(%rip), %rsi     # 0x2a5a5
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
movq 0x20(%rsp), %rax
movq 0x50(%rax), %rsi
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0xb770
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
pushq $0x1
popq %r9
movq %r14, %rdi
callq 0x17646
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
leaq 0x12a08(%rip), %rsi     # 0x2a5aa
movq %rsp, %rdi
leaq 0x28(%rsp), %rdx
callq 0xb770
movq 0x20(%rsp), %rax
movl 0x70(%rax), %ecx
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x50(%rsp), %r8
movq %r14, %rdi
xorl %r9d, %r9d
callq 0x177d8
movq %rsp, %rdi
callq 0x8aa8
leaq 0x12838(%rip), %rsi     # 0x2a416
movq %r14, %rdi
callq 0x8460
movq %rax, %rbx
movq %rsp, %rdi
pushq $0x8
popq %rsi
callq 0x1806c
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x8410
leaq 0x12b32(%rip), %rsi     # 0x2a738
movq %rax, %rdi
callq 0x8460
jmp 0x17f9b
leaq 0x1299a(%rip), %rsi     # 0x2a5b4
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
leaq 0x12ad1(%rip), %rax     # 0x2a702
leaq 0x12ac7(%rip), %rsi     # 0x2a6ff
movq 0x20(%rsp), %rcx
cmpb $0x0, 0x80(%rcx)
cmovneq %rax, %rsi
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0xb770
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
pushq $0x1
popq %r9
movq %r14, %rdi
callq 0x17646
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
leaq 0x12931(%rip), %rsi     # 0x2a5c2
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
movq 0x20(%rsp), %rax
movq 0x100(%rax), %rsi
leaq 0x28(%rsp), %rdi
callq 0x18086
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
pushq $0x1
popq %r9
movq %r14, %rdi
callq 0x17646
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
leaq 0x128d9(%rip), %rsi     # 0x2a5c7
movq %rsp, %rdi
leaq 0x90(%rsp), %rdx
callq 0xb770
leaq 0x28(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
movq %r15, %rsi
callq 0xb770
leaq 0x70(%rsp), %rsi
movq %rsp, %rdx
leaq 0x28(%rsp), %rcx
leaq 0x50(%rsp), %r8
movq %r14, %rdi
xorl %r9d, %r9d
callq 0x17646
movq 0x20(%rsp), %rax
leaq 0x90(%rax), %rbx
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
movq %rsp, %rdi
leaq 0x50(%rsp), %rdx
movq %rbx, 0xb0(%rsp)
movq %rbx, %rsi
callq 0x180fa
movq %rsp, %rsi
movq %r14, 0x48(%rsp)
movq %r14, %rdi
callq 0x8410
movq %rsp, %rdi
callq 0x8aa8
xorl %r13d, %r13d
leaq 0xb8(%rsp), %r14
xorl %r15d, %r15d
movq 0x20(%rsp), %rcx
movq 0xd0(%rcx), %rax
subq 0xc8(%rcx), %rax
cqto
pushq $0x70
popq %rcx
idivq %rcx
cmpl %eax, %r15d
jge 0x17f2f
movq 0xb0(%rsp), %rdi
movl %r15d, %esi
callq 0x1208a
movq %rax, %r12
cmpl $0x0, (%rax)
je 0x17f27
movq 0x48(%rsp), %rdi
leaq 0x1294b(%rip), %rsi     # 0x2a723
callq 0x8460
testl %r13d, %r13d
jne 0x17e1e
movq 0x48(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x8410
movq %rax, %rdi
leaq 0x12925(%rip), %rsi     # 0x2a720
callq 0x8460
movq %rax, %rdi
leaq 0x1332a(%rip), %rsi     # 0x2b134
callq 0x8460
movq %rax, %rdi
leaq 0x128ed(%rip), %rsi     # 0x2a706
callq 0x8460
movq 0x10(%r12), %rsi
testq %rsi, %rsi
je 0x17e2d
movq 0x8(%r12), %rsi
movl 0x28(%r12), %edx
movq %rsp, %rbp
movq %rbp, %rdi
callq 0x1631f
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x125cc(%rip), %rdx     # 0x2a416
callq 0x1f35e
movq 0x50(%r12), %rdx
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1f33f
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x174ca
movq %rbx, %rdi
callq 0x8aa8
movq %r14, %rdi
callq 0x8aa8
movq 0x48(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x8410
movq %rax, %rdi
leaq 0x1286f(%rip), %rsi     # 0x2a70c
callq 0x8460
movq %rax, %rdi
leaq 0x50(%rsp), %rsi
callq 0x8410
movq %rax, %rdi
leaq 0x12858(%rip), %rsi     # 0x2a711
callq 0x8460
movq %rax, %rdi
leaq 0x28(%rsp), %rsi
callq 0x8410
movq %rax, %rdi
leaq 0x1284d(%rip), %rsi     # 0x2a722
callq 0x8460
movq %rax, %rdi
leaq 0x50(%rsp), %rsi
callq 0x8410
movq %rax, %rdi
leaq 0x12835(%rip), %rsi     # 0x2a726
callq 0x8460
movq %rax, %rdi
leaq 0x50(%rsp), %rsi
callq 0x8410
movq %rax, %rdi
leaq 0x12829(%rip), %rsi     # 0x2a736
callq 0x8460
incl %r13d
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
incl %r15d
jmp 0x17d8c
testl %r13d, %r13d
movq 0x48(%rsp), %rbx
jle 0x17f64
leaq 0x124d6(%rip), %rsi     # 0x2a416
movq %rbx, %rdi
callq 0x8460
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
callq 0x8410
leaq 0x13000(%rip), %rsi     # 0x2af5c
movq %rax, %rdi
callq 0x8460
leaq 0x124ab(%rip), %rsi     # 0x2a416
movq %rbx, %rdi
callq 0x8460
movq %rax, %rbx
movq %rsp, %rdi
pushq $0x8
popq %rsi
callq 0x1806c
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x8410
leaq 0x127a5(%rip), %rsi     # 0x2a738
movq %rax, %rdi
callq 0x8460
movq %rsp, %rdi
callq 0x8aa8
leaq 0x50(%rsp), %rdi
callq 0x8aa8
leaq 0x70(%rsp), %rdi
callq 0x8aa8
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1803b
jmp 0x1802f
jmp 0x1803b
jmp 0x18036
jmp 0x1802f
jmp 0x18036
jmp 0x18036
jmp 0x1802f
jmp 0x18036
jmp 0x1803b
jmp 0x1802f
jmp 0x18036
jmp 0x18036
jmp 0x1803b
jmp 0x18036
jmp 0x1802f
jmp 0x1802f
jmp 0x18036
jmp 0x18036
jmp 0x1803b
jmp 0x1803b
jmp 0x1802f
jmp 0x1802f
jmp 0x18036
jmp 0x18036
jmp 0x1802f
jmp 0x1802f
jmp 0x1803b
jmp 0x1802f
jmp 0x18036
jmp 0x18036
movq %rax, %rbx
jmp 0x1805a
jmp 0x18036
jmp 0x1802f
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x8aa8
jmp 0x18025
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x18043
movq %rax, %rbx
jmp 0x18048
jmp 0x18036
movq %rax, %rbx
jmp 0x18050
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8aa8
movq %rsp, %rdi
callq 0x8aa8
leaq 0x50(%rsp), %rdi
callq 0x8aa8
leaq 0x70(%rsp), %rdi
callq 0x8aa8
movq %rbx, %rdi
callq 0x8980