// File: /workspace/github_cpp_makefile_star2_O3/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 0x1fac5
jp 0x1fac5
movq %xmm0, %rax
testq %rax, %rax
js 0x1fb11
xorl %eax, %eax
jmp 0x1fb19
leaq 0x2b7b(%rip), %rdx      # 0x22647
movl $0x40, %esi
movq %rbx, %rdi
movl $0xf, %ecx
movb $0x1, %al
callq 0x6570
testl %eax, %eax
jle 0x1fc53
movl %eax, %ebp
cmpl $0x40, %eax
jae 0x1fc72
callq 0x66f0
testq %rax, %rax
je 0x1fc91
movq 0x8(%rax), %rcx
xorl %r14d, %r14d
testq %rcx, %rcx
je 0x1fb2d
movb (%rcx), %cl
jmp 0x1fb2f
movb $0x2d, (%rbx)
movl $0x1, %eax
movw $0x2e30, (%rbx,%rax)    # imm = 0x2E30
movb $0x30, 0x2(%rbx,%rax)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
xorl %ecx, %ecx
movb %cl, 0xf(%rsp)
movq (%rax), %rax
testq %rax, %rax
je 0x1fb3f
movsbl (%rax), %r14d
testb %cl, %cl
je 0x1fb68
movl %ebp, %esi
addq %rbx, %rsi
leaq 0xf(%rsp), %rdx
movq %rbx, %rdi
callq 0x1fcee
leaq 0x40(%rbx), %rdx
subq %rax, %rdx
je 0x1fb68
movq %rax, %rdi
xorl %esi, %esi
callq 0x61e0
testl %r14d, %r14d
je 0x1fb8d
cmpl $0x2e, %r14d
je 0x1fb8d
xorl %eax, %eax
movsbl (%rbx,%rax), %ecx
cmpl %ecx, %r14d
je 0x1fb89
incq %rax
cmpq $0x40, %rax
jne 0x1fb75
jmp 0x1fb8d
movb $0x2e, (%rbx,%rax)
movb (%rbx), %sil
movb $0x1, %dl
xorl %eax, %eax
testb %sil, %sil
je 0x1fbe1
movabsq $0x80000000800001, %rcx # imm = 0x80000000800001
testb $0x1, %dl
je 0x1fbba
movzbl %sil, %edx
addl $-0x2e, %edx
cmpl $0x37, %edx
ja 0x1fbd4
btq %rdx, %rcx
jae 0x1fbd4
incq %rax
cmpq $0x40, %rax
je 0x1fb24
xorl %edx, %edx
movb (%rbx,%rax), %sil
testb %sil, %sil
jne 0x1fba3
jmp 0x1fbe1
incq %rax
movb $0x1, %dl
cmpq $0x40, %rax
jne 0x1fbc9
jmp 0x1fc34
testb %dl, %dl
je 0x1fb24
cmpq $0x3e, %rax
jae 0x1fc34
cmpb $0x0, (%rbx,%rax)
jne 0x1fcb0
cmpb $0x0, -0x1(%rax,%rbx)
je 0x1fccf
movw $0x302e, (%rbx,%rax)    # imm = 0x302E
cmpb $0x0, 0x2(%rbx,%rax)
je 0x1fb24
leaq 0x2c2f(%rip), %rdi      # 0x2284b
leaq 0x1d67(%rip), %rsi      # 0x2198a
leaq 0x2a34(%rip), %rcx      # 0x2265e
movl $0x20c8, %edx           # imm = 0x20C8
callq 0x6240
leaq 0x2bd3(%rip), %rdi      # 0x2280e
leaq 0x1d48(%rip), %rsi      # 0x2198a
leaq 0x2a15(%rip), %rcx      # 0x2265e
movl $0x20be, %edx           # imm = 0x20BE
callq 0x6240
leaq 0x29f2(%rip), %rdi      # 0x2264c
leaq 0x1d29(%rip), %rsi      # 0x2198a
leaq 0x29f6(%rip), %rcx      # 0x2265e
movl $0x208a, %edx           # imm = 0x208A
callq 0x6240
leaq 0x2b54(%rip), %rdi      # 0x227cd
leaq 0x1d0a(%rip), %rsi      # 0x2198a
leaq 0x29d7(%rip), %rcx      # 0x2265e
movl $0x208c, %edx           # imm = 0x208C
callq 0x6240
leaq 0x2b67(%rip), %rdi      # 0x227ff
leaq 0x1ceb(%rip), %rsi      # 0x2198a
leaq 0x29b8(%rip), %rcx      # 0x2265e
movl $0x2090, %edx           # imm = 0x2090
callq 0x6240
leaq 0x2b6e(%rip), %rdi      # 0x22825
leaq 0x1ccc(%rip), %rsi      # 0x2198a
leaq 0x2999(%rip), %rcx      # 0x2265e
movl $0x20c0, %edx           # imm = 0x20C0
callq 0x6240
leaq 0x2b60(%rip), %rdi      # 0x22836
leaq 0x1cad(%rip), %rsi      # 0x2198a
leaq 0x297a(%rip), %rcx      # 0x2265e
movl $0x20c1, %edx           # imm = 0x20C1
callq 0x6240