// File: /workspace/github_cpp_makefile_star2_O2/harry830622[P]floorplanner/src/./././json.hpp
// Function: void nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>::numtostr::x_write<double>(double, std::integral_constant<bool, false>)
void x_write(NumberType x, /*is_integral=*/std::false_type)
        {
            // special case for 0.0 and -0.0
            if (x == 0)
            {
                size_t i = 0;
                if (std::signbit(x))
                {
                    m_buf[i++] = '-';
                }
                m_buf[i++] = '0';
                m_buf[i++] = '.';
                m_buf[i] = '0';
                return;
            }

            // get number of digits for a text -> float -> text round-trip
            static constexpr auto d = std::numeric_limits<NumberType>::digits10;

            // the actual conversion
            const auto written_bytes = snprintf(m_buf.data(), m_buf.size(), "%.*g", d, x);

            // negative value indicates an error
            assert(written_bytes > 0);
            // check if buffer was large enough
            assert(static_cast<size_t>(written_bytes) < m_buf.size());

            // read information from locale
            const auto loc = localeconv();
            assert(loc != nullptr);
            const char thousands_sep = !loc->thousands_sep ? '\0'
                                       : loc->thousands_sep[0];

            const char decimal_point = !loc->decimal_point ? '\0'
                                       : loc->decimal_point[0];

            // erase thousands separator
            if (thousands_sep != '\0')
            {
                const auto end = std::remove(m_buf.begin(), m_buf.begin() + written_bytes, thousands_sep);
                std::fill(end, m_buf.end(), '\0');
            }

            // convert decimal point to '.'
            if (decimal_point != '\0' and decimal_point != '.')
            {
                for (auto& c : m_buf)
                {
                    if (c == decimal_point)
                    {
                        c = '.';
                        break;
                    }
                }
            }

            // determine if need to append ".0"
            size_t i = 0;
            bool value_is_int_like = true;
            for (i = 0; i < m_buf.size(); ++i)
            {
                // break when end of number is reached
                if (m_buf[i] == '\0')
                {
                    break;
                }

                // check if we find non-int character
                value_is_int_like = value_is_int_like and m_buf[i] != '.' and
                                    m_buf[i] != 'e' and m_buf[i] != 'E';
            }

            if (value_is_int_like)
            {
                // there must be 2 bytes left for ".0"
                assert((i + 2) < m_buf.size());
                // we write to the end of the number
                assert(m_buf[i] == '\0');
                assert(m_buf[i - 1] != '\0');

                // add ".0"
                m_buf[i] = '.';
                m_buf[i + 1] = '0';

                // the resulting string is properly terminated
                assert(m_buf[i + 2] == '\0');
            }
        }

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1a31b
jp 0x1a31b
movq %xmm0, %rax
testq %rax, %rax
js 0x1a363
xorl %eax, %eax
jmp 0x1a369
leaq 0x2275(%rip), %rdx      # 0x1c597
pushq $0x40
popq %rsi
pushq $0xf
popq %rcx
movq %rbx, %rdi
movb $0x1, %al
callq 0x7590
testl %eax, %eax
jle 0x1a45e
movl %eax, %ebp
cmpl $0x40, %eax
jae 0x1a47d
callq 0x7700
testq %rax, %rax
je 0x1a49c
movq 0x8(%rax), %rcx
xorl %r14d, %r14d
testq %rcx, %rcx
je 0x1a379
movb (%rcx), %cl
jmp 0x1a37b
movb $0x2d, (%rbx)
pushq $0x1
popq %rax
movw $0x2e30, (%rbx,%rax)    # imm = 0x2E30
movb $0x30, 0x2(%rbx,%rax)
jmp 0x1a455
xorl %ecx, %ecx
movb %cl, 0xf(%rsp)
movq (%rax), %rax
testq %rax, %rax
je 0x1a38b
movsbl (%rax), %r14d
testb %cl, %cl
je 0x1a3b4
movl %ebp, %esi
addq %rbx, %rsi
leaq 0xf(%rsp), %rdx
movq %rbx, %rdi
callq 0x1a537
leaq 0x40(%rbx), %rdx
subq %rax, %rdx
je 0x1a3b4
movq %rax, %rdi
xorl %esi, %esi
callq 0x7210
testl %r14d, %r14d
je 0x1a3d8
cmpl $0x2e, %r14d
je 0x1a3d8
xorl %eax, %eax
cmpq $0x40, %rax
je 0x1a3d8
movsbl (%rbx,%rax), %ecx
incq %rax
cmpl %ecx, %r14d
jne 0x1a3c1
movb $0x2e, -0x1(%rbx,%rax)
movb $0x1, %sil
xorl %eax, %eax
movabsq $0x7fffffff7ffffe, %rdx # imm = 0x7FFFFFFF7FFFFE
cmpq $0x40, %rax
je 0x1a414
movb (%rbx,%rax), %cl
testb %cl, %cl
je 0x1a41f
testb $0x1, %sil
je 0x1a40d
addb $-0x2e, %cl
movb $0x1, %sil
cmpb $0x37, %cl
ja 0x1a40f
movq %rdx, %rsi
shrq %cl, %rsi
jmp 0x1a40f
xorl %esi, %esi
incq %rax
jmp 0x1a3e7
testb $0x1, %sil
je 0x1a455
jmp 0x1a4bb
testb $0x1, %sil
je 0x1a455
cmpq $0x3e, %rax
jae 0x1a4bb
cmpb $0x0, (%rbx,%rax)
jne 0x1a4da
cmpb $0x0, -0x1(%rbx,%rax)
je 0x1a4f9
movw $0x302e, (%rbx,%rax)    # imm = 0x302E
cmpb $0x0, 0x2(%rbx,%rax)
jne 0x1a518
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x2137(%rip), %rdi      # 0x1c59c
leaq 0x146e(%rip), %rsi      # 0x1b8da
leaq 0x213b(%rip), %rcx      # 0x1c5ae
movl $0x208a, %edx           # imm = 0x208A
callq 0x7270
leaq 0x2299(%rip), %rdi      # 0x1c71d
leaq 0x144f(%rip), %rsi      # 0x1b8da
leaq 0x211c(%rip), %rcx      # 0x1c5ae
movl $0x208c, %edx           # imm = 0x208C
callq 0x7270
leaq 0x22ac(%rip), %rdi      # 0x1c74f
leaq 0x1430(%rip), %rsi      # 0x1b8da
leaq 0x20fd(%rip), %rcx      # 0x1c5ae
movl $0x2090, %edx           # imm = 0x2090
callq 0x7270
leaq 0x229c(%rip), %rdi      # 0x1c75e
leaq 0x1411(%rip), %rsi      # 0x1b8da
leaq 0x20de(%rip), %rcx      # 0x1c5ae
movl $0x20be, %edx           # imm = 0x20BE
callq 0x7270
leaq 0x2294(%rip), %rdi      # 0x1c775
leaq 0x13f2(%rip), %rsi      # 0x1b8da
leaq 0x20bf(%rip), %rcx      # 0x1c5ae
movl $0x20c0, %edx           # imm = 0x20C0
callq 0x7270
leaq 0x2286(%rip), %rdi      # 0x1c786
leaq 0x13d3(%rip), %rsi      # 0x1b8da
leaq 0x20a0(%rip), %rcx      # 0x1c5ae
movl $0x20c1, %edx           # imm = 0x20C1
callq 0x7270
leaq 0x227c(%rip), %rdi      # 0x1c79b
leaq 0x13b4(%rip), %rsi      # 0x1b8da
leaq 0x2081(%rip), %rcx      # 0x1c5ae
movl $0x20c8, %edx           # imm = 0x20C8
callq 0x7270