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

```asm
<main>:
  endbr64
  push   %rbp
  lea    D47(%rip),%rsi
  sub    $0x110,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x108(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D144(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D9(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L182
  lea    D434(%rip),%rdi
  call   <puts@plt>
L67:
  lea    D394(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D285(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D63(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L66
  lea    D434(%rip),%rdi
  call   <puts@plt>
L116:
  lea    D280(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D120(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D135(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L30
  lea    D434(%rip),%rdi
  call   <puts@plt>
L120:
  lea    D382(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D212(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D360(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L148
  lea    D434(%rip),%rdi
  call   <puts@plt>
L10:
  lea    D413(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D343(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D173(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L8
  lea    D434(%rip),%rdi
  call   <puts@plt>
L32:
  lea    D336(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D17(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L65
  lea    D434(%rip),%rdi
  call   <puts@plt>
L24:
  lea    D264(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D105(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D57(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L86
  lea    D434(%rip),%rdi
  call   <puts@plt>
L13:
  lea    D217(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D444(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D436(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L12
  lea    D434(%rip),%rdi
  call   <puts@plt>
L162:
  lea    D374(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D424(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  lea    D354(%rip),%rdi
  call   <system@plt>
  test   %eax,%eax
  jne    L18
  lea    D434(%rip),%rdi
  call   <puts@plt>
L21:
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L157
  add    $0x110,%rsp
  xor    %eax,%eax
  pop    %rbp
  ret
L182:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L67
L18:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L21
L12:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L162
L86:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L13
L65:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L24
L8:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L32
L148:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L10
L30:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L120
L66:
  lea    D431(%rip),%rdi
  call   <puts@plt>
  jmp    L116
L157:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D47
type: string
name: unpack_data
arguments: data_tag: D144
type: string
name: unpack_data
arguments: data_tag: D9
type: string
name: unpack_data
arguments: data_tag: D434
type: string
name: unpack_data
arguments: data_tag: D394
type: string
name: unpack_data
arguments: data_tag: D285
type: string
name: unpack_data
arguments: data_tag: D63
type: string
name: unpack_data
arguments: data_tag: D280
type: string
name: unpack_data
arguments: data_tag: D120
type: string
name: unpack_data
arguments: data_tag: D135
type: string
name: unpack_data
arguments: data_tag: D382
type: string
name: unpack_data
arguments: data_tag: D212
type: string
name: unpack_data
arguments: data_tag: D360
type: string
name: unpack_data
arguments: data_tag: D413
type: string
name: unpack_data
arguments: data_tag: D343
type: string
name: unpack_data
arguments: data_tag: D173
type: string
name: unpack_data
arguments: data_tag: D336
type: string
name: unpack_data
arguments: data_tag: D0
type: string
name: unpack_data
arguments: data_tag: D17
type: string
name: unpack_data
arguments: data_tag: D264
type: string
name: unpack_data
arguments: data_tag: D105
type: string
name: unpack_data
arguments: data_tag: D57
type: string
name: unpack_data
arguments: data_tag: D217
type: string
name: unpack_data
arguments: data_tag: D444
type: string
name: unpack_data
arguments: data_tag: D436
type: string
name: unpack_data
arguments: data_tag: D374
type: string
name: unpack_data
arguments: data_tag: D424
type: string
name: unpack_data
arguments: data_tag: D354
type: string
name: unpack_data
arguments: data_tag: D431
type: string

tool: D47: ./enc -i tst/msg0.txt -o tst/msg0.crypto -p fish

tool: D144: ./dec -i tst/msg0.crypto -o tst/msg0.plain -p fish

tool: D9: diff tst/msg0.txt tst/msg0.plain

tool: D434: pass


tool: D394: ./enc -i tst/msg1.txt -o tst/msg1.crypto -p fish

tool: D285: ./dec -i tst/msg1.crypto -o tst/msg1.plain -p fish

tool: D63: diff tst/msg1.txt tst/msg1.plain

tool: D280: ./enc -i tst/msg2.txt -o tst/msg2.crypto -p fish

tool: D120: ./dec -i tst/msg2.crypto -o tst/msg2.plain -p fish

tool: D135: diff tst/msg2.txt tst/msg2.plain

tool: D382: ./emb -c covers/logo.ppm -m tst/msg0.txt -s tst/msg0.ppm

tool: D212: ./ext -s tst/msg0.ppm -m tst/msg0.plain2

tool: D360: diff tst/msg0.txt tst/msg0.plain2

tool: D413: ./emb -c covers/logo.ppm -m tst/msg1.txt -s tst/msg1.ppm

tool: D343: ./ext -s tst/msg1.ppm -m tst/msg1.plain2

tool: D173: diff tst/msg1.txt tst/msg1.plain2

tool: D336: ./emb -c covers/logo.ppm -m tst/msg2.txt -s tst/msg2.ppm

tool: D0: ./ext -s tst/msg2.ppm -m tst/msg2.plain2

tool: D17: diff tst/msg2.txt tst/msg2.plain2

tool: D264: ./encemb -c covers/logo.ppm -m tst/msg0.txt -s tst/msg0.ppm -p fish

tool: D105: ./extdec -s tst/msg0.ppm -m tst/msg0.plain3 -p fish

tool: D57: diff tst/msg0.txt tst/msg0.plain3

tool: D217: ./encemb -c covers/logo.ppm -m tst/msg1.txt -s tst/msg1.ppm -p fish

tool: D444: ./extdec -s tst/msg1.ppm -m tst/msg1.plain3 -p fish

tool: D436: diff tst/msg1.txt tst/msg1.plain3

tool: D374: ./encemb -c covers/logo.ppm -m tst/msg2.txt -s tst/msg2.ppm -p fish

tool: D424: ./extdec -s tst/msg2.ppm -m tst/msg2.plain3 -p fish

tool: D354: diff tst/msg2.txt tst/msg2.plain3

tool: D431: fail


assistant: ```c
int main() {
  char cmd[256];
  int r;
  strcpy(cmd, "./enc -i tst/msg0.txt -o tst/msg0.crypto -p fish");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./dec -i tst/msg0.crypto -o tst/msg0.plain -p fish");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg0.txt tst/msg0.plain");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./enc -i tst/msg1.txt -o tst/msg1.crypto -p fish");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./dec -i tst/msg1.crypto -o tst/msg1.plain -p fish");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg1.txt tst/msg1.plain");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./enc -i tst/msg2.txt -o tst/msg2.crypto -p fish");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./dec -i tst/msg2.crypto -o tst/msg2.plain -p fish");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg2.txt tst/msg2.plain");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./emb -c covers/logo.ppm -m tst/msg0.txt -s tst/msg0.ppm");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./ext -s tst/msg0.ppm -m tst/msg0.plain2");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg0.txt tst/msg0.plain2");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./emb -c covers/logo.ppm -m tst/msg1.txt -s tst/msg1.ppm");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./ext -s tst/msg1.ppm -m tst/msg1.plain2");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg1.txt tst/msg1.plain2");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./emb -c covers/logo.ppm -m tst/msg2.txt -s tst/msg2.ppm");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./ext -s tst/msg2.ppm -m tst/msg2.plain2");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg2.txt tst/msg2.plain2");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./encemb -c covers/logo.ppm -m tst/msg0.txt -s tst/msg0.ppm -p fish");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./extdec -s tst/msg0.ppm -m tst/msg0.plain3 -p fish");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg0.txt tst/msg0.plain3");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./encemb -c covers/logo.ppm -m tst/msg1.txt -s tst/msg1.ppm -p fish");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./extdec -s tst/msg1.ppm -m tst/msg1.plain3 -p fish");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg1.txt tst/msg1.plain3");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  strcpy(cmd, "./encemb -c covers/logo.ppm -m tst/msg2.txt -s tst/msg2.ppm -p fish");
  printf("%s\n", cmd);
  system(cmd);
  strcpy(cmd, "./extdec -s tst/msg2.ppm -m tst/msg2.plain3 -p fish");
  printf("%s\n", cmd);
  system(cmd);
  r = system("diff tst/msg2.txt tst/msg2.plain3");
  (!r) ? printf("pass\n\n") : printf("fail\n\n");
  return 0;
}
```