// File: /workspace/github_c_makefile_star2_O0/deplinenoise[P]tundra/unittest/googletest/googletest/src/gtest.cc
// Function: testing::internal::XmlUnitTestResultPrinter::EscapeXml(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)
std::string XmlUnitTestResultPrinter::EscapeXml(
    const std::string& str, bool is_attribute) {
  Message m;

  for (size_t i = 0; i < str.size(); ++i) {
    const char ch = str[i];
    switch (ch) {
      case '<':
        m << "&lt;";
        break;
      case '>':
        m << "&gt;";
        break;
      case '&':
        m << "&amp;";
        break;
      case '\'':
        if (is_attribute)
          m << "&apos;";
        else
          m << '\'';
        break;
      case '"':
        if (is_attribute)
          m << "&quot;";
        else
          m << '"';
        break;
      default:
        if (IsValidXmlCharacter(ch)) {
          if (is_attribute && IsNormalizableWhitespace(ch))
            m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
              << ";";
          else
            m << ch;
        }
        break;
    }
  }

  return m.GetString();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x70(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x68(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x16d70
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe4d0
movq %rax, %rcx
movq -0x78(%rbp), %rax
cmpq %rcx, %rax
jae 0x21ba8
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0xe880
movb (%rax), %al
movb %al, -0x29(%rbp)
movsbl -0x29(%rbp), %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, -0x80(%rbp)
subl $0x1c, %eax
ja 0x21ac1
movq -0x80(%rbp), %rax
leaq 0x67656(%rip), %rcx     # 0x89050
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x694c1(%rip), %rsi     # 0x8aecb
leaq -0x20(%rbp), %rdi
callq 0x355e0
jmp 0x21a15
jmp 0x21b95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x21bcd
leaq 0x6949e(%rip), %rsi     # 0x8aed0
leaq -0x20(%rbp), %rdi
callq 0x355e0
jmp 0x21a3d
jmp 0x21b95
leaq 0x6948c(%rip), %rsi     # 0x8aed5
leaq -0x20(%rbp), %rdi
callq 0x33ea0
jmp 0x21a54
jmp 0x21b95
testb $0x1, -0x11(%rbp)
je 0x21a73
leaq 0x69475(%rip), %rsi     # 0x8aedb
leaq -0x20(%rbp), %rdi
callq 0x35620
jmp 0x21a71
jmp 0x21a88
movb $0x27, -0x3d(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x3d(%rbp), %rsi
callq 0x35660
jmp 0x21a86
jmp 0x21a88
jmp 0x21b95
testb $0x1, -0x11(%rbp)
je 0x21aa7
leaq 0x69448(%rip), %rsi     # 0x8aee2
leaq -0x20(%rbp), %rdi
callq 0x35620
jmp 0x21aa5
jmp 0x21abc
movb $0x22, -0x3e(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x3e(%rbp), %rsi
callq 0x35660
jmp 0x21aba
jmp 0x21abc
jmp 0x21b95
movsbl -0x29(%rbp), %edi
callq 0x356a0
movb %al, -0x81(%rbp)
jmp 0x21ad2
movb -0x81(%rbp), %al
testb $0x1, %al
jne 0x21ae1
jmp 0x21b93
testb $0x1, -0x11(%rbp)
je 0x21b80
movsbl -0x29(%rbp), %edi
callq 0x356e0
movb %al, -0x82(%rbp)
jmp 0x21afc
movb -0x82(%rbp), %al
testb $0x1, %al
jne 0x21b08
jmp 0x21b80
leaq 0x693da(%rip), %rsi     # 0x8aee9
leaq -0x20(%rbp), %rdi
callq 0x31e80
movq %rax, -0x90(%rbp)
jmp 0x21b21
movzbl -0x29(%rbp), %esi
leaq -0x60(%rbp), %rdi
callq 0x1ba60
jmp 0x21b30
movq -0x90(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x30b60
movq %rax, -0x98(%rbp)
jmp 0x21b49
movq -0x98(%rbp), %rdi
leaq 0x69382(%rip), %rsi     # 0x8aed9
callq 0x30ba0
jmp 0x21b5e
leaq -0x60(%rbp), %rdi
callq 0xf058
jmp 0x21b91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xf058
jmp 0x21bcd
leaq -0x20(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x35660
jmp 0x21b8f
jmp 0x21b91
jmp 0x21b93
jmp 0x21b95
jmp 0x21b97
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x219a6
movq -0x70(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x170f0
jmp 0x21bb7
leaq -0x20(%rbp), %rdi
callq 0x31070
movq -0x68(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0x31070
movq -0x38(%rbp), %rdi
callq 0xee80
nop