// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::DoubleNearPredFormat(char const*, char const*, char const*, double, double, double)
AssertionResult DoubleNearPredFormat(const char* expr1,
                                     const char* expr2,
                                     const char* abs_error_expr,
                                     double val1,
                                     double val2,
                                     double abs_error) {
  const double diff = fabs(val1 - val2);
  if (diff <= abs_error) return AssertionSuccess();

  // TODO(wan): do not print the value of an expression if it's
  // already a literal.
  return AssertionFailure()
      << "The difference between " << expr1 << " and " << expr2
      << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
      << expr1 << " evaluates to " << val1 << ",\n"
      << expr2 << " evaluates to " << val2 << ", and\n"
      << abs_error_expr << " evaluates to " << abs_error << ".";
}

// Assembly:
subq $0x128, %rsp            # imm = 0x128
movq %rdi, 0xb8(%rsp)
movq %rdi, %rax
movq %rax, 0xc0(%rsp)
movq %rdi, 0x120(%rsp)
movq %rsi, 0x118(%rsp)
movq %rdx, 0x110(%rsp)
movq %rcx, 0x108(%rsp)
movsd %xmm0, 0x100(%rsp)
movsd %xmm1, 0xf8(%rsp)
movsd %xmm2, 0xf0(%rsp)
movsd 0x100(%rsp), %xmm0
subsd 0xf8(%rsp), %xmm0
movaps 0x315b2(%rip), %xmm1    # 0x4b440
pand %xmm1, %xmm0
movsd %xmm0, 0xe8(%rsp)
movsd 0xe8(%rsp), %xmm1
movsd 0xf0(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x19ec5
movq 0xb8(%rsp), %rdi
callq 0x18aa0
jmp 0x1a149
leaq 0xd8(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x18a70
movq 0xa8(%rsp), %rdi
leaq 0x32b97(%rip), %rsi     # 0x4ca80
callq 0x33680
movq %rax, 0xb0(%rsp)
jmp 0x19ef8
movq 0xb0(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x33710
movq %rax, 0xa0(%rsp)
jmp 0x19f17
movq 0xa0(%rsp), %rdi
leaq 0x32b72(%rip), %rsi     # 0x4ca98
callq 0x337a0
movq %rax, 0x98(%rsp)
jmp 0x19f35
movq 0x98(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x33710
movq %rax, 0x90(%rsp)
jmp 0x19f54
movq 0x90(%rsp), %rdi
leaq 0x32b3b(%rip), %rsi     # 0x4ca9e
callq 0x33830
movq %rax, 0x88(%rsp)
jmp 0x19f72
movq 0x88(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x338c0
movq %rax, 0x80(%rsp)
jmp 0x19f91
movq 0x80(%rsp), %rdi
leaq 0x32b03(%rip), %rsi     # 0x4caa3
callq 0x33950
movq %rax, 0x78(%rsp)
jmp 0x19fac
movq 0x78(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x33710
movq %rax, 0x70(%rsp)
jmp 0x19fc5
movq 0x70(%rsp), %rdi
leaq 0x32ae3(%rip), %rsi     # 0x4cab4
callq 0x339e0
movq %rax, 0x68(%rsp)
jmp 0x19fdd
movq 0x68(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x33710
movq %rax, 0x60(%rsp)
jmp 0x19ff6
movq 0x60(%rsp), %rdi
leaq 0x32abb(%rip), %rsi     # 0x4cabd
callq 0x33a70
movq %rax, 0x58(%rsp)
jmp 0x1a00e
movq 0x58(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x338c0
movq %rax, 0x50(%rsp)
jmp 0x1a027
movq 0x50(%rsp), %rdi
leaq 0x32a99(%rip), %rsi     # 0x4cacc
callq 0x332a0
movq %rax, 0x48(%rsp)
jmp 0x1a03f
movq 0x48(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x33710
movq %rax, 0x40(%rsp)
jmp 0x1a058
movq 0x40(%rsp), %rdi
leaq 0x32a59(%rip), %rsi     # 0x4cabd
callq 0x33a70
movq %rax, 0x38(%rsp)
jmp 0x1a070
movq 0x38(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x338c0
movq %rax, 0x30(%rsp)
jmp 0x1a089
movq 0x30(%rsp), %rdi
leaq 0x32a3a(%rip), %rsi     # 0x4cacf
callq 0x33b00
movq %rax, 0x28(%rsp)
jmp 0x1a0a1
movq 0x28(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x33710
movq %rax, 0x20(%rsp)
jmp 0x1a0ba
movq 0x20(%rsp), %rdi
leaq 0x329f7(%rip), %rsi     # 0x4cabd
callq 0x33a70
movq %rax, 0x18(%rsp)
jmp 0x1a0d2
movq 0x18(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x338c0
movq %rax, 0x10(%rsp)
jmp 0x1a0eb
movq 0x10(%rsp), %rdi
leaq 0x32866(%rip), %rsi     # 0x4c95d
callq 0x330d0
movq %rax, 0x8(%rsp)
jmp 0x1a103
movq 0x8(%rsp), %rsi
movq 0xb8(%rsp), %rdi
callq 0x19860
jmp 0x1a117
leaq 0xd8(%rsp), %rdi
callq 0x105e0
jmp 0x1a149
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd0(%rsp)
movl %eax, 0xcc(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x105e0
jmp 0x1a159
movq 0xc0(%rsp), %rax
addq $0x128, %rsp            # imm = 0x128
retq
movq 0xd0(%rsp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)