user: Converte this assembly snippet into its equivalent C code:

```asm
<ckb_info>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D431(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D278(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D277(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D372(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D224(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D0(%rip),%rdi
  call   <printurl@plt>
  lea    D52(%rip),%rsi
  lea    D2(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D442(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D182(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D106(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D414(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D126(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D152(%rip),%r12
  mov    %r12,%rdx
  lea    D70(%rip),%rsi
  lea    D484(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D127(%rip),%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D226(%rip),%rbp
  mov    %rbp,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D146(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D38(%rip),%r15
  mov    %r15,%rdx
  lea    D192(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D158(%rip),%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  lea    D451(%rip),%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  movsd  D173(%rip),%xmm0
  movapd %xmm0,%xmm2
  movsd  D449(%rip),%xmm1
  lea    D131(%rip),%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D432(%rip),%rdx
  lea    D225(%rip),%r13
  mov    %r13,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D222(%rip),%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    %rbp,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    $0x30,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D434(%rip),%r14
  mov    %r14,%rdx
  mov    %r13,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D29(%rip),%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    %rbp,%rdi
  call   <printurl@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    $0x30,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D472(%rip),%rsi
  lea    D329(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D382(%rip),%rbp
  mov    %rbp,%rsi
  lea    D366(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D391(%rip),%rsi
  lea    D6(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D110(%rip),%rsi
  lea    D117(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D60(%rip),%r13
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D422(%rip),%rdi
  call   <printurl@plt>
  mov    %rbp,%rsi
  lea    D241(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D39(%rip),%rdi
  call   <printurl@plt>
  mov    %r15,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D42(%rip),%rdi
  call   <printurl@plt>
  mov    %r14,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D180(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D439(%rip),%rdi
  call   <printurl@plt>
  mov    %r12,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D231(%rip),%rdi
  call   <printurl@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D39(%rip),%rdi
  call   <printurl@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: data_tag: D431
type: string
name: read_data
arguments: data_tag: D278
type: string
name: read_data
arguments: data_tag: D277
type: string
name: read_data
arguments: data_tag: D372
type: string
name: read_data
arguments: data_tag: D224
type: string
name: read_data
arguments: data_tag: D0
type: string
name: read_data
arguments: data_tag: D52
type: string
name: read_data
arguments: data_tag: D2
type: string
name: read_data
arguments: data_tag: D442
type: string
name: read_data
arguments: data_tag: D109
type: string
name: read_data
arguments: data_tag: D182
type: string
name: read_data
arguments: data_tag: D106
type: string
name: read_data
arguments: data_tag: D414
type: string
name: read_data
arguments: data_tag: D126
type: string
name: read_data
arguments: data_tag: D152
type: string
name: read_data
arguments: data_tag: D70
type: string
name: read_data
arguments: data_tag: D484
type: string
name: read_data
arguments: data_tag: D127
type: string
name: read_data
arguments: data_tag: D226
type: string
name: read_data
arguments: data_tag: D146
type: string
name: read_data
arguments: data_tag: D38
type: string
name: read_data
arguments: data_tag: D192
type: string
name: read_data
arguments: data_tag: D158
type: string
name: read_data
arguments: data_tag: D451
type: string
name: read_data
arguments: data_tag: D173
type: f64
name: read_data
arguments: data_tag: D449
type: f64
name: read_data
arguments: data_tag: D131
type: string
name: read_data
arguments: data_tag: D432
type: string
name: read_data
arguments: data_tag: D225
type: string
name: read_data
arguments: data_tag: D222
type: string
name: read_data
arguments: data_tag: D434
type: string
name: read_data
arguments: data_tag: D29
type: string
name: read_data
arguments: data_tag: D472
type: string
name: read_data
arguments: data_tag: D329
type: string
name: read_data
arguments: data_tag: D382
type: string
name: read_data
arguments: data_tag: D366
type: string
name: read_data
arguments: data_tag: D391
type: string
name: read_data
arguments: data_tag: D6
type: string
name: read_data
arguments: data_tag: D110
type: string
name: read_data
arguments: data_tag: D117
type: string
name: read_data
arguments: data_tag: D60
type: string
name: read_data
arguments: data_tag: D422
type: string
name: read_data
arguments: data_tag: D241
type: string
name: read_data
arguments: data_tag: D39
type: string
name: read_data
arguments: data_tag: D42
type: string
name: read_data
arguments: data_tag: D180
type: string
name: read_data
arguments: data_tag: D439
type: string
name: read_data
arguments: data_tag: D231
type: string

tool: D431: name 

tool: D278: Pinwheel

tool: D277: version 

tool: D372: 0.9

tool: D224: author 

tool: D0: MSC

tool: D52: 2014-2015

tool: D2: 
year %s


tool: D442: license 

tool: D109: GPLv2

tool: D182: guid 

tool: D106: {07551A90-D97A-4DD0-A770-E9E280A90891}

tool: D414: description 

tool: D126: A spinning pinwheel effect.

tool: D152: color

tool: D70: agradient

tool: D484: param %s %s 

tool: D127: Wheel color:

tool: 

tool: D146: ffffffff

tool: D38: length

tool: D192: double

tool: D158: Wheel size:

tool: D451: %

tool: D173: 100

tool: D449: 1

tool: D131: %lf %lf %lf

tool: D432: counter_clock

tool: D225: bool

tool: D222: Counter Clockwise

tool: D434: symmetric

tool: D29: Symmetric

tool: D472: none

tool: D329: kpmode %s


tool: D382: duration

tool: D366: time %s


tool: D391: live

tool: D6: parammode %s


tool: D110: off

tool: D117: repeat %s


tool: D60: preset 

tool: D422: Search light

tool: D241:  %s=

tool: D39: 2.0

tool: D42: 50.0

tool: D180: 1

tool: D439: Rainbow

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

assistant: ```c
void ckb_info() {
  do {
    printf("name ");
    printurl("Pinwheel");
    printf("\n");
  } while (0);
  do {
    printf("version ");
    printurl("0.9");
    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("{07551A90-D97A-4DD0-A770-E9E280A90891}");
    printf("\n");
  } while (0);
  do {
    printf("description ");
    printurl("A spinning pinwheel effect.");
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "agradient", "color");
    printurl("Wheel color:");
    printf(" ");
    printurl("");
    printf(" ");
    printurl("ffffffff");
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "double", "length");
    printurl("Wheel size:");
    printf(" ");
    printurl("%");
    printf(" ");
    printf("%lf %lf %lf", (double)(100), (double)(1.), (double)(100.));
    printf("\n");
  } while (0);
  do {
    printf("param %s %s ", "bool", "counter_clock");
    printurl("Counter Clockwise");
    printf(" ");
    printurl("");
    printf(" ");
    printf((0) ? "1" : "0");
    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", "none");
  } while (0);
  do {
    printf("time %s\n", "duration");
  } while (0);
  do {
    printf("parammode %s\n", (1) ? "live" : "static");
  } while (0);
  do {
    printf("repeat %s\n", (0) ? "on" : "off");
  } while (0);
  do {
    printf("preset ");
    printurl("Search light");
  } 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);
}
```