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

```asm
<escape_character>:
  endbr64
  push   %r12
  mov    %rsi,%r12
  cmp    $0x27,%dil
  jg     L158
  test   %dil,%dil
  js     L82
  cmp    $0x27,%dil
  ja     L82
  lea    D42(%rip),%rdx
  movzbl %dil,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L158:
  cmp    $0x5c,%dil
  jne    L82
  mov    $0x5,%edx
  lea    D136(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
L129:
  mov    %r12,%rax
  movb   $0x0,0x4(%r12)
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L82:
  movzbl %dil,%ecx
  sub    $0x20,%edi
  cmp    $0x5e,%dil
  ja     L159
  lea    D37(%rip),%rdx
  mov    $0x5,%esi
  mov    %r12,%rdi
  call   <snprintf@plt>
  jmp    L129
  nopw   0x0(%rax,%rax,1)
  mov    $0x5,%edx
  lea    D103(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x5,%edx
  lea    D34(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x5,%edx
  lea    D70(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D61(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D52(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D32(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D26(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D135(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D24(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
  mov    $0x5,%edx
  lea    D45(%rip),%rsi
  mov    %r12,%rdi
  call   <strncpy@plt>
  jmp    L129
  nopl   0x0(%rax)
L159:
  lea    D40(%rip),%rdx
  mov    $0x5,%esi
  mov    %r12,%rdi
  call   <snprintf@plt>
  jmp    L129
```

tool_calls: name: disassemble_data
arguments: tag: D136
type_infered: string
name: disassemble_data
arguments: tag: D37
type_infered: string
name: disassemble_data
arguments: tag: D103
type_infered: string
name: disassemble_data
arguments: tag: D34
type_infered: string
name: disassemble_data
arguments: tag: D70
type_infered: string
name: disassemble_data
arguments: tag: D61
type_infered: string
name: disassemble_data
arguments: tag: D52
type_infered: string
name: disassemble_data
arguments: tag: D32
type_infered: string
name: disassemble_data
arguments: tag: D26
type_infered: string
name: disassemble_data
arguments: tag: D135
type_infered: string
name: disassemble_data
arguments: tag: D24
type_infered: string
name: disassemble_data
arguments: tag: D45
type_infered: string
name: disassemble_data
arguments: tag: D40
type_infered: string

tool: D136: \\

tool: D37: %c

tool: D103: \0

tool: D34: \a

tool: D70: \b

tool: D61: \t

tool: D52: \n

tool: D32: \v

tool: D26: \f

tool: D135: \r

tool: D24: \"

tool: D45: \'

tool: D40: \x%02x

assistant: ```c
const char *escape_character(char ch, char (*buf)[5]) {
  switch (ch) {
  case '\x00':
    strncpy(*buf, "\\0", 5);
    break;
  case '\x07':
    strncpy(*buf, "\\a", 5);
    break;
  case '\x08':
    strncpy(*buf, "\\b", 5);
    break;
  case '\x0c':
    strncpy(*buf, "\\f", 5);
    break;
  case '\x0a':
    strncpy(*buf, "\\n", 5);
    break;
  case '\x0d':
    strncpy(*buf, "\\r", 5);
    break;
  case '\x09':
    strncpy(*buf, "\\t", 5);
    break;
  case '\x0b':
    strncpy(*buf, "\\v", 5);
    break;
  case '\\':
    strncpy(*buf, "\\\\", 5);
    break;
  case '\'':
    strncpy(*buf, "\\\'", 5);
    break;
  case '\"':
    strncpy(*buf, "\\\"", 5);
    break;
  default:
    if (ch >= '\x20' && ch < '\x7f')
      snprintf(*buf, 5, "%c", ch);
    else
      snprintf(*buf, 5, "\\x%02x", (unsigned char)ch);
  }
  (*buf)[4] = '\0';
  return (char *)buf;
}
```