// File: Fohlen[P]cubescript-standalone/command.cpp
// Function: listsplice(char const*, char const*, int*, int*, int*)
void listsplice(const char *s, const char *vals, int *skip, int *count, int *numargs)
{
    int offset = max(*skip, 0), len = *numargs >= 4 ? max(*count, 0) : -1;
    const char *list = s, *start, *end, *qstart, *qend = s;
    loopi(offset) if(!parselist(s, start, end, qstart, qend)) break;
    vector<char> p;
    if(qend > list) p.put(list, qend-list);
    if(*vals)
    {
        if(!p.empty()) p.add(' ');
        p.put(vals, strlen(vals));
    }
    while(len-- > 0) if(!parselist(s)) break;
    skiplist(s);
    switch(*s)
    {
        case '\0': case ')': case ']': break;
        default:
            if(!p.empty()) p.add(' ');
            p.put(s, strlen(s));
            break;
    }
    p.add('\0');
    commandret->setstr(newstring(p.getbuf(), p.length()-1));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %edi
xorl %esi, %esi
callq 0xca20
movl %eax, -0x2c(%rbp)
movq -0x28(%rbp), %rax
cmpl $0x4, (%rax)
jl 0xd5dd
movq -0x20(%rbp), %rax
movl (%rax), %edi
xorl %esi, %esi
callq 0xca20
movl %eax, -0x84(%rbp)
jmp 0xd5ea
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x84(%rbp)
jmp 0xd5ea
movl -0x84(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0xd63e
leaq -0x8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
leaq -0x48(%rbp), %rdx
leaq -0x50(%rbp), %rcx
leaq -0x58(%rbp), %r8
callq 0xc210
testb $0x1, %al
jne 0xd631
jmp 0xd63e
jmp 0xd633
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xd60a
leaq -0x70(%rbp), %rdi
callq 0x43a0
movq -0x58(%rbp), %rax
cmpq -0x38(%rbp), %rax
jbe 0xd683
movq -0x38(%rbp), %rsi
movl -0x58(%rbp), %edx
movl %esi, %eax
subl %eax, %edx
leaq -0x70(%rbp), %rdi
callq 0x16020
jmp 0xd667
jmp 0xd683
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x43d0
jmp 0xd850
movq -0x10(%rbp), %rax
cmpb $0x0, (%rax)
je 0xd6e4
leaq -0x70(%rbp), %rdi
callq 0x16240
movb %al, -0x85(%rbp)
jmp 0xd69d
movb -0x85(%rbp), %al
testb $0x1, %al
jne 0xd6be
jmp 0xd6a9
movb $0x20, -0x7d(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x7d(%rbp), %rsi
callq 0x15fc0
jmp 0xd6bc
jmp 0xd6be
movq -0x10(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x20b0
movq -0x90(%rbp), %rsi
movl %eax, %edx
leaq -0x70(%rbp), %rdi
callq 0x16020
jmp 0xd6e2
jmp 0xd6e4
jmp 0xd6e6
movl -0x30(%rbp), %eax
movl %eax, %ecx
addl $-0x1, %ecx
movl %ecx, -0x30(%rbp)
cmpl $0x0, %eax
jle 0xd733
leaq 0x1a503(%rip), %rsi     # 0x27c00
leaq 0x1a504(%rip), %rdx     # 0x27c08
leaq 0x1a4e5(%rip), %rcx     # 0x27bf0
leaq 0x1a4e6(%rip), %r8      # 0x27bf8
leaq -0x8(%rbp), %rdi
callq 0xc210
movb %al, -0x91(%rbp)
jmp 0xd723
movb -0x91(%rbp), %al
testb $0x1, %al
jne 0xd731
jmp 0xd72f
jmp 0xd733
jmp 0xd6e6
leaq -0x8(%rbp), %rdi
callq 0xca50
jmp 0xd73e
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x98(%rbp)
testl %eax, %eax
je 0xd76b
jmp 0xd751
movl -0x98(%rbp), %eax
subl $0x29, %eax
je 0xd76b
jmp 0xd75e
movl -0x98(%rbp), %eax
subl $0x5d, %eax
jne 0xd76d
jmp 0xd76b
jmp 0xd7c5
leaq -0x70(%rbp), %rdi
callq 0x16240
movb %al, -0x99(%rbp)
jmp 0xd77e
movb -0x99(%rbp), %al
testb $0x1, %al
jne 0xd79f
jmp 0xd78a
movb $0x20, -0x7e(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x7e(%rbp), %rsi
callq 0x15fc0
jmp 0xd79d
jmp 0xd79f
movq -0x8(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x20b0
movq -0xa8(%rbp), %rsi
movl %eax, %edx
leaq -0x70(%rbp), %rdi
callq 0x16020
jmp 0xd7c3
jmp 0xd7c5
movb $0x0, -0x7f(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x7f(%rbp), %rsi
callq 0x15fc0
jmp 0xd7d8
movq 0x19a51(%rip), %rax     # 0x27230
movq %rax, -0xb8(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x16070
movq %rax, -0xb0(%rbp)
jmp 0xd7f8
leaq -0x70(%rbp), %rdi
callq 0x16190
movl %eax, -0xbc(%rbp)
jmp 0xd809
movq -0xb0(%rbp), %rdi
movl -0xbc(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x16150
movq %rax, -0xc8(%rbp)
jmp 0xd829
movq -0xc8(%rbp), %rsi
movq -0xb8(%rbp), %rdi
callq 0x15b80
jmp 0xd83e
leaq -0x70(%rbp), %rdi
callq 0x43d0
addq $0xd0, %rsp
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x23e0
nopl (%rax)