// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::AssertionResult testing::(anonymous namespace)::IsSubstringImpl<char const*>(bool, char const*, char const*, char const* const&, char const* const&)
AssertionResult IsSubstringImpl(
    bool expected_to_be_substring,
    const char* needle_expr, const char* haystack_expr,
    const StringType& needle, const StringType& haystack) {
  if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
    return AssertionSuccess();

  const bool is_wide_string = sizeof(needle[0]) > 1;
  const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
  return AssertionFailure()
      << "Value of: " << needle_expr << "\n"
      << "  Actual: " << begin_string_quote << needle << "\"\n"
      << "Expected: " << (expected_to_be_substring ? "" : "not ")
      << "a substring of " << haystack_expr << "\n"
      << "Which is: " << begin_string_quote << haystack << "\"";
}

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0x90(%rsp)
movb %sil, %al
movq %rdi, %rsi
movq %rsi, 0x98(%rsp)
movq %rdi, 0x100(%rsp)
andb $0x1, %al
movb %al, 0xff(%rsp)
movq %rdx, 0xf0(%rsp)
movq %rcx, 0xe8(%rsp)
movq %r8, 0xe0(%rsp)
movq %r9, 0xd8(%rsp)
movq 0xe0(%rsp), %rax
movq (%rax), %rdi
movq 0xd8(%rsp), %rax
movq (%rax), %rsi
callq 0x31e30
andb $0x1, %al
movzbl %al, %eax
movb 0xff(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1b501
movq 0x90(%rsp), %rdi
callq 0x18aa0
jmp 0x1b727
movb $0x0, 0xd7(%rsp)
leaq 0x31626(%rip), %rax     # 0x4cb36
movq %rax, 0xc8(%rsp)
leaq 0xb8(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x18a70
movq 0x80(%rsp), %rdi
leaq 0x31504(%rip), %rsi     # 0x4ca40
callq 0x32fb0
movq %rax, 0x88(%rsp)
jmp 0x1b54b
movq 0x88(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x33710
movq %rax, 0x78(%rsp)
jmp 0x1b567
movq 0x78(%rsp), %rdi
leaq 0x31c02(%rip), %rsi     # 0x4d175
callq 0x330d0
movq %rax, 0x70(%rsp)
jmp 0x1b57f
movq 0x70(%rsp), %rdi
leaq 0x314c1(%rip), %rsi     # 0x4ca4c
callq 0x32fb0
movq %rax, 0x68(%rsp)
jmp 0x1b597
movq 0x68(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x33710
movq %rax, 0x60(%rsp)
jmp 0x1b5b0
movq 0x60(%rsp), %rdi
movq 0xe0(%rsp), %rsi
callq 0x33710
movq %rax, 0x58(%rsp)
jmp 0x1b5c9
movq 0x58(%rsp), %rdi
leaq 0x31c7c(%rip), %rsi     # 0x4d251
callq 0x332a0
movq %rax, 0x50(%rsp)
jmp 0x1b5e1
movq 0x50(%rsp), %rdi
leaq 0x3146b(%rip), %rsi     # 0x4ca58
callq 0x32fb0
movq %rax, 0x48(%rsp)
jmp 0x1b5f9
movq 0x48(%rsp), %rdi
movb 0xff(%rsp), %dl
leaq 0x31b6a(%rip), %rcx     # 0x4d176
leaq 0x32e27(%rip), %rax     # 0x4e43a
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0xa0(%rsp)
leaq 0xa0(%rsp), %rsi
callq 0x33710
movq %rax, 0x40(%rsp)
jmp 0x1b636
movq 0x40(%rsp), %rdi
leaq 0x32dfd(%rip), %rsi     # 0x4e43f
callq 0x42b30
movq %rax, 0x38(%rsp)
jmp 0x1b64e
movq 0x38(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x33710
movq %rax, 0x30(%rsp)
jmp 0x1b667
movq 0x30(%rsp), %rdi
leaq 0x31b02(%rip), %rsi     # 0x4d175
callq 0x330d0
movq %rax, 0x28(%rsp)
jmp 0x1b67f
movq 0x28(%rsp), %rdi
leaq 0x313ea(%rip), %rsi     # 0x4ca75
callq 0x32fb0
movq %rax, 0x20(%rsp)
jmp 0x1b697
movq 0x20(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x33710
movq %rax, 0x18(%rsp)
jmp 0x1b6b0
movq 0x18(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x33710
movq %rax, 0x10(%rsp)
jmp 0x1b6c9
movq 0x10(%rsp), %rdi
leaq 0x31461(%rip), %rsi     # 0x4cb36
callq 0x330d0
movq %rax, 0x8(%rsp)
jmp 0x1b6e1
movq 0x8(%rsp), %rsi
movq 0x90(%rsp), %rdi
callq 0x19860
jmp 0x1b6f5
leaq 0xb8(%rsp), %rdi
callq 0x105e0
jmp 0x1b727
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x105e0
jmp 0x1b737
movq 0x98(%rsp), %rax
addq $0x108, %rsp            # imm = 0x108
retq
movq 0xb0(%rsp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)