// File: oknenavin[P]cxon/test/../src/cxon/lang/common/cio/numeric.hxx
// Function: std::enable_if<std::is_floating_point<double>::value, bool>::type cxon::cio::num::imp::number_write_<cxon::json::format_traits, double, cxon::json::indenter<cxon::JSON<cxon::JSON<cxon::json::format_traits>>, std::ostreambuf_iterator<char, std::char_traits<char>>>, cxon::context<cxon::JSON<cxon::json::format_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>>(cxon::json::indenter<cxon::JSON<cxon::JSON<cxon::json::format_traits>>, std::ostreambuf_iterator<char, std::char_traits<char>>>&, double, cxon::context<cxon::JSON<cxon::json::format_traits>, cxon::napa::imp::var<cxon::node::recursion_guard, unsigned int>>&)
inline auto number_write_(O& o, T t, Cx& cx) -> enable_if_t<std::is_floating_point<T>::value, bool> {
                if (std::isfinite(t)) {
                    char s[max_size_<T>::value + 1]; // +1 because of the fall-back implementation (snprintf)
                        constexpr auto fpp = fp_precision::constant<napa_type<Cx>>(std::numeric_limits<T>::max_digits10);
                        auto const r = charconv::to_chars(std::begin(s), std::end(s), t, fpp); CXON_ASSERT(r.ec == std::errc(), "unexpected");
                    return poke<X>(o, s, r.ptr, cx);
                }
                else {
                    CXON_IF_CONSTEXPR (!X::allow_javascript_nans) {
                        CXON_IF_CONSTEXPR (!is_unquoted_key_context<X>::value) {
                            if (!poke<X>(o, X::string::del, cx))                                return false;
                        }
                        if (std::isinf(t)) {
                            if (!poke<X>(o, std::signbit(t) ? "-inf" : "inf", cx))              return false;
                        }
                        else {
                            if (!poke<X>(o, std::signbit(t) ? "-nan" : "nan", cx))              return false;
                        }
                        CXON_IF_CONSTEXPR (!is_unquoted_key_context<X>::value) {
                            if (!poke<X>(o, X::string::del, cx))                                return false;
                        }
                    }
                    CXON_IF_CONSTEXPR ( X::allow_javascript_nans) {
                        if (std::isinf(t)) {
                            if (!poke<X>(o, std::signbit(t) ? "-Infinity" : "Infinity", cx))    return false;
                        }
                        else {
                            if (!poke<X>(o, std::signbit(t) ? "-NaN" : "NaN", cx))              return false;
                        }
                    }
                    return true;
                }
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movsd %xmm0, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x4e1c0
testb $0x1, %al
jne 0x50435
jmp 0x5048e
movl $0x11, -0x44(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x4e250
movq %rax, -0x60(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x4e260
movq -0x60(%rbp), %rdi
movq %rax, %rsi
movsd -0x18(%rbp), %xmm0
movl $0x11, %edx
callq 0x4e200
movq %rax, -0x58(%rbp)
movl %edx, -0x50(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x50570
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x50561
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rdx
movl $0x22, %esi
callq 0x505d0
testb $0x1, %al
jne 0x504ad
movb $0x0, -0x1(%rbp)
jmp 0x50561
movsd -0x18(%rbp), %xmm0
callq 0x4e2e0
testb $0x1, %al
jne 0x504bd
jmp 0x504ff
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x4e370
movq -0x68(%rbp), %rdi
movb %al, %cl
leaq 0x72703(%rip), %rsi     # 0xc2bdf
leaq 0x726fb(%rip), %rax     # 0xc2bde
testb $0x1, %cl
cmovneq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x50620
testb $0x1, %al
jne 0x504fd
movb $0x0, -0x1(%rbp)
jmp 0x50561
jmp 0x50541
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x4e370
movq -0x70(%rbp), %rdi
movb %al, %cl
leaq 0x728a2(%rip), %rsi     # 0xc2dc0
leaq 0x7289a(%rip), %rax     # 0xc2dbf
testb $0x1, %cl
cmovneq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x50620
testb $0x1, %al
jne 0x5053f
movb $0x0, -0x1(%rbp)
jmp 0x50561
jmp 0x50541
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rdx
movl $0x22, %esi
callq 0x505d0
testb $0x1, %al
jne 0x5055d
movb $0x0, -0x1(%rbp)
jmp 0x50561
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)