// File: /workspace/github_cpp_makefile_star2_O1/night-shift[P]Srl/src/lib/PMsgPack.cpp
// Function: (anonymous namespace)::write_str(Srl::Lib::MemBlock const&, Srl::Lib::Out&)
void write_str(const MemBlock& block, Out& out)
    {
        if(block.size <= 0x1F) {
            out.write_byte(0xA0 | block.size);

        } else if(block.size <= 0xFE) {
            out.write_byte(0xD9);
            out.write_byte(block.size);

        } else if (block.size <= 0xFFFE) {
            uint16_t sz = block.size;
            out.write_byte(0xDA);
            out.write(sz);

        } else {
            uint32_t sz = block.size;
            out.write_byte(0xDB);
            out.write(sz);
        }

        out.write(block.ptr, block.size);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rdi), %r15
cmpq $0x1f, %r15
ja 0x1813e
incq 0x50(%rbx)
orb $-0x60, %r15b
cmpb $0x0, 0x80(%rbx)
je 0x1818d
cmpq $0x0, 0x58(%rbx)
jne 0x18118
movq %rbx, %rdi
callq 0xb460
cmpq $0x0, 0x60(%rbx)
jne 0x1812c
movl $0x1, %esi
movq %rbx, %rdi
callq 0xbc90
decq 0x58(%rbx)
movq 0x70(%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rbx)
jmp 0x1819a
cmpq $0xfe, %r15
ja 0x181a2
incq 0x50(%rbx)
cmpb $0x0, 0x80(%rbx)
je 0x181fe
cmpq $0x0, 0x58(%rbx)
jne 0x18167
movq %rbx, %rdi
callq 0xb460
cmpq $0x0, 0x60(%rbx)
jne 0x1817b
movl $0x1, %esi
movq %rbx, %rdi
callq 0xbc90
decq 0x58(%rbx)
movq 0x70(%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rbx)
jmp 0x1820b
movl $0x1, %esi
movq %rbx, %rdi
callq 0xb4f0
movb %r15b, (%rax)
jmp 0x182e9
cmpq $0xfffe, %r15           # imm = 0xFFFE
ja 0x18254
movw %r15w, 0x2(%rsp)
incq 0x50(%rbx)
cmpb $0x0, 0x80(%rbx)
je 0x182ad
cmpq $0x0, 0x58(%rbx)
jne 0x181d5
movq %rbx, %rdi
callq 0xb460
cmpq $0x0, 0x60(%rbx)
jne 0x181e9
movl $0x1, %esi
movq %rbx, %rdi
callq 0xbc90
decq 0x58(%rbx)
movq 0x70(%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rbx)
jmp 0x182ba
movl $0x1, %esi
movq %rbx, %rdi
callq 0xb4f0
movb $-0x27, (%rax)
movb 0x8(%r14), %bpl
incq 0x50(%rbx)
cmpb $0x0, 0x80(%rbx)
je 0x1829b
cmpq $0x0, 0x58(%rbx)
jne 0x1822e
movq %rbx, %rdi
callq 0xb460
cmpq $0x0, 0x60(%rbx)
jne 0x18242
movl $0x1, %esi
movq %rbx, %rdi
callq 0xbc90
decq 0x58(%rbx)
movq 0x70(%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rbx)
jmp 0x182a8
movl %r15d, 0x4(%rsp)
incq 0x50(%rbx)
cmpb $0x0, 0x80(%rbx)
je 0x182cc
cmpq $0x0, 0x58(%rbx)
jne 0x18275
movq %rbx, %rdi
callq 0xb460
cmpq $0x0, 0x60(%rbx)
jne 0x18289
movl $0x1, %esi
movq %rbx, %rdi
callq 0xbc90
decq 0x58(%rbx)
movq 0x70(%rbx), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rbx)
jmp 0x182d9
movl $0x1, %esi
movq %rbx, %rdi
callq 0xb4f0
movb %bpl, (%rax)
jmp 0x182e9
movl $0x1, %esi
movq %rbx, %rdi
callq 0xb4f0
movb $-0x26, (%rax)
leaq 0x2(%rsp), %rsi
movq %rbx, %rdi
callq 0xb4d0
jmp 0x182e9
movl $0x1, %esi
movq %rbx, %rdi
callq 0xb4f0
movb $-0x25, (%rax)
leaq 0x4(%rsp), %rsi
movq %rbx, %rdi
callq 0xb0a0
movq (%r14), %r15
movq 0x8(%r14), %r14
addq %r14, 0x50(%rbx)
cmpb $0x0, 0x80(%rbx)
je 0x1832e
cmpq %r14, 0x58(%rbx)
jae 0x1830b
movq %rbx, %rdi
callq 0xb460
cmpq %r14, 0x60(%rbx)
jae 0x1831c
movq %rbx, %rdi
movq %r14, %rsi
callq 0xbc90
subq %r14, 0x58(%rbx)
movq 0x70(%rbx), %rax
leaq (%rax,%r14), %rcx
movq %rcx, 0x70(%rbx)
jmp 0x18339
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb4f0
cmpq $0x1, %r14
jne 0x18346
movb (%r15), %cl
movb %cl, (%rax)
jmp 0x18354
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0xb790
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop