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

```asm
<rdo_postgres_params_inject_markers>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x8,%rsp
  call   <strlen@plt>
  mov    %eax,%ebp
  test   %eax,%eax
  jne    L280
L33:
  mov    %ebp,%edi
  call   <malloc@plt>
  mov    %rax,%r13
  movzbl (%rbx),%eax
  mov    %r13,%rbp
  test   %al,%al
  je     L247
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %r10d,%r10d
  xor    %r9d,%r9d
  xor    %r14d,%r14d
  mov    $0x3f,%r15d
  lea    D11(%rip),%r12
  lea    D6(%rip),%r8
  nopl   0x0(%rax)
L125:
  lea    0x1(%rbx),%rdx
  cmp    $0x3f,%al
  jg     L309
  cmp    $0x9,%al
  jle    L259
  lea    -0xa(%rax),%ecx
  cmp    $0x35,%cl
  ja     L259
  movzbl %cl,%ecx
  movslq (%r12,%rcx,4),%rcx
  add    %r12,%rcx
  notrack jmp *%rcx
  nopl   0x0(%rax)
L309:
  cmp    $0x5c,%al
  jne    L259
  mov    %esi,%ecx
  or     %edi,%ecx
  or     %r10d,%ecx
  or     %r9d,%ecx
  je     L8
  nopl   0x0(%rax)
L259:
  mov    %al,0x0(%rbp)
  mov    %rbx,%rdx
L69:
  movzbl 0x1(%rdx),%eax
  lea    0x1(%rdx),%rbx
  add    $0x1,%rbp
  test   %al,%al
  jne    L125
L247:
  movb   $0x0,0x0(%rbp)
  add    $0x8,%rsp
  mov    %r13,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
  mov    %al,0x0(%rbp)
  mov    %rbx,%rdx
  xor    %edi,%edi
  jmp    L69
  nopw   0x0(%rax,%rax,1)
  mov    %esi,%eax
  or     %edi,%eax
  or     %r9d,%eax
  jne    L50
  movb   $0x22,0x0(%rbp)
  xor    $0x1,%r10d
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %r9d,%r9d
  mov    %rbx,%rdx
  jmp    L69
  nopl   0x0(%rax)
  mov    %esi,%eax
  or     %edi,%eax
  or     %r10d,%eax
  or     %r9d,%eax
  je     L314
  movb   $0x3f,0x0(%rbp)
  mov    %rbx,%rdx
  jmp    L69
  nopl   0x0(%rax)
  test   %esi,%esi
  je     L142
  cmpb   $0x2f,0x1(%rbx)
  je     L115
L142:
  movb   $0x2a,0x0(%rbp)
  mov    %rbx,%rdx
  jmp    L69
  nopw   0x0(%rax,%rax,1)
  mov    %esi,%eax
  or     %edi,%eax
  or     %r10d,%eax
  jne    L25
  movb   $0x27,0x0(%rbp)
  xor    $0x1,%r9d
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %r10d,%r10d
  mov    %rbx,%rdx
  jmp    L69
  nopl   0x0(%rax,%rax,1)
  mov    %edi,%eax
  or     %r10d,%eax
  or     %r9d,%eax
  jne    L169
  cmpb   $0x2a,0x1(%rbx)
  je     L127
L169:
  movb   $0x2f,0x0(%rbp)
  mov    %rbx,%rdx
  jmp    L69
  mov    %esi,%eax
  or     %r10d,%eax
  or     %r9d,%eax
  jne    L181
  cmpb   $0x2d,0x1(%rbx)
  je     L139
L181:
  movb   $0x2d,0x0(%rbp)
  mov    %rbx,%rdx
  jmp    L69
L8:
  cmpb   $0x3f,0x1(%rbx)
  cmove  %r15d,%eax
  cmove  %rdx,%rbx
  jmp    L259
  nopl   0x0(%rax)
L25:
  movb   $0x27,0x0(%rbp)
  mov    %rbx,%rdx
  jmp    L69
  nopl   0x0(%rax)
L50:
  movb   $0x22,0x0(%rbp)
  mov    %rbx,%rdx
  jmp    L69
  nopl   0x0(%rax)
L280:
  mov    %eax,%edi
  call   <log10@plt>
  mov    %eax,%edi
  call   <floor@plt>
  add    $0x2,%eax
  imul   %eax,%ebp
  jmp    L33
  nopl   0x0(%rax)
L314:
  add    $0x1,%r14d
  mov    %r8,%rsi
  mov    %rbp,%rdi
  mov    %r14d,%edx
  call   <sprintf@plt>
  mov    %r14d,%edi
  call   <log10@plt>
  mov    %eax,%edi
  call   <floor@plt>
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %r10d,%r10d
  add    $0x1,%eax
  xor    %r9d,%r9d
  lea    D6(%rip),%r8
  mov    %rbx,%rdx
  cltq
  add    %rax,%rbp
  jmp    L69
  nopw   0x0(%rax,%rax,1)
L115:
  movb   $0x2a,0x0(%rbp)
  movzbl 0x1(%rbx),%eax
  sub    $0x1,%esi
  add    $0x1,%rbp
  mov    %al,0x0(%rbp)
  jmp    L69
  nopw   0x0(%rax,%rax,1)
L127:
  movb   $0x2f,0x0(%rbp)
  movzbl 0x1(%rbx),%eax
  add    $0x1,%esi
  xor    %edi,%edi
  xor    %r10d,%r10d
  xor    %r9d,%r9d
  add    $0x1,%rbp
  mov    %al,0x0(%rbp)
  jmp    L69
  nop
L139:
  movb   $0x2d,0x0(%rbp)
  movzbl 0x1(%rbx),%eax
  xor    %esi,%esi
  xor    %r10d,%r10d
  xor    %r9d,%r9d
  add    $0x1,%rbp
  mov    $0x1,%edi
  mov    %al,0x0(%rbp)
  jmp    L69
```

