user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<code_seq>:
  endbr64
  cmpq   $0x0,D192(%rip)
  push   %r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  push   %rbp
  push   %rbx
  je     L95
L127:
  mov    %r13,%rdi
  call   <strlen@plt>
  mov    D248(%rip),%rdi
  mov    %eax,%ebx
  test   %rdi,%rdi
  je     L72
  sub    $0x4,%rdi
  mov    $0x4,%esi
  mov    %rdi,D279(%rip)
  call   <read_array_size@plt>
  lea    0x1(%rbx),%edx
  cmp    %eax,%edx
  jl     L81
  mov    D279(%rip),%rdi
L72:
  call   <vfree@plt>
  lea    0x2(%rbx),%edi
  mov    $0x4,%esi
  call   <vcalloc@plt>
L27:
  mov    D279(%rip),%edx
  lea    0x4(%rax),%r8
  mov    %r8,D150(%rip)
  mov    %edx,(%rax)
  test   %ebx,%ebx
  jle    L42
  mov    D192(%rip),%rdi
  movslq %ebx,%rsi
  xor    %edx,%edx
  nop
L64:
  movsbq 0x0(%r13,%rdx,1),%rcx
  mov    (%rdi,%rcx,4),%ecx
  mov    %ecx,0x4(%rax,%rdx,4)
  add    $0x1,%rdx
  cmp    %rsi,%rdx
  jne    L64
  lea    (%r8,%rdx,4),%rax
L99:
  movl   $0xfa0a1f0a,(%rax)
  mov    %r8,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L81:
  mov    D150(%rip),%rax
  jmp    L27
  nopl   0x0(%rax)
L95:
  mov    %rsi,%rbp
  lea    D150(%rip),%rsi
  mov    %rbp,%rdi
  call   <vstrcmp@plt>
  test   %rax,%rax
  je     L40
  lea    D50(%rip),%rsi
  mov    %rbp,%rdi
  call   <vstrcmp@plt>
  test   %rax,%rax
  jne    L22
L40:
  mov    $0x5,%esi
  mov    $0x4,%edi
  call   <declare_char@plt>
  lea    D119(%rip),%rsi
  mov    %rax,%r14
  movslq D279(%rip),%rax
  mov    (%r14,%rax,8),%rdi
  lea    0x1(%rax),%edx
  mov    %edx,D254(%rip)
  call   <sprintf@plt>
  movslq D254(%rip),%rax
  lea    D254(%rip),%rsi
  mov    (%r14,%rax,8),%rdi
  lea    0x1(%rax),%edx
  mov    %edx,D2(%rip)
  call   <sprintf@plt>
  movslq D2(%rip),%rax
  lea    D2(%rip),%rsi
  mov    (%r14,%rax,8),%rdi
  lea    0x1(%rax),%edx
  mov    %edx,D244(%rip)
  call   <sprintf@plt>
  movslq D244(%rip),%rax
  lea    D244(%rip),%rsi
  mov    (%r14,%rax,8),%rdi
  lea    0x1(%rax),%edx
  mov    %edx,D62(%rip)
  call   <sprintf@plt>
L53:
  mov    $0x4,%esi
  mov    $0x100,%edi
  call   <vcalloc@plt>
  mov    %rax,D62(%rip)
  mov    D62(%rip),%eax
  test   %eax,%eax
  jle    L48
  mov    %r14,%r12
  xor    %ebp,%ebp
  cs nopw 0x0(%rax,%rax,1)
L120:
  mov    (%r12),%rdi
  xor    %ebx,%ebx
  jmp    L46
  nopl   0x0(%rax,%rax,1)
L77:
  mov    (%r12),%rdi
  mov    D62(%rip),%rax
  movsbq (%rdi,%rbx,1),%rdx
  add    $0x1,%rbx
  mov    %ebp,(%rax,%rdx,4)
L46:
  call   <strlen@plt>
  cmp    %ebx,%eax
  jg     L77
  add    $0x1,%ebp
  add    $0x8,%r12
  cmp    %ebp,D62(%rip)
  jg     L120
L48:
  mov    $0xffffffff,%esi
  mov    %r14,%rdi
  call   <free_char@plt>
  jmp    L127
L42:
  mov    %r8,%rax
  jmp    L99
L22:
  lea    D62(%rip),%rsi
  lea    D62(%rip),%rdi
  call   <make_group_aa_mafft@plt>
  mov    %rax,%r14
  jmp    L53
```

tool_calls: name: parse_data
arguments: label: D150
datatype: string
name: parse_data
arguments: label: D50
datatype: string
name: parse_data
arguments: label: D119
datatype: string
name: parse_data
arguments: label: D254
datatype: string
name: parse_data
arguments: label: D2
datatype: string
name: parse_data
arguments: label: D244
datatype: string
name: parse_data
arguments: label: D62
datatype: string

tool: D150: DNA

tool: D50: RNA

tool: D119: Aa

tool: D254: Gg

tool: D2: TtUu

tool: D244: Cc

tool: D62: mafft

assistant: ```c
int *code_seq(char *seq, char *type) {
  static int *code;
  static int *aa, ng;
  int a, b, l;
  if (!aa) {
    char **gl;
    if ((vstrcmp((type), ("DNA")) == 0) || (vstrcmp((type), ("RNA")) == 0)) {
      gl = declare_char(4, 5);
      sprintf(gl[ng++], "Aa");
      sprintf(gl[ng++], "Gg");
      sprintf(gl[ng++], "TtUu");
      sprintf(gl[ng++], "Cc");
    } else {
      gl = make_group_aa_mafft(&ng, "mafft");
    }
    aa = vcalloc(256, sizeof(int));
    for (a = 0; a < ng; a++) {
      for (b = 0; b < strlen(gl[a]); b++) {
        aa[(int)gl[a][b]] = a;
      }
    }
    free_char(gl, -1);
  }
  l = strlen(seq);
  if (code)
    code--;
  if (!code || read_array_size(code, sizeof(int)) < (l + 2)) {
    vfree(code);
    code = vcalloc(l + 2, sizeof(int));
  }
  code[0] = ng;
  code++;
  for (a = 0; a < l; a++) {
    code[a] = aa[(int)seq[a]];
  }
  code[a] = -99999990;
  return code;
}
```