user: 请从给定的汇编指令推导出C源代码：

```asm
<ckb_info>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D657(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D645(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D181(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D728(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D420(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D724(%rip),%rax
  mov    %rax,%rsi
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D182(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D752(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D275(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D424(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D586(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D641(%rip),%rax
  mov    %rax,%rdx
  lea    D641(%rip),%rax
  mov    %rax,%rsi
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    $0x5a,%esi
  lea    D680(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D376(%rip),%rax
  mov    %rax,%rdx
  lea    D709(%rip),%rax
  mov    %rax,%rsi
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D705(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D377(%rip),%rax
  mov    %rax,%rdx
  lea    D278(%rip),%rax
  mov    %rax,%rsi
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D716(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  movsd  D8(%rip),%xmm1
  movsd  D45(%rip),%xmm0
  mov    D8(%rip),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D585(%rip),%rax
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D536(%rip),%rax
  mov    %rax,%rdx
  lea    D211(%rip),%rax
  mov    %rax,%rsi
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D602(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    $0x30,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D627(%rip),%rax
  mov    %rax,%rsi
  lea    D319(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D171(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D612(%rip),%rax
  mov    %rax,%rsi
  lea    D354(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D56(%rip),%rax
  mov    %rax,%rsi
  lea    D123(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D762(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D467(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D377(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D555(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D536(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D779(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D762(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D587(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D376(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D254(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D762(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D551(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D376(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D254(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  lea    D641(%rip),%rax
  mov    %rax,%rsi
  lea    D298(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D263(%rip),%rax
  mov    %rax,%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: tag: D657
type_infered: string
name: unpack_data
arguments: tag: D645
type_infered: string
name: unpack_data
arguments: tag: D181
type_infered: string
name: unpack_data
arguments: tag: D728
type_infered: string
name: unpack_data
arguments: tag: D27
type_infered: string
name: unpack_data
arguments: tag: D420
type_infered: string
name: unpack_data
arguments: tag: D724
type_infered: string
name: unpack_data
arguments: tag: D157
type_infered: string
name: unpack_data
arguments: tag: D47
type_infered: string
name: unpack_data
arguments: tag: D182
type_infered: string
name: unpack_data
arguments: tag: D752
type_infered: string
name: unpack_data
arguments: tag: D275
type_infered: string
name: unpack_data
arguments: tag: D424
type_infered: string
name: unpack_data
arguments: tag: D586
type_infered: string
name: unpack_data
arguments: tag: D641
type_infered: string
name: unpack_data
arguments: tag: D112
type_infered: string
name: unpack_data
arguments: tag: D77
type_infered: string
name: unpack_data
arguments: tag: D92
type_infered: string
name: unpack_data
arguments: tag: D680
type_infered: string
name: unpack_data
arguments: tag: D376
type_infered: string
name: unpack_data
arguments: tag: D709
type_infered: string
name: unpack_data
arguments: tag: D31
type_infered: string
name: unpack_data
arguments: tag: D705
type_infered: string
name: unpack_data
arguments: tag: D377
type_infered: string
name: unpack_data
arguments: tag: D278
type_infered: string
name: unpack_data
arguments: tag: D716
type_infered: string
name: unpack_data
arguments: tag: D62
type_infered: string
name: unpack_data
arguments: tag: D8
type_infered: f64
name: unpack_data
arguments: tag: D45
type_infered: f64
name: unpack_data
arguments: tag: D585
type_infered: string
name: unpack_data
arguments: tag: D536
type_infered: string
name: unpack_data
arguments: tag: D211
type_infered: string
name: unpack_data
arguments: tag: D602
type_infered: string
name: unpack_data
arguments: tag: D627
type_infered: string
name: unpack_data
arguments: tag: D319
type_infered: string
name: unpack_data
arguments: tag: D88
type_infered: string
name: unpack_data
arguments: tag: D171
type_infered: string
name: unpack_data
arguments: tag: D612
type_infered: string
name: unpack_data
arguments: tag: D354
type_infered: string
name: unpack_data
arguments: tag: D56
type_infered: string
name: unpack_data
arguments: tag: D123
type_infered: string
name: unpack_data
arguments: tag: D762
type_infered: string
name: unpack_data
arguments: tag: D467
type_infered: string
name: unpack_data
arguments: tag: D298
type_infered: string
name: unpack_data
arguments: tag: D353
type_infered: string
name: unpack_data
arguments: tag: D555
type_infered: string
name: unpack_data
arguments: tag: D779
type_infered: string
name: unpack_data
arguments: tag: D587
type_infered: string
name: unpack_data
arguments: tag: D254
type_infered: string
name: unpack_data
arguments: tag: D551
type_infered: string
name: unpack_data
arguments: tag: D263
type_infered: string

tool: D657: name 

tool: D645: Wave

tool: D181: version 

tool: D728: 0.10

tool: D27: author 

tool: D420: MSC

tool: D724: 2014-2015

tool: D157: 
year %s


tool: D47: license 

tool: D182: GPLv2

tool: D752: guid 

tool: D275: {E0BBA19E-C328-4C0E-8E3C-A06D5722B4FC}

tool: D424: description 

tool: D586: A moving wave effect.

tool: D641: angle

tool: D112: param %s %s 

tool: D77: Angle:

tool: 

tool: D680: %ld

tool: D376: color

tool: D709: agradient

tool: D31: Wave color:

tool: D705: ffffffff

tool: D377: length

tool: D278: double

tool: D716: Wave length:

tool: D62: %

tool: D8: 100

tool: D45: 1

tool: D585: %lf %lf %lf

tool: D536: symmetric

tool: D211: bool

tool: D602: Symmetric

tool: D627: position

tool: D319: kpmode %s


tool: D88: duration

tool: D171: time %s


tool: D612: live

tool: D354: parammode %s


tool: D56: on

tool: D123: preempt %s


tool: D762: preset 

tool: D467: Shimmer

tool: D298:  %s=

tool: D353: 2.0

tool: D555: 50.0

tool: D779: 1

tool: D587: Rainbow

tool: D254: 0:ffff0000 17:ffffff00 33:ff00ff00 50:ff00ffff 67:ff0000ff 83:ffff00ff 100:ffff0000

tool: D551: Vertical rainbow

tool: D263: 180

assistant: ```c
void ckb_info() {
  do {
    printf("name ");
    printurl("Wave");
    printf("\n");
  } while (0);
  do {
    printf("version ");
    printurl("0.10");
    printf("\n");
  } while (0);
  do {
    printf("author ");
    printurl("MSC");
    printf("\nyear %s\n", "2014-2015");
  } while (0);
  do {
    printf("license ");
    printurl("GPLv2");
    printf("\n");
  } while (0);
  do {
    printf("guid ");
    printurl("{E0BBA19E-C328-4C0E-8E3C-A06D5722B4FC}");
    printf("\n");
  } while (0);
  do {
    printf("description ");
    printurl("A moving wave effect.");
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "angle", "angle");
    printurl("Angle:");
    printf(" ");
    printurl("");
    printf(" ");
    printf("%ld", (long)(90));
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "agradient", "color");
    printurl("Wave color:");
    printf(" ");
    printurl("");
    printf(" ");
    printurl("ffffffff");
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "double", "length");
    printurl("Wave length:");
    printf(" ");
    printurl("%");
    printf(" ");
    printf("%lf %lf %lf", (double)(100), (double)(1.), (double)(100.));
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "bool", "symmetric");
    printurl("Symmetric");
    printf(" ");
    printurl("");
    printf(" ");
    printf((0) ? "1" : "0");
    printf("\n");
  } while (0);
  do {
    printf("kpmode %s\n", "position");
  } while (0);
  do {
    printf("time %s\n", "duration");
  } while (0);
  do {
    printf("parammode %s\n", (1) ? "live" : "static");
  } while (0);
  do {
    printf("preempt %s\n", (1) ? "on" : "off");
  } while (0);
  do {
    printf("preset ");
    printurl("Shimmer");
  } while (0);
  do {
    printf(" %s=", "duration");
    printurl("2.0");
  } while (0);
  do {
    printf(" %s=", "length");
    printurl("50.0");
  } while (0);
  do {
    printf(" %s=", "symmetric");
    printurl("1");
  } while (0);
  do {
    printf("\n");
  } while (0);
  do {
    printf("preset ");
    printurl("Rainbow");
  } while (0);
  do {
    printf(" %s=", "color");
    printurl("0:ffff0000 17:ffffff00 33:ff00ff00 50:ff00ffff 67:ff0000ff 83:ffff00ff 100:ffff0000");
  } while (0);
  do {
    printf(" %s=", "duration");
    printurl("2.0");
  } while (0);
  do {
    printf("\n");
  } while (0);
  do {
    printf("preset ");
    printurl("Vertical rainbow");
  } while (0);
  do {
    printf(" %s=", "color");
    printurl("0:ffff0000 17:ffffff00 33:ff00ff00 50:ff00ffff 67:ff0000ff 83:ffff00ff 100:ffff0000");
  } while (0);
  do {
    printf(" %s=", "duration");
    printurl("2.0");
  } while (0);
  do {
    printf(" %s=", "angle");
    printurl("180");
  } while (0);
  do {
    printf("\n");
  } while (0);
}
```