tool_calls: name: unpack_data
arguments: label: D6
data_type: string

tool: D6: $%i

assistant: ```c
char *rdo_postgres_params_inject_markers(char *stmt) {
  int len = strlen(stmt);
  char *buf = malloc(sizeof(char) * len ? (len * (floor(log10(len)) + 2)) : 0);
  char *s = stmt;
  char *b = buf;
  int n = 0;
  int instr = 0;
  int inident = 0;
  int inslcmt = 0;
  int inmlcmt = 0;
  for (; *s; ++s, ++b) {
    switch (*s) {
    case '/':
      if (!instr && !inident && !inslcmt && *(s + 1) == '*') {
        ++inmlcmt;
        *b = *s;
        *(++b) = *(++s);
      } else {
        *b = *s;
      }
      break;
    case '*':
      if (inmlcmt && *(s + 1) == '/') {
        --inmlcmt;
        *b = *s;
        *(++b) = *(++s);
      } else {
        *b = *s;
      }
      break;
    case '-':
      if (!instr && !inident && !inmlcmt && *(s + 1) == '-') {
        inslcmt = 1;
        *b = *s;
        *(++b) = *(++s);
      } else {
        *b = *s;
      }
      break;
    case '\n':
    case '\r':
      inslcmt = 0;
      *b = *s;
      break;
    case '\'':
      if (!inident && !inmlcmt && !inslcmt) {
        instr = !instr;
        *b = *s;
      } else {
        *b = *s;
      }
      break;
    case '\\':
      if (!instr && !inident && !inmlcmt && !inslcmt && *(s + 1) == '?')
        ++s;
      *b = *s;
      break;
    case '"':
      if (!instr && !inmlcmt && !inslcmt) {
        inident = !inident;
        *b = *s;
      } else {
        *b = *s;
      }
      break;
    case '?':
      if (!instr && !inident && !inmlcmt && !inslcmt) {
        sprintf(b, "$%i", ++n);
        b += (n > 0 ? (int)floor(log10(n)) + 2 : 2) - 1;
      } else {
        *b = *s;
      }
      break;
    default:
      *b = *s;
      break;
    }
  }
  *b = '\0';
  return buf;
}
```