// File: jpcima[P]faustmd/call_faust.cpp
// Function: parse_cstrlit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, gsl::basic_string_span<char const>)
static bool parse_cstrlit(std::string &dst, const gsl::cstring_span src)
{
    size_t n = src.size();
    if (src.size() < 2 || src[0] != '"' || src[n - 1] != '"')
        return false;

    for (size_t i = 1; i < n - 1; ++i) {
        char c = src[i];
        if (c != '\\')
            dst.push_back(c);
        else {
            if (++i == n - 1)
                return false;
            c = src[i];
            switch (c) {
            case '0': dst.push_back('\0'); break;
            case 'a': dst.push_back('\a'); break;
            case 'b': dst.push_back('\b'); break;
            case 't': dst.push_back('\t'); break;
            case 'n': dst.push_back('\n'); break;
            case 'v': dst.push_back('\v'); break;
            case 'f': dst.push_back('\f'); break;
            case 'r': dst.push_back('\r'); break;
            default: dst.push_back(c); break;
            }
        }
    }

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rsi, -0x18(%rbp)
movq %rdx, -0x10(%rbp)
movq %rdi, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x9360
movq %rax, -0x28(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x9360
cmpq $0x2, %rax
jb 0xd33e
leaq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x367c0
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0xd33e
movq -0x28(%rbp), %rsi
subq $0x1, %rsi
leaq -0x18(%rbp), %rdi
callq 0x367c0
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0xd347
movb $0x0, -0x1(%rbp)
jmp 0xd492
movq $0x1, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0xd48e
movq -0x30(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x367c0
movb (%rax), %al
movb %al, -0x31(%rbp)
movsbl -0x31(%rbp), %eax
cmpl $0x5c, %eax
je 0xd391
movq -0x20(%rbp), %rdi
movsbl -0x31(%rbp), %esi
callq 0x74d0
jmp 0xd47b
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jne 0xd3b3
movb $0x0, -0x1(%rbp)
jmp 0xd492
movq -0x30(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x367c0
movb (%rax), %al
movb %al, -0x31(%rbp)
movsbl -0x31(%rbp), %eax
addl $-0x30, %eax
movl %eax, %ecx
movq %rcx, -0x40(%rbp)
subl $0x46, %eax
ja 0xd46c
movq -0x40(%rbp), %rax
leaq 0x58e06(%rip), %rcx     # 0x661ec
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0x7, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0x8, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0x9, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0xa, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0xb, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0xc, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movl $0xd, %esi
callq 0x74d0
jmp 0xd479
movq -0x20(%rbp), %rdi
movsbl -0x31(%rbp), %esi
callq 0x74d0
jmp 0xd47b
jmp 0xd47d
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0xd34f
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)