user: 下面的汇编指令对应的C源代码是什么：

```asm
<desas2>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x158,%rsp
  mov    %rsi,%rbp
  mov    %fs:0x28,%rax
  mov    %rax,0x148(%rsp)
  xor    %eax,%eax
  lea    D260(%rip),%rax
  mov    %rax,0x40(%rsp)
  lea    D181(%rip),%rax
  mov    %rax,0x48(%rsp)
  lea    D223(%rip),%rax
  mov    %rax,0x50(%rsp)
  lea    D23(%rip),%rax
  mov    %rax,0x58(%rsp)
  lea    D117(%rip),%rax
  mov    %rax,0x60(%rsp)
  lea    D335(%rip),%rax
  mov    %rax,0x68(%rsp)
  lea    D276(%rip),%rax
  mov    %rax,0x70(%rsp)
  lea    D299(%rip),%rax
  mov    %rax,0x78(%rsp)
  lea    D158(%rip),%rax
  mov    %rax,0x80(%rsp)
  lea    D148(%rip),%rax
  mov    %rax,0x88(%rsp)
  lea    D219(%rip),%rax
  mov    %rax,0x90(%rsp)
  lea    D298(%rip),%rax
  mov    %rax,0x98(%rsp)
  lea    D347(%rip),%rax
  mov    %rax,0xa0(%rsp)
  lea    D203(%rip),%rax
  mov    %rax,0xa8(%rsp)
  lea    D340(%rip),%rax
  mov    %rax,0xb0(%rsp)
  lea    D346(%rip),%rax
  mov    %rax,0xb8(%rsp)
  lea    D95(%rip),%rax
  mov    %rax,0xc0(%rsp)
  lea    D267(%rip),%rax
  mov    %rax,0xc8(%rsp)
  lea    D240(%rip),%rax
  mov    %rax,0xd0(%rsp)
  lea    D212(%rip),%rax
  mov    %rax,0xd8(%rsp)
  lea    D277(%rip),%rax
  mov    %rax,0xe0(%rsp)
  lea    D323(%rip),%rax
  mov    %rax,0xe8(%rsp)
  lea    D230(%rip),%rax
  mov    %rax,0xf0(%rsp)
  lea    D123(%rip),%rax
  mov    %rax,0xf8(%rsp)
  lea    D296(%rip),%rax
  mov    %rax,0x100(%rsp)
  lea    D320(%rip),%rax
  mov    %rax,0x108(%rsp)
  lea    D257(%rip),%rax
  mov    %rax,0x110(%rsp)
  lea    D364(%rip),%rax
  mov    %rax,0x118(%rsp)
  lea    D42(%rip),%rax
  mov    %rax,0x120(%rsp)
  lea    D157(%rip),%rax
  mov    %rax,0x128(%rsp)
  lea    D22(%rip),%rax
  mov    %rax,0x130(%rsp)
  lea    D60(%rip),%rax
  mov    %rax,0x138(%rsp)
  lea    D243(%rip),%rax
  mov    %rax,(%rsp)
  lea    D399(%rip),%rax
  mov    %rax,0x8(%rsp)
  lea    D133(%rip),%rax
  mov    %rax,0x10(%rsp)
  lea    D233(%rip),%rax
  mov    %rax,0x18(%rsp)
  lea    D10(%rip),%rax
  mov    %rax,0x20(%rsp)
  lea    D297(%rip),%rax
  mov    %rax,0x28(%rsp)
  lea    D226(%rip),%rax
  mov    %rax,0x30(%rsp)
  lea    D290(%rip),%rax
  mov    %rax,0x38(%rsp)
  mov    (%rdi),%ebx
  mov    %ebx,%eax
  sar    $0x5,%eax
  and    $0x1f,%eax
  mov    0x40(%rsp,%rax,8),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  sar    $0x2,%ebx
  and    $0x7,%ebx
  mov    (%rsp,%rbx,8),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    0x148(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  mov    $0x1,%eax
  add    $0x158,%rsp
  pop    %rbx
  pop    %rbp
  ret
L2:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: tag: D260
data_type: string
name: read_data
arguments: tag: D181
data_type: string
name: read_data
arguments: tag: D223
data_type: string
name: read_data
arguments: tag: D23
data_type: string
name: read_data
arguments: tag: D117
data_type: string
name: read_data
arguments: tag: D335
data_type: string
name: read_data
arguments: tag: D276
data_type: string
name: read_data
arguments: tag: D299
data_type: string
name: read_data
arguments: tag: D158
data_type: string
name: read_data
arguments: tag: D148
data_type: string
name: read_data
arguments: tag: D219
data_type: string
name: read_data
arguments: tag: D298
data_type: string
name: read_data
arguments: tag: D347
data_type: string
name: read_data
arguments: tag: D203
data_type: string
name: read_data
arguments: tag: D340
data_type: string
name: read_data
arguments: tag: D346
data_type: string
name: read_data
arguments: tag: D95
data_type: string
name: read_data
arguments: tag: D267
data_type: string
name: read_data
arguments: tag: D240
data_type: string
name: read_data
arguments: tag: D212
data_type: string
name: read_data
arguments: tag: D277
data_type: string
name: read_data
arguments: tag: D323
data_type: string
name: read_data
arguments: tag: D230
data_type: string
name: read_data
arguments: tag: D123
data_type: string
name: read_data
arguments: tag: D296
data_type: string
name: read_data
arguments: tag: D320
data_type: string
name: read_data
arguments: tag: D257
data_type: string
name: read_data
arguments: tag: D364
data_type: string
name: read_data
arguments: tag: D42
data_type: string
name: read_data
arguments: tag: D157
data_type: string
name: read_data
arguments: tag: D22
data_type: string
name: read_data
arguments: tag: D60
data_type: string
name: read_data
arguments: tag: D243
data_type: string
name: read_data
arguments: tag: D399
data_type: string
name: read_data
arguments: tag: D133
data_type: string
name: read_data
arguments: tag: D233
data_type: string
name: read_data
arguments: tag: D10
data_type: string
name: read_data
arguments: tag: D297
data_type: string
name: read_data
arguments: tag: D226
data_type: string
name: read_data
arguments: tag: D290
data_type: string

tool: D260: A=0   

tool: D181: B=0   

tool: D223: C=0   

tool: D23: ABEX  

tool: D117: B=A   

tool: D335: ACEX  

tool: D276: C=B   

tool: D299: BCEX  

tool: D158: A=C   

tool: D148: A=A+B 

tool: D219: A=A+C 

tool: D298: A=A+1 

tool: D347: A=A-B 

tool: D203: A=A-1 

tool: D340: A=A-C 

tool: D346: C=C+C 

tool: D95: C=A+C 

tool: D267: C=C+1 

tool: D240: C=A-C 

tool: D212: C=C-1 

tool: D277: C=-C  

tool: D323: C=-C-1

tool: D230: ?B#0  

tool: D123: ?C#0  

tool: D296: ?A<C  

tool: D320: ?A<B  

tool: D257: ?A#0  

tool: D364: ?A#C  

tool: D42: ASR   

tool: D157: BSR   

tool: D22: CSR   

tool: D60: ASL   

tool: D243:  PT

tool: D399:  X 

tool: D133:  WPT

tool: D233:  W 

tool: D10:  PQ

tool: D297:  XS

tool: D226:  M 

tool: D290:  S 

assistant: ```c
int desas2(int *codes, char *ligne) {
  int opc, te;
  char *mnemo[] = {"A=0   ", "B=0   ", "C=0   ", "ABEX  ", "B=A   ", "ACEX  ", "C=B   ", "BCEX  ", "A=C   ", "A=A+B ", "A=A+C ", "A=A+1 ", "A=A-B ", "A=A-1 ", "A=A-C ", "C=C+C ", "C=A+C ", "C=C+1 ", "C=A-C ", "C=C-1 ", "C=-C  ", "C=-C-1", "?B#0  ", "?C#0  ", "?A<C  ", "?A<B  ", "?A#0  ", "?A#C  ", "ASR   ", "BSR   ", "CSR   ", "ASL   "};
  char *champ[] = {" PT", " X ", " WPT", " W ", " PQ", " XS", " M ", " S "};
  opc = (codes[0] >> 5) & 0x1f;
  te = (codes[0] >> 2) & 0x07;
  strcpy(ligne, mnemo[opc]);
  strcat(ligne, champ[te]);
  return (1);
}
```