user: Demonstrate the C code that generates the assembly output below:

```asm
<parse_mc_store>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %edi,-0x34(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %rdx,-0x48(%rbp)
  mov    %ecx,-0x38(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  jmp    L194
L133:
  addq   $0x1,-0x48(%rbp)
L194:
  mov    -0x48(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L133
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  jmp    L165
L84:
  addq   $0x1,-0x48(%rbp)
L165:
  mov    -0x48(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jg     L84
  mov    -0x48(%rbp),%rax
  sub    -0x10(%rbp),%rax
  mov    %eax,-0x28(%rbp)
  cmpl   $0x0,-0x28(%rbp)
  je     L177
  mov    -0x48(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L127
L177:
  mov    $0xffffffff,%eax
  jmp    L137
L127:
  lea    -0x18(%rbp),%rcx
  mov    -0x48(%rbp),%rax
  mov    $0xa,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strtol@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x18(%rbp),%rax
  cmp    %rax,-0x48(%rbp)
  jne    L145
  mov    $0xffffffff,%eax
  jmp    L137
L145:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  lea    -0x18(%rbp),%rcx
  mov    -0x48(%rbp),%rax
  mov    $0xa,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strtol@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  cmp    %rax,-0x48(%rbp)
  jne    L30
  mov    $0xffffffff,%eax
  jmp    L137
L30:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  lea    -0x18(%rbp),%rcx
  mov    -0x48(%rbp),%rax
  mov    $0xa,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strtol@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x18(%rbp),%rax
  cmp    %rax,-0x48(%rbp)
  jne    L78
  mov    $0xffffffff,%eax
  jmp    L137
L78:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  lea    -0x18(%rbp),%rcx
  mov    -0x48(%rbp),%rax
  mov    $0xa,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strtol@plt>
  mov    %eax,-0x2c(%rbp)
  mov    -0x18(%rbp),%rax
  cmp    %rax,-0x48(%rbp)
  jne    L146
  movl   $0x0,-0x2c(%rbp)
  jmp    L153
L146:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  jmp    L153
L195:
  addq   $0x1,-0x48(%rbp)
L153:
  mov    -0x48(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L195
  mov    -0x48(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L69
  mov    $0xffffffff,%eax
  jmp    L137
L69:
  mov    -0x20(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x10(%rbp),%rdx
  mov    -0x40(%rbp),%rsi
  mov    -0x34(%rbp),%eax
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x1c(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <exec_mc_store@plt>
  add    $0x10,%rsp
L137:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L98
  call   <__stack_chk_fail@plt>
L98:
  leave
  ret
```

assistant: ```c
int parse_mc_store(int op, struct connection *c, char *str, int len) {
  char *key, *ptr;
  int key_len, flags, expire, bytes, noreply;
  while (*str == ' ')
    str++;
  key = str;
  while (*str > ' ')
    str++;
  key_len = str - key;
  if (!key_len || *str != ' ')
    return -1;
  flags = strtol(str, &ptr, 10);
  if (ptr == str)
    return -1;
  str = ptr;
  expire = strtol(str, &ptr, 10);
  if (ptr == str)
    return -1;
  str = ptr;
  bytes = strtol(str, &ptr, 10);
  if (ptr == str)
    return -1;
  str = ptr;
  noreply = strtol(str, &ptr, 10);
  if (ptr == str) {
    noreply = 0;
  } else {
    str = ptr;
  }
  while (*str == ' ')
    str++;
  if (*str)
    return -1;
  return exec_mc_store(op, c, key, key_len, flags, expire, bytes, noreply);
}
```