// File: /workspace/github_cpp_makefile_star2_O2/oknenavin[P]cxon/test/../src/cxon/lang/common/cio/numeric.hxx
// Function: cxon::charconv::imp::from_chars_result cxon::cio::num::imp::from_chars_<cxon::json::format_traits, double>(char const*, char const*, double&)
inline charconv::imp::from_chars_result from_chars_(const char* b, const char* e, T& t) noexcept {
                if (e - b >= 3) {
                    CXON_IF_CONSTEXPR (!X::allow_javascript_nans) {
                        if (b[0] == '"') {
                            auto s = b[1] == '-' ? ++b + 1 : ++b;
                            switch (s[0]) {
                                case 'i':
                                    if (e - s >= 4 && s[1] == 'n' && s[2] == 'f' && s[3] == '"') {
                                        t = s != b ? -std::numeric_limits<T>::infinity() : std::numeric_limits<T>::infinity();
                                        return charconv::imp::from_chars_result{ s + 4, std::errc() };
                                    }
                                    break;
                                case 'n':
                                    if (e - s >= 4 && s[1] == 'a' && s[2] == 'n' && s[3] == '"') {
                                        t = s != b ? -std::numeric_limits<T>::quiet_NaN() : std::numeric_limits<T>::quiet_NaN();
                                        return charconv::imp::from_chars_result{ s + 4, std::errc() };
                                    }
                                    break;
                            }
                            return charconv::imp::from_chars_result { s != b ? --b : b, std::errc::invalid_argument };
                        }
                    }
                    CXON_IF_CONSTEXPR ( X::allow_javascript_nans) {
                        auto s = b[0] == '-' ? b + 1 : b;
                        switch (s[0]) {
                            case 'I':
                                if (e - s >= 8 && std::char_traits<char>::compare(s + 1, "nfinity", 7) == 0) {
                                    t = s != b ? -std::numeric_limits<T>::infinity() : std::numeric_limits<T>::infinity();
                                    return charconv::imp::from_chars_result { s + 8, std::errc() };
                                }
                                return charconv::imp::from_chars_result { b, std::errc::invalid_argument };
                            case 'N':
                                if (e - s >= 3 && s[1] == 'a' && s[2] == 'N') {
                                    t = s != b ? -std::numeric_limits<T>::quiet_NaN() : std::numeric_limits<T>::quiet_NaN();
                                    return charconv::imp::from_chars_result { s + 3, std::errc() };
                                }
                                return charconv::imp::from_chars_result { b, std::errc::invalid_argument };
                        }
                    }
                }
                auto const r = charconv::from_chars(b, e, t);
                return { r.ptr, r.ec };
            }

// Assembly:
movq %rsi, %rax
subq %rdi, %rax
cmpq $0x3, %rax
jl 0xf48e
cmpb $0x22, (%rdi)
jne 0xf48e
movb 0x1(%rdi), %cl
xorl %eax, %eax
cmpb $0x2d, %cl
sete %al
addq %rdi, %rax
incq %rax
movzbl (%rax), %r8d
cmpl $0x6e, %r8d
je 0xf49c
cmpl $0x69, %r8d
jne 0xf4d7
subq %rax, %rsi
cmpq $0x4, %rsi
jl 0xf4d7
cmpb $0x6e, 0x1(%rax)
jne 0xf4d7
cmpb $0x66, 0x2(%rax)
jne 0xf4d7
cmpb $0x22, 0x3(%rax)
jne 0xf4d7
xorl %esi, %esi
cmpb $0x2d, %cl
sete %sil
leaq 0x2bbf4(%rip), %rcx     # 0x3b080
jmp 0xf4c7
pushq %rax
pushq $0x3
popq %rcx
callq 0xf4e6
addq $0x8, %rsp
retq
subq %rax, %rsi
cmpq $0x4, %rsi
jl 0xf4d7
cmpb $0x61, 0x1(%rax)
jne 0xf4d7
cmpb $0x6e, 0x2(%rax)
jne 0xf4d7
cmpb $0x22, 0x3(%rax)
jne 0xf4d7
xorl %esi, %esi
cmpb $0x2d, %cl
sete %sil
leaq 0x2bba9(%rip), %rcx     # 0x3b070
movsd (%rcx,%rsi,8), %xmm0
movsd %xmm0, (%rdx)
addq $0x4, %rax
xorl %edx, %edx
retq
leaq 0x1(%rdi), %rax
cmpb $0x2d, %cl
cmoveq %rdi, %rax
pushq $0x16
popq %rdx
retq