user: Demonstrate the C code that generates the assembly output below:

```asm
<ortikon>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    -0x20(%rbp),%edi
  mov    -0x1c(%rbp),%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movss  D212(%rip),%xmm1
  mov    %edi,%r9d
  mov    %ecx,%r8d
  mov    $0x0,%ecx
  mov    D30(%rip),%rdi
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%eax
  lea    0x7(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x3,%eax
  mov    %eax,%ecx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D260(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D173(%rip),%xmm1
  mov    D251(%rip),%rdi
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movapd %xmm1,%xmm2
  mov    $0xa,%r9d
  mov    $0x0,%r8d
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_circle@plt>
  mov    -0x20(%rbp),%eax
  lea    0x7(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x3,%eax
  mov    %eax,%ecx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D173(%rip),%xmm1
  mov    D251(%rip),%rdi
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movapd %xmm1,%xmm2
  mov    $0x14,%r9d
  mov    $0x0,%r8d
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_circle@plt>
  mov    -0x20(%rbp),%eax
  lea    0x7(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x3,%eax
  mov    %eax,%ecx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D218(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D69(%rip),%xmm1
  mov    D251(%rip),%rdi
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movapd %xmm1,%xmm2
  mov    $0x14,%r9d
  mov    $0x0,%r8d
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_circle@plt>
  mov    -0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%r8d
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D260(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%edi
  mov    -0x20(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%r10d
  movsd  D29(%rip),%xmm0
  mov    D60(%rip),%rcx
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  push   $0x1
  push   %r8
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %edi,%r9d
  mov    %r10d,%r8d
  mov    $0x0,%ecx
  mov    %rax,%rdi
  call   <draw_gradient@plt>
  add    $0x10,%rsp
  mov    -0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%r8d
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x3,%edx
  sar    $0x1f,%eax
  mov    %edx,%ecx
  sub    %eax,%ecx
  mov    -0x20(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%r10d
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D275(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movss  D242(%rip),%xmm1
  mov    %r8d,%r9d
  mov    %ecx,%r8d
  mov    %r10d,%ecx
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%r9d
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x3,%edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  mov    -0x20(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%r10d
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edx
  shl    $0x4,%edx
  add    %edx,%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x4,%edx
  sar    $0x1f,%eax
  mov    %edx,%edi
  sub    %eax,%edi
  movsd  D143(%rip),%xmm0
  mov    D172(%rip),%rcx
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  push   $0x1
  push   %r9
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %r8d,%r9d
  mov    %r10d,%r8d
  mov    %edi,%ecx
  mov    %rax,%rdi
  call   <draw_gradient@plt>
  add    $0x10,%rsp
  movss  D180(%rip),%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  D187(%rip),%xmm0
  movss  %xmm0,-0x4(%rbp)
  mov    -0x20(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,-0xc(%rbp)
  jmp    L3
L19:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r9d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  movss  -0x4(%rbp),%xmm0
  mov    -0xc(%rbp),%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movaps %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r9d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  movss  -0x8(%rbp),%xmm0
  mov    -0xc(%rbp),%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movaps %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r9d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  movss  -0x4(%rbp),%xmm0
  mov    -0xc(%rbp),%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movaps %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r9d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  lea    (%rdx,%rax,1),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  movss  -0x8(%rbp),%xmm0
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movaps %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r9d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  lea    (%rdx,%rax,1),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %edx,%eax
  sub    %esi,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  movss  -0x4(%rbp),%xmm0
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movaps %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r9d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %edx,%r8d
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    -0xc(%rbp),%eax
  lea    (%rdx,%rax,1),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x1c(%rbp),%xmm1
  movsd  D143(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %edx,%eax
  sub    %esi,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rdi
  movss  -0x8(%rbp),%xmm0
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  movaps %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <draw_rectangle@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xc(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x20(%rbp),%xmm0
  movsd  D146(%rip),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
L3:
  mov    -0xc(%rbp),%eax
  cmp    -0x20(%rbp),%eax
  jl     L19
  nop
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D212
type_guessed: f32
name: unpack_data
arguments: data_label: D30
type_guessed: byte[8]
name: unpack_data
arguments: data_label: D260
type_guessed: f64
name: unpack_data
arguments: data_label: D173
type_guessed: f64
name: unpack_data
arguments: data_label: D251
type_guessed: f64
name: unpack_data
arguments: data_label: D143
type_guessed: byte[8]
name: unpack_data
arguments: data_label: D218
type_guessed: byte[8]
name: unpack_data
arguments: data_label: D69
type_guessed: f64
name: unpack_data
arguments: data_label: D29
type_guessed: f64
name: unpack_data
arguments: data_label: D60
type_guessed: f64
name: unpack_data
arguments: data_label: D275
type_guessed: f64
name: unpack_data
arguments: data_label: D242
type_guessed: f32
name: unpack_data
arguments: data_label: D172
type_guessed: byte[8]
name: unpack_data
arguments: data_label: D180
type_guessed: f32
name: unpack_data
arguments: data_label: D187
type_guessed: f32
name: unpack_data
arguments: data_label: D146
type_guessed: f64

tool: D212: 0.6

tool: {"D30": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: D260: 0.3

tool: D173: 0.95

tool: D251: 1

tool: {"D143": [0x33,0x33,0x33,0x33,0x33,0x33,0xe3,0x3f]}

tool: {"D218": [0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x40]}

tool: D69: 0.05

tool: D29: 0.094

tool: D60: 0.84

tool: D275: 0.13

tool: D242: 0.97

tool: {"D172": [0x0a,0xd7,0xa3,0x70,0x3d,0x0a,0xef,0x3f]}

tool: D180: 0.9

tool: D187: 0.1

tool: D146: 4.5

assistant: ```c
void ortikon(float *sl, int w, int h) {
  int i;
  float s1, s2;
  draw_rectangle(sl, w, h, 0, 0, w, h, 0.6);
  draw_circle(sl, w, h, 1.0, 0.3 * w, h / 8, 0, 10, 0.95);
  draw_circle(sl, w, h, 1.0, 0.6 * w, h / 8, 0, 20, 0.95);
  draw_circle(sl, w, h, 1.0, 0.6 * w + 40, h / 8, 0, 20, 0.05);
  draw_gradient(sl, w, h, 0, h / 4, 0.3 * w, 3 * h / 4, 0.84, 0.094, 1);
  draw_rectangle(sl, w, h, 0.13 * w, h / 4, w / 20, 3 * h / 4, 0.97);
  draw_gradient(sl, w, h, 17 * w / 40, h / 4, w / 20, 3 * h / 4, 0.97, 0.6, 1);
  s1 = 0.9;
  s2 = 0.1;
  for (i = h / 4; i < h; i = i + h / 4.5) {
    draw_rectangle(sl, w, h, 0.6 * w, i, h / 9, h / 9, s2);
    draw_rectangle(sl, w, h, 0.6 * w + h / 9, i, h / 9, h / 9, s1);
    draw_rectangle(sl, w, h, 0.6 * w + 2 * h / 9, i, h / 9, h / 9, s2);
    draw_rectangle(sl, w, h, 0.6 * w, i + h / 9, h / 9, h / 9, s1);
    draw_rectangle(sl, w, h, 0.6 * w + h / 9, i + h / 9, h / 9, h / 9, s2);
    draw_rectangle(sl, w, h, 0.6 * w + 2 * h / 9, i + h / 9, h / 9, h / 9, s1);
  }
}
```