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

```asm
<test_encrypt_cbc>:
  endbr64
  push   %rbp
  mov    $0x40,%edx
  sub    $0x390,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x388(%rsp)
  movabs $0x7e0000002b,%rax
  lea    0x280(%rsp),%rbp
  mov    %rsp,%rcx
  lea    0x40(%rsp),%r8
  lea    0x80(%rsp),%rsi
  mov    %rbp,%rdi
  mov    %rax,(%rsp)
  movabs $0x1600000015,%rax
  mov    %rax,0x8(%rsp)
  movabs $0xae00000028,%rax
  mov    %rax,0x10(%rsp)
  movabs $0xa6000000d2,%rax
  mov    %rax,0x18(%rsp)
  movabs $0xf7000000ab,%rax
  mov    %rax,0x20(%rsp)
  movabs $0x8800000015,%rax
  mov    %rax,0x28(%rsp)
  movabs $0xcf00000009,%rax
  mov    %rax,0x30(%rsp)
  movabs $0x3c0000004f,%rax
  mov    %rax,0x38(%rsp)
  movabs $0x100000000,%rax
  mov    %rax,0x40(%rsp)
  movabs $0x300000002,%rax
  mov    %rax,0x48(%rsp)
  movabs $0x500000004,%rax
  mov    %rax,0x50(%rsp)
  movabs $0x700000006,%rax
  mov    %rax,0x58(%rsp)
  movabs $0x900000008,%rax
  mov    %rax,0x60(%rsp)
  movabs $0xb0000000a,%rax
  mov    %rax,0x68(%rsp)
  movabs $0xd0000000c,%rax
  mov    %rax,0x70(%rsp)
  movabs $0xf0000000e,%rax
  mov    %rax,0x78(%rsp)
  movabs $0xc10000006b,%rax
  mov    %rax,0x80(%rsp)
  movabs $0xe2000000be,%rax
  mov    %rax,0x88(%rsp)
  movabs $0x400000002e,%rax
  mov    %rax,0x90(%rsp)
  movabs $0x960000009f,%rax
  mov    %rax,0x98(%rsp)
  movabs $0x3d000000e9,%rax
  mov    %rax,0xa0(%rsp)
  movabs $0x110000007e,%rax
  mov    %rax,0xa8(%rsp)
  movabs $0x9300000073,%rax
  mov    %rax,0xb0(%rsp)
  movabs $0x2a00000017,%rax
  mov    %rax,0xb8(%rsp)
  movabs $0x2d000000ae,%rax
  mov    %rax,0xc0(%rsp)
  movabs $0x570000008a,%rax
  mov    %rax,0xc8(%rsp)
  movabs $0x30000001e,%rax
  mov    %rax,0xd0(%rsp)
  movabs $0x9c000000ac,%rax
  mov    %rax,0xd8(%rsp)
  movabs $0xb70000009e,%rax
  mov    %rax,0xe0(%rsp)
  movabs $0xac0000006f,%rax
  mov    %rax,0xe8(%rsp)
  movabs $0xaf00000045,%rax
  mov    %rax,0xf0(%rsp)
  movabs $0x510000008e,%rax
  mov    %rax,0xf8(%rsp)
  movabs $0xc800000030,%rax
  mov    %rax,0x100(%rsp)
  movabs $0x460000001c,%rax
  mov    %rax,0x108(%rsp)
  movabs $0x5c000000a3,%rax
  mov    %rax,0x110(%rsp)
  movabs $0x11000000e4,%rax
  mov    %rax,0x118(%rsp)
  movabs $0xfb000000e5,%rax
  mov    %rax,0x120(%rsp)
  movabs $0x19000000c1,%rax
  mov    %rax,0x128(%rsp)
  movabs $0xa0000001a,%rax
  mov    %rax,0x130(%rsp)
  movabs $0xef00000052,%rax
  mov    %rax,0x138(%rsp)
  movabs $0x9f000000f6,%rax
  mov    %rax,0x140(%rsp)
  movabs $0x4500000024,%rax
  mov    %rax,0x148(%rsp)
  movabs $0x4f000000df,%rax
  mov    %rax,0x150(%rsp)
  movabs $0x170000009b,%rax
  mov    %rax,0x158(%rsp)
  movabs $0x2b000000ad,%rax
  mov    %rax,0x160(%rsp)
  movabs $0x7b00000041,%rax
  mov    %rax,0x168(%rsp)
  movabs $0x6c000000e6,%rax
  mov    %rax,0x170(%rsp)
  movabs $0x1000000037,%rax
  mov    %rax,0x178(%rsp)
  movabs $0x4900000076,%rax
  mov    %rax,0x180(%rsp)
  movabs $0xac000000ab,%rax
  mov    %rax,0x188(%rsp)
  movabs $0x1900000081,%rax
  mov    %rax,0x190(%rsp)
  movabs $0x46000000b2,%rax
  mov    %rax,0x198(%rsp)
  movabs $0xe9000000ce,%rax
  mov    %rax,0x1a0(%rsp)
  movabs $0x9b0000008e,%rax
  mov    %rax,0x1a8(%rsp)
  movabs $0xe900000012,%rax
  mov    %rax,0x1b0(%rsp)
  movabs $0x7d00000019,%rax
  mov    %rax,0x1b8(%rsp)
  movabs $0x8600000050,%rax
  mov    %rax,0x1c0(%rsp)
  movabs $0x9b000000cb,%rax
  mov    %rax,0x1c8(%rsp)
  movabs $0x7200000050,%rax
  mov    %rax,0x1d0(%rsp)
  movabs $0xee00000019,%rax
  mov    %rax,0x1d8(%rsp)
  movabs $0xdb00000095,%rax
  mov    %rax,0x1e0(%rsp)
  movabs $0x3a00000011,%rax
  mov    %rax,0x1e8(%rsp)
  movabs $0x7600000091,%rax
  mov    %rax,0x1f0(%rsp)
  movabs $0xb200000078,%rax
  mov    %rax,0x1f8(%rsp)
  movabs $0xbe00000073,%rax
  mov    %rax,0x200(%rsp)
  movabs $0xb8000000d6,%rax
  mov    %rax,0x208(%rsp)
  movabs $0xc1000000e3,%rax
  mov    %rax,0x210(%rsp)
  movabs $0x3b00000074,%rax
  mov    %rax,0x218(%rsp)
  movabs $0x1600000071,%rax
  mov    %rax,0x220(%rsp)
  movabs $0x9e000000e6,%rax
  mov    %rax,0x228(%rsp)
  movabs $0x2200000022,%rax
  mov    %rax,0x230(%rsp)
  movabs $0x1600000095,%rax
  mov    %rax,0x238(%rsp)
  movabs $0xf10000003f,%rax
  mov    %rax,0x240(%rsp)
  movabs $0xa1000000ca,%rax
  mov    %rax,0x248(%rsp)
  movabs $0x1f00000068,%rax
  mov    %rax,0x250(%rsp)
  movabs $0x9000000ac,%rax
  mov    %rax,0x258(%rsp)
  movabs $0xe00000012,%rax
  mov    %rax,0x260(%rsp)
  movabs $0x30000000ca,%rax
  mov    %rax,0x268(%rsp)
  movabs $0x8600000075,%rax
  mov    %rax,0x270(%rsp)
  movabs $0xa7000000e1,%rax
  mov    %rax,0x278(%rsp)
  call   <AES128_CBC_encrypt_buffer@plt>
  lea    D0(%rip),%rdi
  call   <printf@plt>
  lea    0x180(%rsp),%rdi
  mov    $0x40,%edx
  mov    %rbp,%rsi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L17
  lea    D6(%rip),%rdi
  call   <printf@plt>
L13:
  mov    0x388(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L27
  add    $0x390,%rsp
  pop    %rbp
  ret
  nop
L17:
  lea    D20(%rip),%rdi
  call   <printf@plt>
  jmp    L13
L27:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D0
datatype: string
name: extract_symbolic_data
arguments: label: D6
datatype: string
name: extract_symbolic_data
arguments: label: D20
datatype: string

tool: D0: CBC encrypt: 

tool: D6: SUCCESS!


tool: D20: FAILURE!


assistant: ```c
void test_encrypt_cbc(void) {
  uint8_t key[] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c};
  uint8_t iv[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
  uint8_t in[] = {0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10};
  uint8_t out[] = {0x76, 0x49, 0xab, 0xac, 0x81, 0x19, 0xb2, 0x46, 0xce, 0xe9, 0x8e, 0x9b, 0x12, 0xe9, 0x19, 0x7d, 0x50, 0x86, 0xcb, 0x9b, 0x50, 0x72, 0x19, 0xee, 0x95, 0xdb, 0x11, 0x3a, 0x91, 0x76, 0x78, 0xb2, 0x73, 0xbe, 0xd6, 0xb8, 0xe3, 0xc1, 0x74, 0x3b, 0x71, 0x16, 0xe6, 0x9e, 0x22, 0x22, 0x95, 0x16, 0x3f, 0xf1, 0xca, 0xa1, 0x68, 0x1f, 0xac, 0x09, 0x12, 0x0e, 0xca, 0x30, 0x75, 0x86, 0xe1, 0xa7};
  uint8_t buffer[64];
  AES128_CBC_encrypt_buffer(buffer, in, 64, key, iv);
  printf("CBC encrypt: ");
  if (0 == strncmp((char *)out, (char *)buffer, 64)) {
    printf("SUCCESS!\n");
  } else {
    printf("FAILURE!\n");
  }
}
```