// File: harry830622[P]floorplanner/src/./././json.hpp
// Function: 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>::escape_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
static string_t escape_string(const string_t& s)
    {
        const auto space = extra_space(s);
        if (space == 0)
        {
            return s;
        }

        // create a result string of necessary size
        string_t result(s.size() + space, '\\');
        std::size_t pos = 0;

        for (const auto& c : s)
        {
            switch (c)
            {
                // quotation mark (0x22)
                case '"':
                {
                    result[pos + 1] = '"';
                    pos += 2;
                    break;
                }

                // reverse solidus (0x5c)
                case '\\':
                {
                    // nothing to change
                    pos += 2;
                    break;
                }

                // backspace (0x08)
                case '\b':
                {
                    result[pos + 1] = 'b';
                    pos += 2;
                    break;
                }

                // formfeed (0x0c)
                case '\f':
                {
                    result[pos + 1] = 'f';
                    pos += 2;
                    break;
                }

                // newline (0x0a)
                case '\n':
                {
                    result[pos + 1] = 'n';
                    pos += 2;
                    break;
                }

                // carriage return (0x0d)
                case '\r':
                {
                    result[pos + 1] = 'r';
                    pos += 2;
                    break;
                }

                // horizontal tab (0x09)
                case '\t':
                {
                    result[pos + 1] = 't';
                    pos += 2;
                    break;
                }

                default:
                {
                    if (c >= 0x00 and c <= 0x1f)
                    {
                        // convert a number 0..15 to its hex representation
                        // (0..f)
                        static const char hexify[16] =
                        {
                            '0', '1', '2', '3', '4', '5', '6', '7',
                            '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
                        };

                        // print character c as \uxxxx
                        for (const char m :
                    { 'u', '0', '0', hexify[c >> 4], hexify[c & 0x0f]
                        })
                        {
                            result[++pos] = m;
                        }

                        ++pos;
                    }
                    else
                    {
                        // all other characters are added as-is
                        result[pos++] = c;
                    }
                    break;
                }
            }
        }

        return result;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0xa0(%rbp)
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x46cf0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x4662d
movq -0xa0(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x9200
jmp 0x46a47
movb $0x0, -0x19(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9380
movq -0x18(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
leaq -0x1a(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x9910
movq -0xa0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rcx
movl $0x5c, %edx
callq 0xad00
jmp 0x46679
leaq -0x1a(%rbp), %rdi
callq 0x9520
movq $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0x9490
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rdi
callq 0x9970
movq %rax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x10a20
testb $0x1, %al
jne 0x466c2
jmp 0x46a2f
leaq -0x48(%rbp), %rdi
callq 0x10a60
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0xb4(%rbp)
subl $0x8, %eax
je 0x467c7
jmp 0x466e7
movl -0xb4(%rbp), %eax
subl $0x9, %eax
je 0x468a3
jmp 0x466f8
movl -0xb4(%rbp), %eax
subl $0xa, %eax
je 0x46835
jmp 0x46709
movl -0xb4(%rbp), %eax
subl $0xc, %eax
je 0x467fe
jmp 0x4671a
movl -0xb4(%rbp), %eax
subl $0xd, %eax
je 0x4686c
jmp 0x4672b
movl -0xb4(%rbp), %eax
subl $0x22, %eax
je 0x46762
jmp 0x46738
movl -0xb4(%rbp), %eax
subl $0x5c, %eax
je 0x467b6
jmp 0x468da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x1a(%rbp), %rdi
callq 0x9520
jmp 0x46a57
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x9a10
movq %rax, -0xc0(%rbp)
jmp 0x4677e
movq -0xc0(%rbp), %rax
movb $0x22, (%rax)
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x9a48
jmp 0x46a57
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x9a10
movq %rax, -0xc8(%rbp)
jmp 0x467e3
movq -0xc8(%rbp), %rax
movb $0x62, (%rax)
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x9a10
movq %rax, -0xd0(%rbp)
jmp 0x4681a
movq -0xd0(%rbp), %rax
movb $0x66, (%rax)
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x9a10
movq %rax, -0xd8(%rbp)
jmp 0x46851
movq -0xd8(%rbp), %rax
movb $0x6e, (%rax)
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x9a10
movq %rax, -0xe0(%rbp)
jmp 0x46888
movq -0xe0(%rbp), %rax
movb $0x72, (%rax)
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0xa0(%rbp), %rdi
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x9a10
movq %rax, -0xe8(%rbp)
jmp 0x468bf
movq -0xe8(%rbp), %rax
movb $0x74, (%rax)
movq -0x38(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1f
movq -0x58(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jl 0x469df
movq -0x58(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x1f, %eax
jg 0x469df
movb $0x75, -0x75(%rbp)
movb $0x30, -0x74(%rbp)
movb $0x30, -0x73(%rbp)
movq -0x58(%rbp), %rax
movsbl (%rax), %eax
sarl $0x4, %eax
movslq %eax, %rcx
leaq 0x61e6(%rip), %rax      # 0x4cb00
movb (%rax,%rcx), %al
movb %al, -0x72(%rbp)
movq -0x58(%rbp), %rax
movsbl (%rax), %eax
andl $0xf, %eax
movslq %eax, %rcx
leaq 0x61cc(%rip), %rax      # 0x4cb00
movb (%rax,%rcx), %al
movb %al, -0x71(%rbp)
leaq -0x75(%rbp), %rax
movq %rax, -0x70(%rbp)
movq $0x5, -0x68(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x46d40
movq %rax, -0x80(%rbp)
movq -0x60(%rbp), %rdi
callq 0x46d60
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rax
cmpq -0x88(%rbp), %rax
je 0x469d1
movq -0xa0(%rbp), %rdi
movq -0x80(%rbp), %rax
movb (%rax), %al
movb %al, -0x89(%rbp)
movb -0x89(%rbp), %al
movb %al, -0xf1(%rbp)
movq -0x38(%rbp), %rsi
incq %rsi
movq %rsi, -0x38(%rbp)
callq 0x9a10
movq %rax, -0xf0(%rbp)
jmp 0x469b4
movq -0xf0(%rbp), %rax
movb -0xf1(%rbp), %cl
movb %cl, (%rax)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x4696f
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x46a1d
movq -0xa0(%rbp), %rdi
movq -0x58(%rbp), %rax
movb (%rax), %al
movb %al, -0x101(%rbp)
movq -0x38(%rbp), %rsi
movq %rsi, %rax
incq %rax
movq %rax, -0x38(%rbp)
callq 0x9a10
movq %rax, -0x100(%rbp)
jmp 0x46a0e
movq -0x100(%rbp), %rax
movb -0x101(%rbp), %cl
movb %cl, (%rax)
jmp 0x46a1f
jmp 0x46a21
leaq -0x48(%rbp), %rdi
callq 0x10b30
jmp 0x466ac
movb $0x1, -0x19(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x46a45
movq -0xa0(%rbp), %rdi
callq 0x9a48
jmp 0x46a47
movq -0x98(%rbp), %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x98f0