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

```asm
<send_code_param>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x130,%rsp
  mov    %edi,-0x124(%rbp)
  mov    %esi,-0x128(%rbp)
  mov    %rdx,-0x130(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x110(%rbp)
  movq   $0x0,-0x108(%rbp)
  movq   $0x0,-0x100(%rbp)
  movq   $0x0,-0xf8(%rbp)
  movq   $0x0,-0xf0(%rbp)
  movq   $0x0,-0xe8(%rbp)
  movq   $0x0,-0xe0(%rbp)
  movq   $0x0,-0xd8(%rbp)
  movq   $0x0,-0xd0(%rbp)
  movq   $0x0,-0xc8(%rbp)
  movq   $0x0,-0xc0(%rbp)
  movq   $0x0,-0xb8(%rbp)
  movq   $0x0,-0xb0(%rbp)
  movq   $0x0,-0xa8(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  movq   $0x0,-0x90(%rbp)
  movq   $0x0,-0x88(%rbp)
  movq   $0x0,-0x80(%rbp)
  movq   $0x0,-0x78(%rbp)
  movq   $0x0,-0x70(%rbp)
  movq   $0x0,-0x68(%rbp)
  movq   $0x0,-0x60(%rbp)
  movq   $0x0,-0x58(%rbp)
  movq   $0x0,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  cmpl   $0x96,-0x128(%rbp)
  jne    L193
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D139(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L193:
  cmpl   $0xc8,-0x128(%rbp)
  jne    L29
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D64(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L29:
  cmpl   $0xd7,-0x128(%rbp)
  jne    L82
  mov    -0x130(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rdx,%rcx
  lea    D50(%rip),%rdx
  mov    $0xff,%esi
  mov    %rax,%rdi
  call   <snprintf@plt>
  jmp    L34
L82:
  cmpl   $0xdc,-0x128(%rbp)
  jne    L167
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D3(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L167:
  cmpl   $0xdd,-0x128(%rbp)
  jne    L140
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D112(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L140:
  cmpl   $0xe2,-0x128(%rbp)
  jne    L218
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D58(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L218:
  cmpl   $0xe3,-0x128(%rbp)
  jne    L228
  mov    -0x130(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rdx,%rcx
  lea    D48(%rip),%rdx
  mov    $0xff,%esi
  mov    %rax,%rdi
  call   <snprintf@plt>
  jmp    L34
L228:
  cmpl   $0xe6,-0x128(%rbp)
  jne    L192
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D74(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L192:
  cmpl   $0xfa,-0x128(%rbp)
  jne    L30
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D136(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L30:
  cmpl   $0x101,-0x128(%rbp)
  jne    L250
  mov    -0x130(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rdx,%rcx
  lea    D5(%rip),%rdx
  mov    $0xff,%esi
  mov    %rax,%rdi
  call   <snprintf@plt>
  jmp    L34
L250:
  cmpl   $0x14b,-0x128(%rbp)
  jne    L154
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D117(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L154:
  cmpl   $0x1f4,-0x128(%rbp)
  jne    L195
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D143(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L195:
  cmpl   $0x226,-0x128(%rbp)
  jne    L232
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D78(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  jmp    L34
L232:
  lea    D153(%rip),%rax
  mov    %rax,%rdi
  call   <epicfail@plt>
L34:
  lea    -0x110(%rbp),%rax
  mov    $0xff,%edx
  lea    D95(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncat@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%edx
  lea    -0x110(%rbp),%rcx
  mov    -0x124(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <write@plt>
  mov    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  cmp    -0x118(%rbp),%eax
  je     L258
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  call   <epicfail@plt>
L258:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L179
  call   <__stack_chk_fail@plt>
L179:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D139
type: string
name: unpack_data
arguments: label: D64
type: string
name: unpack_data
arguments: label: D50
type: string
name: unpack_data
arguments: label: D3
type: string
name: unpack_data
arguments: label: D112
type: string
name: unpack_data
arguments: label: D58
type: string
name: unpack_data
arguments: label: D48
type: string
name: unpack_data
arguments: label: D74
type: string
name: unpack_data
arguments: label: D136
type: string
name: unpack_data
arguments: label: D5
type: string
name: unpack_data
arguments: label: D117
type: string
name: unpack_data
arguments: label: D143
type: string
name: unpack_data
arguments: label: D78
type: string
name: unpack_data
arguments: label: D153
type: string
name: unpack_data
arguments: label: D95
type: string
name: unpack_data
arguments: label: D96
type: string

tool: D139: 150 Opening connection

tool: D64: 200 Okay

tool: D50: 215 %s

tool: D3: 220 Service ready

tool: D112: 221 Goodbye

tool: D58: 226 Transfer complete

tool: D48: 227 Entering Passive Mode (%s).

tool: D74: 230 User logged in

tool: D136: 250 Command successful

tool: D5: 257 "%s"


tool: D117: 331 User name ok, need password

tool: D143: 500 Syntax error, command unrecognized

tool: D78: 550 Requested action not taken.

tool: D153: Invalid code.

tool: D95: 


tool: D96: write

assistant: ```c
void send_code_param(int fd, int code, char *p1) {
  char buf[256] = {0};
  if (code == 150)
    strncpy(buf, "150 Opening connection", 256 - 1);
  else if (code == 200)
    strncpy(buf, "200 Okay", 256 - 1);
  else if (code == 215)
    snprintf(buf, 256 - 1, "215 %s", p1);
  else if (code == 220)
    strncpy(buf, "220 Service ready", 256 - 1);
  else if (code == 221)
    strncpy(buf, "221 Goodbye", 256 - 1);
  else if (code == 226)
    strncpy(buf, "226 Transfer complete", 256 - 1);
  else if (code == 227)
    snprintf(buf, 256 - 1, "227 Entering Passive Mode (%s).", p1);
  else if (code == 230)
    strncpy(buf, "230 User logged in", 256 - 1);
  else if (code == 250)
    strncpy(buf, "250 Command successful", 256 - 1);
  else if (code == 257)
    snprintf(buf, 256 - 1, "257 \"%s\"\r\n", p1);
  else if (code == 331)
    strncpy(buf, "331 User name ok, need password", 256 - 1);
  else if (code == 500)
    strncpy(buf, "500 Syntax error, command unrecognized", 256 - 1);
  else if (code == 550)
    strncpy(buf, "550 Requested action not taken.", 256 - 1);
  else
    epicfail("Invalid code.");
  strncat(buf, "\r\n", 256 - 1);
  int len = strlen(buf);
  int bytes_written = write(fd, buf, len);
  if (bytes_written != len)
    epicfail("write");
}
```