user: What is the c source code of the assembly code below?

```asm
<resp_len>:
  endbr64
  mov    %rdi,%r10
  mov    %esi,%r9d
  mov    (%rdi),%rdi
  test   %sil,%sil
  jle    L84
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%al
  jbe    L50
  movdqa D66(%rip),%xmm2
  movdqu (%rdi),%xmm1
  pcmpeqd %xmm5,%xmm5
  mov    %esi,%eax
  movdqa D24(%rip),%xmm3
  movdqa D19(%rip),%xmm4
  shr    $0x4,%al
  pcmpeqb %xmm2,%xmm1
  movdqa %xmm3,%xmm0
  pand   %xmm1,%xmm0
  pandn  %xmm5,%xmm1
  por    %xmm0,%xmm1
  movdqu (%rdi),%xmm0
  pcmpeqb %xmm4,%xmm0
  pand   %xmm0,%xmm3
  pandn  %xmm5,%xmm0
  por    %xmm3,%xmm0
  cmp    $0x1,%al
  je     L59
  movdqu 0x10(%rdi),%xmm3
  movdqa D58(%rip),%xmm5
  pcmpeqb %xmm2,%xmm3
  movdqa %xmm5,%xmm6
  pand   %xmm3,%xmm6
  pandn  %xmm1,%xmm3
  movdqa %xmm3,%xmm1
  movdqu 0x10(%rdi),%xmm3
  por    %xmm6,%xmm1
  pcmpeqb %xmm4,%xmm3
  pand   %xmm3,%xmm5
  pandn  %xmm0,%xmm3
  por    %xmm5,%xmm3
  movdqa %xmm3,%xmm0
  cmp    $0x2,%al
  je     L59
  movdqu 0x20(%rdi),%xmm3
  movdqa D10(%rip),%xmm5
  pcmpeqb %xmm2,%xmm3
  movdqa %xmm5,%xmm6
  pand   %xmm3,%xmm6
  pandn  %xmm1,%xmm3
  movdqa %xmm3,%xmm1
  movdqu 0x20(%rdi),%xmm3
  por    %xmm6,%xmm1
  pcmpeqb %xmm4,%xmm3
  pand   %xmm3,%xmm5
  pandn  %xmm0,%xmm3
  movdqa %xmm3,%xmm0
  por    %xmm5,%xmm0
  cmp    $0x3,%al
  je     L59
  movdqu 0x30(%rdi),%xmm3
  movdqa D51(%rip),%xmm5
  pcmpeqb %xmm2,%xmm3
  movdqa %xmm5,%xmm6
  pand   %xmm3,%xmm6
  pandn  %xmm1,%xmm3
  movdqa %xmm3,%xmm1
  movdqu 0x30(%rdi),%xmm3
  por    %xmm6,%xmm1
  pcmpeqb %xmm4,%xmm3
  pand   %xmm3,%xmm5
  pandn  %xmm0,%xmm3
  movdqa %xmm3,%xmm0
  por    %xmm5,%xmm0
  cmp    $0x4,%al
  je     L59
  movdqu 0x40(%rdi),%xmm3
  movdqa D32(%rip),%xmm5
  pcmpeqb %xmm2,%xmm3
  movdqa %xmm5,%xmm6
  pand   %xmm3,%xmm6
  pandn  %xmm1,%xmm3
  movdqa %xmm3,%xmm1
  movdqu 0x40(%rdi),%xmm3
  por    %xmm6,%xmm1
  pcmpeqb %xmm4,%xmm3
  pand   %xmm3,%xmm5
  pandn  %xmm0,%xmm3
  movdqa %xmm3,%xmm0
  por    %xmm5,%xmm0
  cmp    $0x5,%al
  je     L59
  movdqu 0x50(%rdi),%xmm3
  movdqa D74(%rip),%xmm5
  pcmpeqb %xmm2,%xmm3
  movdqa %xmm5,%xmm6
  pand   %xmm3,%xmm6
  pandn  %xmm1,%xmm3
  movdqa %xmm3,%xmm1
  movdqu 0x50(%rdi),%xmm3
  por    %xmm6,%xmm1
  pcmpeqb %xmm4,%xmm3
  pand   %xmm3,%xmm5
  pandn  %xmm0,%xmm3
  movdqa %xmm3,%xmm0
  por    %xmm5,%xmm0
  cmp    $0x7,%al
  jne    L59
  movdqu 0x60(%rdi),%xmm7
  movdqa D68(%rip),%xmm3
  pcmpeqb %xmm7,%xmm2
  movdqa %xmm3,%xmm5
  pand   %xmm2,%xmm5
  pandn  %xmm1,%xmm2
  movdqa %xmm2,%xmm1
  movdqa %xmm7,%xmm2
  pcmpeqb %xmm4,%xmm2
  por    %xmm5,%xmm1
  pand   %xmm2,%xmm3
  pandn  %xmm0,%xmm2
  por    %xmm3,%xmm2
  movdqa %xmm2,%xmm0
L59:
  movdqa %xmm0,%xmm3
  mov    %esi,%eax
  psrldq $0x8,%xmm3
  and    $0xfffffff0,%eax
  and    $0xf,%esi
  movdqa %xmm3,%xmm2
  pcmpgtb %xmm0,%xmm2
  pand   %xmm2,%xmm3
  pandn  %xmm0,%xmm2
  por    %xmm3,%xmm2
  movdqa %xmm2,%xmm3
  psrldq $0x4,%xmm3
  movdqa %xmm3,%xmm0
  pcmpgtb %xmm2,%xmm0
  pand   %xmm0,%xmm3
  pandn  %xmm2,%xmm0
  por    %xmm3,%xmm0
  movdqa %xmm0,%xmm3
  psrldq $0x2,%xmm3
  movdqa %xmm3,%xmm2
  pcmpgtb %xmm0,%xmm2
  pand   %xmm2,%xmm3
  pandn  %xmm0,%xmm2
  por    %xmm3,%xmm2
  movdqa %xmm2,%xmm3
  psrldq $0x1,%xmm3
  movdqa %xmm3,%xmm0
  pcmpgtb %xmm2,%xmm0
  pand   %xmm0,%xmm3
  pandn  %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  por    %xmm3,%xmm0
  psrldq $0x8,%xmm2
  movd   %xmm0,%ecx
  movdqa %xmm2,%xmm0
  pcmpgtb %xmm1,%xmm0
  pand   %xmm0,%xmm2
  pandn  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  por    %xmm2,%xmm1
  movdqa %xmm1,%xmm2
  psrldq $0x4,%xmm2
  movdqa %xmm2,%xmm0
  pcmpgtb %xmm1,%xmm0
  pand   %xmm0,%xmm2
  pandn  %xmm1,%xmm0
  por    %xmm2,%xmm0
  movdqa %xmm0,%xmm2
  psrldq $0x2,%xmm2
  movdqa %xmm2,%xmm1
  pcmpgtb %xmm0,%xmm1
  pand   %xmm1,%xmm2
  pandn  %xmm0,%xmm1
  por    %xmm2,%xmm1
  movdqa %xmm1,%xmm2
  psrldq $0x1,%xmm2
  movdqa %xmm2,%xmm0
  pcmpgtb %xmm1,%xmm0
  pand   %xmm0,%xmm2
  pandn  %xmm1,%xmm0
  por    %xmm2,%xmm0
  movd   %xmm0,%r8d
  jne    L41
  jmp    L137
  nopw   0x0(%rax,%rax,1)
L109:
  cmp    $0x3,%dl
  cmove  %eax,%ecx
  add    $0x1,%eax
  cmp    %al,%r9b
  jle    L137
L41:
  movsbq %al,%rdx
  movzbl (%rdi,%rdx,1),%edx
  cmp    $0x2,%dl
  jne    L109
  mov    %eax,%r8d
  add    $0x1,%eax
  cmp    %al,%r9b
  jg     L41
L137:
  xor    %eax,%eax
  test   %r8b,%r8b
  js     L140
  cmp    %cl,%r8b
  jl     L76
L140:
  ret
  nopl   0x0(%rax,%rax,1)
L76:
  movsbq %cl,%rax
  movb   $0x0,(%rdi,%rax,1)
  movsbq %r8b,%rax
  lea    0x1(%rdi,%rax,1),%rax
  mov    %rax,(%r10)
  lea    -0x1(%rcx),%eax
  sub    %r8d,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L84:
  xor    %eax,%eax
  ret
L50:
  xor    %eax,%eax
  mov    $0xffffffff,%ecx
  mov    $0xffffffff,%r8d
  jmp    L41
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D66
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D24
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D19
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D58
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D10
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D51
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D32
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D74
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D68
type_guessed: byte[16]

tool: {"D66": [0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02]}

tool: {"D24": [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f]}

tool: {"D19": [0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03]}

tool: {"D58": [0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f]}

tool: {"D10": [0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f]}

tool: {"D51": [0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f]}

tool: {"D32": [0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f]}

tool: {"D74": [0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f]}

tool: {"D68": [0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f]}

assistant: ```c
char resp_len(char **buf_p, char size) {
  char start = -1, stop = -1, i;
  char *buf = *buf_p;
  for (i = 0; i < size; i++) {
    if (buf[i] == '\x2')
      start = i;
    else if (buf[i] == '\x3')
      stop = i;
  }
  if (start >= 0 && stop - start > 0) {
    buf[stop] = '\0';
    *buf_p = buf + start + 1;
    return stop - start - 1;
  }
  return 0;
}
```