// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq %xmm0, %r15
movq %r15, %r12
btrq $0x3f, %r12
movabsq $0x7fefffffffffffff, %rax # imm = 0x7FEFFFFFFFFFFFFF
cmpq %rax, %r12
jle 0x1ff1d
movq %r14, %rdi
movl $0x22, %esi
callq 0x1dfba
testb %al, %al
je 0x1ffba
movq %r15, %rax
shrq $0x3f, %rax
addq $0x3, %rax
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
cmpq %rcx, %r12
jne 0x1ff75
testq %r15, %r15
leaq 0x24b7c(%rip), %rcx     # 0x44a90
leaq 0x24b76(%rip), %rdx     # 0x44a91
jmp 0x1ff86
leaq 0x24d28(%rip), %rdx     # 0x44c4c
leaq 0x10(%rsp), %r15
movl $0x19, %esi
movq %r15, %rdi
movl $0x11, %ecx
movb $0x1, %al
callq 0x4370
cltq
addq %rsp, %rax
addq $0x10, %rax
leaq 0x8(%rsp), %rsi
movq %r15, (%rsi)
leaq 0x38(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
callq 0x1efe6
movl %eax, %ebp
testb %al, %al
jne 0x1ffcb
callq 0x1e39a
movl $0x1, (%rbx)
movq %rax, 0x8(%rbx)
jmp 0x1ffcb
testq %r15, %r15
leaq 0x24cc8(%rip), %rcx     # 0x44c47
leaq 0x24cc2(%rip), %rdx     # 0x44c48
cmovsq %rcx, %rdx
leaq 0x10(%rsp), %rsi
movq %rdx, (%rsi)
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
callq 0x1f274
testb %al, %al
je 0x1ffba
movq %r14, %rdi
movl $0x22, %esi
callq 0x1dfba
movb $0x1, %bpl
testb %al, %al
jne 0x1ffcb
callq 0x1e39a
movl $0x1, (%rbx)
movq %rax, 0x8(%rbx)
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq