// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::AssertionResult testing::internal::FloatingPointLE<float>(char const*, char const*, float, float)
AssertionResult FloatingPointLE(const char* expr1,
                                const char* expr2,
                                RawType val1,
                                RawType val2) {
  // Returns success if val1 is less than val2,
  if (val1 < val2) {
    return AssertionSuccess();
  }

  // or if val1 is almost equal to val2.
  const FloatingPoint<RawType> lhs(val1), rhs(val2);
  if (lhs.AlmostEquals(rhs)) {
    return AssertionSuccess();
  }

  // Note that the above two checks will both fail if either val1 or
  // val2 is NaN, as the IEEE floating-point standard requires that
  // any predicate involving a NaN must return false.

  ::std::stringstream val1_ss;
  val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
          << val1;

  ::std::stringstream val2_ss;
  val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
          << val2;

  return AssertionFailure()
      << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
      << "  Actual: " << StringStreamToString(&val1_ss) << " vs "
      << StringStreamToString(&val2_ss);
}

// Assembly:
subq $0x428, %rsp            # imm = 0x428
movq %rdi, 0x70(%rsp)
movq %rdi, %rax
movq %rax, 0x78(%rsp)
movq %rdi, 0x420(%rsp)
movq %rsi, 0x418(%rsp)
movq %rdx, 0x410(%rsp)
movss %xmm0, 0x40c(%rsp)
movss %xmm1, 0x408(%rsp)
movss 0x40c(%rsp), %xmm1
movss 0x408(%rsp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x33bf4
movq 0x70(%rsp), %rdi
callq 0x18aa0
jmp 0x33f1f
leaq 0x404(%rsp), %rdi
leaq 0x40c(%rsp), %rsi
callq 0x42540
leaq 0x400(%rsp), %rdi
leaq 0x408(%rsp), %rsi
callq 0x42540
leaq 0x404(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x42560
testb $0x1, %al
jne 0x33c39
jmp 0x33c48
movq 0x70(%rsp), %rdi
callq 0x18aa0
jmp 0x33f1f
leaq 0x278(%rsp), %rdi
callq 0xe680
leaq 0x288(%rsp), %rax
movq %rax, 0x60(%rsp)
movl $0x8, %edi
callq 0x334c0
movq 0x60(%rsp), %rdi
movl %eax, 0x274(%rsp)
movl 0x274(%rsp), %esi
callq 0xf1e0
movq %rax, 0x68(%rsp)
jmp 0x33c8b
movq 0x68(%rsp), %rdi
movss 0x40c(%rsp), %xmm0
callq 0xe700
jmp 0x33ca0
leaq 0xd8(%rsp), %rdi
callq 0xe680
jmp 0x33caf
leaq 0xe8(%rsp), %rax
movq %rax, 0x50(%rsp)
movl $0x8, %edi
callq 0x334c0
movq 0x50(%rsp), %rdi
movl %eax, 0xd4(%rsp)
movl 0xd4(%rsp), %esi
callq 0xf1e0
movq %rax, 0x58(%rsp)
jmp 0x33ce5
movq 0x58(%rsp), %rdi
movss 0x408(%rsp), %xmm0
callq 0xe700
jmp 0x33cfa
leaq 0xc0(%rsp), %rdi
callq 0x18a70
jmp 0x33d09
leaq 0x18dc6(%rip), %rsi     # 0x4cad6
leaq 0xc0(%rsp), %rdi
callq 0x34320
movq %rax, 0x48(%rsp)
jmp 0x33d24
movq 0x48(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x33710
movq %rax, 0x40(%rsp)
jmp 0x33d3d
movq 0x40(%rsp), %rdi
leaq 0x18db1(%rip), %rsi     # 0x4cafa
callq 0x33b00
movq %rax, 0x38(%rsp)
jmp 0x33d55
movq 0x38(%rsp), %rdi
leaq 0x410(%rsp), %rsi
callq 0x33710
movq %rax, 0x30(%rsp)
jmp 0x33d6e
movq 0x30(%rsp), %rdi
leaq 0x193df(%rip), %rsi     # 0x4d159
callq 0x332a0
movq %rax, 0x28(%rsp)
jmp 0x33d86
movq 0x28(%rsp), %rdi
leaq 0x18cba(%rip), %rsi     # 0x4ca4c
callq 0x32fb0
movq %rax, 0x20(%rsp)
jmp 0x33d9e
leaq 0xa0(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x19700
jmp 0x33db5
movq 0x20(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x33040
movq %rax, 0x18(%rsp)
jmp 0x33dce
movq 0x18(%rsp), %rdi
leaq 0x18d1b(%rip), %rsi     # 0x4caf5
callq 0x33830
movq %rax, 0x10(%rsp)
jmp 0x33de6
leaq 0x80(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x19700
jmp 0x33dfd
movq 0x10(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x33040
movq %rax, 0x8(%rsp)
jmp 0x33e16
movq 0x8(%rsp), %rsi
movq 0x70(%rsp), %rdi
callq 0x19860
jmp 0x33e27
leaq 0x80(%rsp), %rdi
callq 0xf698
leaq 0xa0(%rsp), %rdi
callq 0xf698
leaq 0xc0(%rsp), %rdi
callq 0x105e0
leaq 0xd8(%rsp), %rdi
callq 0xe710
leaq 0x278(%rsp), %rdi
callq 0xe710
jmp 0x33f1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x268(%rsp)
movl %eax, 0x264(%rsp)
jmp 0x33f10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x268(%rsp)
movl %eax, 0x264(%rsp)
jmp 0x33f03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x268(%rsp)
movl %eax, 0x264(%rsp)
jmp 0x33ef6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x268(%rsp)
movl %eax, 0x264(%rsp)
jmp 0x33ee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x268(%rsp)
movl %eax, 0x264(%rsp)
leaq 0x80(%rsp), %rdi
callq 0xf698
leaq 0xa0(%rsp), %rdi
callq 0xf698
leaq 0xc0(%rsp), %rdi
callq 0x105e0
leaq 0xd8(%rsp), %rdi
callq 0xe710
leaq 0x278(%rsp), %rdi
callq 0xe710
jmp 0x33f2c
movq 0x78(%rsp), %rax
addq $0x428, %rsp            # imm = 0x428
retq
movq 0x268(%rsp), %rdi
callq 0xf410
nopl (%rax)