user: Converte this assembly snippet into its equivalent C code:

```asm
<escape_char_process>:
  endbr64
  push   %rbp
  mov    %edx,%r8d
  mov    %rdi,%r11
  mov    %rsi,%rdi
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  lea    0x1(%rdx),%eax
  mov    %rsp,%rcx
  cltq
  add    $0xf,%rax
  mov    %rax,%rdx
  and    $0xfffffffffffff000,%rax
  sub    %rax,%rcx
  and    $0xfffffffffffffff0,%rdx
  cmp    %rcx,%rsp
  je     L129
L207:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rcx,%rsp
  jne    L207
L129:
  and    $0xfff,%edx
  sub    %rdx,%rsp
  test   %rdx,%rdx
  jne    L192
L9:
  mov    %rsp,%r9
  mov    $0x1,%eax
  xor    %edx,%edx
  lea    D5(%rip),%rbx
  jmp    L158
L165:
  add    $0x1,%edx
L131:
  mov    %cl,-0x1(%r9,%rax,1)
  mov    %eax,%r10d
  add    $0x1,%rax
  cmp    %r8d,%edx
  jge    L203
L158:
  movslq %edx,%rsi
  movzbl (%rdi,%rsi,1),%ecx
  cmp    $0x5c,%cl
  jne    L165
  movzbl 0x1(%rdi,%rsi,1),%r10d
  lea    -0x30(%r10),%esi
  cmp    $0x46,%sil
  ja     L165
  movzbl %sil,%esi
  movslq (%rbx,%rsi,4),%rsi
  add    %rbx,%rsi
  notrack jmp *%rsi
  add    $0x2,%edx
  mov    $0xb,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x9,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0xd,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0xa,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0xc,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x1b,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x8,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x7,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    %r10d,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x1e,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x1d,%ecx
  jmp    L131
  add    $0x2,%edx
  mov    $0x4,%ecx
  jmp    L131
  add    $0x2,%edx
  xor    %ecx,%ecx
  jmp    L131
  nopl   0x0(%rax)
L203:
  movslq %r10d,%rax
  mov    %r10d,%edx
  mov    %r9,%rsi
  mov    %r11,%rdi
  movb   $0x0,(%r9,%rax,1)
  call   <ZBarcode_Encode@plt>
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  jne    L142
  mov    -0x8(%rbp),%rbx
  leave
  ret
  nopl   0x0(%rax,%rax,1)
L192:
  orq    $0x0,-0x8(%rsp,%rdx,1)
  jmp    L9
L142:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int escape_char_process(struct zint_symbol *my_symbol, unsigned char input_string[], int length) {
  int error_number;
  int i, j;
  unsigned char escaped_string[length + 1];
  i = 0;
  j = 0;
  do {
    if (input_string[i] == '\\') {
      switch (input_string[i + 1]) {
      case '0':
        escaped_string[j] = 0x00;
        i += 2;
        break;
      case 'E':
        escaped_string[j] = 0x04;
        i += 2;
        break;
      case 'a':
        escaped_string[j] = 0x07;
        i += 2;
        break;
      case 'b':
        escaped_string[j] = 0x08;
        i += 2;
        break;
      case 't':
        escaped_string[j] = 0x09;
        i += 2;
        break;
      case 'n':
        escaped_string[j] = 0x0a;
        i += 2;
        break;
      case 'v':
        escaped_string[j] = 0x0b;
        i += 2;
        break;
      case 'f':
        escaped_string[j] = 0x0c;
        i += 2;
        break;
      case 'r':
        escaped_string[j] = 0x0d;
        i += 2;
        break;
      case 'e':
        escaped_string[j] = 0x1b;
        i += 2;
        break;
      case 'G':
        escaped_string[j] = 0x1d;
        i += 2;
        break;
      case 'R':
        escaped_string[j] = 0x1e;
        i += 2;
        break;
      case '\\':
        escaped_string[j] = '\\';
        i += 2;
        break;
      default:
        escaped_string[j] = input_string[i];
        i++;
        break;
      }
    } else {
      escaped_string[j] = input_string[i];
      i++;
    }
    j++;
  } while (i < length);
  escaped_string[j] = '\0';
  error_number = ZBarcode_Encode(my_symbol, escaped_string, j);
  return error_number;
}
```