// 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>::dump(std::ostream&, bool, unsigned int, unsigned int) const
void dump(std::ostream& o,
              const bool pretty_print,
              const unsigned int indent_step,
              const unsigned int current_indent = 0) const
    {
        // variable to hold indentation for recursive calls
        unsigned int new_indent = current_indent;

        switch (m_type)
        {
            case value_t::object:
            {
                if (m_value.object->empty())
                {
                    o << "{}";
                    return;
                }

                o << "{";

                // increase indentation
                if (pretty_print)
                {
                    new_indent += indent_step;
                    o << "\n";
                }

                for (auto i = m_value.object->cbegin(); i != m_value.object->cend(); ++i)
                {
                    if (i != m_value.object->cbegin())
                    {
                        o << (pretty_print ? ",\n" : ",");
                    }
                    o << string_t(new_indent, ' ') << "\""
                      << escape_string(i->first) << "\":"
                      << (pretty_print ? " " : "");
                    i->second.dump(o, pretty_print, indent_step, new_indent);
                }

                // decrease indentation
                if (pretty_print)
                {
                    new_indent -= indent_step;
                    o << "\n";
                }

                o << string_t(new_indent, ' ') + "}";
                return;
            }

            case value_t::array:
            {
                if (m_value.array->empty())
                {
                    o << "[]";
                    return;
                }

                o << "[";

                // increase indentation
                if (pretty_print)
                {
                    new_indent += indent_step;
                    o << "\n";
                }

                for (auto i = m_value.array->cbegin(); i != m_value.array->cend(); ++i)
                {
                    if (i != m_value.array->cbegin())
                    {
                        o << (pretty_print ? ",\n" : ",");
                    }
                    o << string_t(new_indent, ' ');
                    i->dump(o, pretty_print, indent_step, new_indent);
                }

                // decrease indentation
                if (pretty_print)
                {
                    new_indent -= indent_step;
                    o << "\n";
                }

                o << string_t(new_indent, ' ') << "]";
                return;
            }

            case value_t::string:
            {
                o << string_t("\"") << escape_string(*m_value.string) << "\"";
                return;
            }

            case value_t::boolean:
            {
                o << (m_value.boolean ? "true" : "false");
                return;
            }

            case value_t::number_integer:
            {
                o << numtostr(m_value.number_integer).c_str();
                return;
            }

            case value_t::number_unsigned:
            {
                o << numtostr(m_value.number_unsigned).c_str();
                return;
            }

            case value_t::number_float:
            {
                o << numtostr(m_value.number_float).c_str();
                return;
            }

            case value_t::discarded:
            {
                o << "<discarded>";
                return;
            }

            case value_t::null:
            {
                o << "null";
                return;
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x320, %rsp            # imm = 0x320
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movl %ecx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x258(%rbp)
movl -0x1c(%rbp), %ecx
movl %ecx, -0x20(%rbp)
movzbl (%rax), %eax
movq %rax, -0x250(%rbp)
subq $0x8, %rax
ja 0x46514
movq -0x250(%rbp), %rax
leaq 0x5e54(%rip), %rcx      # 0x4bae8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46530
testb $0x1, %al
jne 0x45cb3
jmp 0x45cc8
movq -0x10(%rbp), %rdi
leaq 0x62ae(%rip), %rsi      # 0x4bf6c
callq 0x94c0
jmp 0x46514
movq -0x10(%rbp), %rdi
leaq 0x629c(%rip), %rsi      # 0x4bf6f
callq 0x94c0
testb $0x1, -0x11(%rbp)
je 0x45cf7
movl -0x18(%rbp), %eax
addl -0x20(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x4534(%rip), %rsi      # 0x4a226
callq 0x94c0
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46550
movq %rax, -0x28(%rbp)
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x465b0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x46580
testb $0x1, %al
jne 0x45d35
jmp 0x45f0c
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46550
movq %rax, -0x38(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x46580
testb $0x1, %al
jne 0x45d5c
jmp 0x45d7d
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
leaq 0x620a(%rip), %rsi      # 0x4bf74
leaq 0x6200(%rip), %rax      # 0x4bf71
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x94c0
movq -0x10(%rbp), %rax
movq %rax, -0x270(%rbp)
movl -0x20(%rbp), %eax
movq %rax, -0x268(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x9910
movq -0x268(%rbp), %rsi
movq -0x260(%rbp), %rcx
leaq -0x58(%rbp), %rdi
movl $0x20, %edx
callq 0xad00
jmp 0x45dc0
movq -0x270(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x9460
movq %rax, -0x278(%rbp)
jmp 0x45dd9
movq -0x278(%rbp), %rdi
leaq 0x618f(%rip), %rsi      # 0x4bf76
callq 0x94c0
movq %rax, -0x280(%rbp)
jmp 0x45df5
leaq -0x28(%rbp), %rdi
callq 0x46a60
movq %rax, %rsi
leaq -0x90(%rbp), %rdi
callq 0x465e0
jmp 0x45e0f
movq -0x280(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x9460
movq %rax, -0x288(%rbp)
jmp 0x45e2b
movq -0x288(%rbp), %rdi
leaq 0x613f(%rip), %rsi      # 0x4bf78
callq 0x94c0
movq %rax, -0x290(%rbp)
jmp 0x45e47
movq -0x290(%rbp), %rdi
movb -0x11(%rbp), %cl
leaq 0x5e3d(%rip), %rax      # 0x4bc95
leaq 0x5fcf(%rip), %rsi      # 0x4be2e
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x94c0
jmp 0x45e6d
leaq -0x90(%rbp), %rdi
callq 0x9a48
leaq -0x58(%rbp), %rdi
callq 0x9a48
leaq -0x59(%rbp), %rdi
callq 0x9520
leaq -0x28(%rbp), %rdi
callq 0x46a60
movq %rax, %rdi
addq $0x20, %rdi
movq -0x10(%rbp), %rsi
movb -0x11(%rbp), %al
movl -0x18(%rbp), %ecx
movl -0x20(%rbp), %r8d
andb $0x1, %al
movzbl %al, %edx
callq 0x45c40
leaq -0x28(%rbp), %rdi
callq 0x46a80
jmp 0x45d0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x45efe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x45ef5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x9a48
leaq -0x58(%rbp), %rdi
callq 0x9a48
leaq -0x59(%rbp), %rdi
callq 0x9520
jmp 0x4651d
testb $0x1, -0x11(%rbp)
je 0x45f2d
movl -0x18(%rbp), %ecx
movl -0x20(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x42fe(%rip), %rsi      # 0x4a226
callq 0x94c0
movq -0x10(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movl -0x20(%rbp), %eax
movq %rax, -0x2a0(%rbp)
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x9910
movq -0x2a0(%rbp), %rsi
movq -0x298(%rbp), %rcx
leaq -0xd0(%rbp), %rdi
movl $0x20, %edx
callq 0xad00
jmp 0x45f76
leaq 0x5ff0(%rip), %rdx      # 0x4bf6d
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3b120
jmp 0x45f92
movq -0x2a8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x9460
jmp 0x45fa7
leaq -0xb0(%rbp), %rdi
callq 0x9a48
leaq -0xd0(%rbp), %rdi
callq 0x9a48
leaq -0xd1(%rbp), %rdi
callq 0x9520
jmp 0x46514
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x46010
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x46004
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x9a48
leaq -0xd0(%rbp), %rdi
callq 0x9a48
leaq -0xd1(%rbp), %rdi
callq 0x9520
jmp 0x4651d
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46ab0
testb $0x1, %al
jne 0x46037
jmp 0x4604c
movq -0x10(%rbp), %rdi
leaq 0x5f39(%rip), %rsi      # 0x4bf7b
callq 0x94c0
jmp 0x46514
movq -0x10(%rbp), %rdi
leaq 0x5f27(%rip), %rsi      # 0x4bf7e
callq 0x94c0
testb $0x1, -0x11(%rbp)
je 0x4607b
movl -0x18(%rbp), %eax
addl -0x20(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x41b0(%rip), %rsi      # 0x4a226
callq 0x94c0
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46af0
movq %rax, -0xe0(%rbp)
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46b20
movq %rax, -0xe8(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x246e0
testb $0x1, %al
jne 0x460c5
jmp 0x461fb
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x46af0
movq %rax, -0xf0(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x246e0
testb $0x1, %al
jne 0x460f5
jmp 0x46116
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
leaq 0x5e71(%rip), %rsi      # 0x4bf74
leaq 0x5e67(%rip), %rax      # 0x4bf71
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x94c0
movq -0x10(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movl -0x20(%rbp), %eax
movq %rax, -0x2b8(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x9910
movq -0x2b8(%rbp), %rsi
movq -0x2b0(%rbp), %rcx
leaq -0x110(%rbp), %rdi
movl $0x20, %edx
callq 0xad00
jmp 0x4615f
movq -0x2c0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x9460
jmp 0x46174
leaq -0x110(%rbp), %rdi
callq 0x9a48
leaq -0x111(%rbp), %rdi
callq 0x9520
leaq -0xe0(%rbp), %rdi
callq 0x46b50
movq %rax, %rdi
movq -0x10(%rbp), %rsi
movb -0x11(%rbp), %al
movl -0x18(%rbp), %ecx
movl -0x20(%rbp), %r8d
andb $0x1, %al
movzbl %al, %edx
callq 0x45c40
leaq -0xe0(%rbp), %rdi
callq 0x24770
jmp 0x46092
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x461ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x9a48
leaq -0x111(%rbp), %rdi
callq 0x9520
jmp 0x4651d
testb $0x1, -0x11(%rbp)
je 0x4621c
movl -0x18(%rbp), %ecx
movl -0x20(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x400f(%rip), %rsi      # 0x4a226
callq 0x94c0
movq -0x10(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movl -0x20(%rbp), %eax
movq %rax, -0x2d0(%rbp)
leaq -0x139(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x9910
movq -0x2d0(%rbp), %rsi
movq -0x2c8(%rbp), %rcx
leaq -0x138(%rbp), %rdi
movl $0x20, %edx
callq 0xad00
jmp 0x46265
movq -0x2d8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x9460
movq %rax, -0x2e0(%rbp)
jmp 0x46281
movq -0x2e0(%rbp), %rdi
leaq 0x5c14(%rip), %rsi      # 0x4bea3
callq 0x94c0
jmp 0x46296
leaq -0x138(%rbp), %rdi
callq 0x9a48
leaq -0x139(%rbp), %rdi
callq 0x9520
jmp 0x46514
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x462d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x9a48
leaq -0x139(%rbp), %rdi
callq 0x9520
jmp 0x4651d
movq -0x10(%rbp), %rax
movq %rax, -0x2f0(%rbp)
leaq -0x161(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x9910
movq -0x2e8(%rbp), %rdx
leaq 0x5c60(%rip), %rsi      # 0x4bf76
leaq -0x160(%rbp), %rdi
callq 0xfcf0
jmp 0x46324
movq -0x2f0(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x9460
movq %rax, -0x2f8(%rbp)
jmp 0x46340
movq -0x258(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x188(%rbp), %rdi
callq 0x465e0
jmp 0x46359
movq -0x2f8(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x9460
movq %rax, -0x300(%rbp)
jmp 0x46375
movq -0x300(%rbp), %rdi
leaq 0x5bf3(%rip), %rsi      # 0x4bf76
callq 0x94c0
jmp 0x4638a
leaq -0x188(%rbp), %rdi
callq 0x9a48
leaq -0x160(%rbp), %rdi
callq 0x9a48
leaq -0x161(%rbp), %rdi
callq 0x9520
jmp 0x46514
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x463f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x463e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x9a48
leaq -0x160(%rbp), %rdi
callq 0x9a48
leaq -0x161(%rbp), %rdi
callq 0x9520
jmp 0x4651d
movq -0x258(%rbp), %rax
movq -0x10(%rbp), %rdi
movb 0x8(%rax), %cl
leaq 0x5b6c(%rip), %rsi      # 0x4bf85
leaq 0x5b60(%rip), %rax      # 0x4bf80
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x94c0
jmp 0x46514
movq -0x258(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x308(%rbp)
movq 0x8(%rax), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x46b70
leaq -0x1c8(%rbp), %rdi
callq 0x46bb0
movq -0x308(%rbp), %rdi
movq %rax, %rsi
callq 0x94c0
jmp 0x46514
movq -0x258(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x310(%rbp)
movq 0x8(%rax), %rsi
leaq -0x208(%rbp), %rdi
callq 0x46bd0
leaq -0x208(%rbp), %rdi
callq 0x46bb0
movq -0x310(%rbp), %rdi
movq %rax, %rsi
callq 0x94c0
jmp 0x46514
movq -0x258(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x318(%rbp)
movsd 0x8(%rax), %xmm0
leaq -0x248(%rbp), %rdi
callq 0x46c10
leaq -0x248(%rbp), %rdi
callq 0x46bb0
movq -0x318(%rbp), %rdi
movq %rax, %rsi
callq 0x94c0
jmp 0x46514
movq -0x10(%rbp), %rdi
leaq 0x5a8e(%rip), %rsi      # 0x4bf8b
callq 0x94c0
jmp 0x46514
movq -0x10(%rbp), %rdi
leaq 0x45c1(%rip), %rsi      # 0x4aad0
callq 0x94c0
addq $0x320, %rsp            # imm = 0x320
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x98f0
nopw %cs:(%rax,%rax)