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

```asm
<crta_r>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  mov    %rdi,%rbx
  mov    %esi,%ebp
  mov    %edx,%r12d
  movss  %xmm0,0x4(%rsp)
  movss  %xmm1,(%rsp)
  ucomiss D10(%rip),%xmm0
  jp     L56
  je     L111
L56:
  lea    0xc(%rsp),%rdi
  lea    0x8(%rsp),%rsi
  movaps %xmm2,%xmm0
  call   <sincosf@plt>
  movss  0x8(%rsp),%xmm10
  movss  0xc(%rsp),%xmm3
  test   %r12d,%r12d
  jle    L111
  mov    %ebp,%ecx
  shr    $0x1f,%ecx
  add    %ebp,%ecx
  sar    %ecx
  neg    %ecx
  mov    %ecx,%r9d
  neg    %ecx
  mov    %r12d,%eax
  shr    $0x1f,%eax
  add    %r12d,%eax
  sar    %eax
  neg    %eax
  mov    %eax,%edi
  lea    (%r12,%rax,1),%r8d
  movsd  D49(%rip),%xmm11
  movss  D22(%rip),%xmm4
  movss  D16(%rip),%xmm7
  movaps %xmm7,%xmm9
  pxor   %xmm6,%xmm6
  movapd %xmm11,%xmm8
  jmp    L67
L1:
  lea    (%rax,%rcx,1),%edx
  movslq %edx,%rdx
  pxor   %xmm0,%xmm0
  cvtss2sd (%rsp),%xmm0
  mulsd  %xmm8,%xmm0
  addsd  %xmm8,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rbx,%rdx,4)
  jmp    L66
L64:
  pxor   %xmm12,%xmm12
  cvtss2sd %xmm0,%xmm12
  comisd %xmm1,%xmm12
  jbe    L78
  movss  0x4(%rsp),%xmm0
  mulss  %xmm9,%xmm0
L78:
  lea    (%rax,%rcx,1),%edx
  movslq %edx,%rdx
  divss  0x4(%rsp),%xmm0
  mulss  (%rsp),%xmm0
  movaps %xmm7,%xmm12
  subss  %xmm0,%xmm12
  movss  %xmm12,(%rbx,%rdx,4)
L66:
  add    $0x1,%eax
  cmp    %esi,%eax
  je     L35
L104:
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  movaps %xmm0,%xmm12
  andps  %xmm4,%xmm12
  cvtss2sd %xmm12,%xmm12
  comisd %xmm1,%xmm12
  jbe    L64
  comiss %xmm6,%xmm0
  jbe    L1
  lea    (%rax,%rcx,1),%edx
  movslq %edx,%rdx
  pxor   %xmm12,%xmm12
  cvtss2sd (%rsp),%xmm12
  mulsd  %xmm5,%xmm12
  movapd %xmm5,%xmm0
  subsd  %xmm12,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rbx,%rdx,4)
  jmp    L66
L35:
  add    %ebp,%ecx
  add    $0x1,%edi
  cmp    %r8d,%edi
  je     L111
L67:
  test   %ebp,%ebp
  jle    L35
  pxor   %xmm2,%xmm2
  cvtsi2ss %edi,%xmm2
  mulss  %xmm10,%xmm2
  pxor   %xmm1,%xmm1
  cvtss2sd 0x4(%rsp),%xmm1
  mulsd  %xmm11,%xmm1
  lea    0x0(%rbp,%r9,1),%esi
  mov    %r9d,%eax
  movsd  D49(%rip),%xmm5
  jmp    L104
L111:
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D10
datatype: f64
name: parse_data
arguments: data_tag: D49
datatype: f64
name: parse_data
arguments: data_tag: D22
datatype: dword
name: parse_data
arguments: data_tag: D16
datatype: byte[4]

tool: D10: 0

tool: D49: 0.5

tool: D22: 2147483647

tool: {"D16": [0x00,0x00,0x00,0x3f]}

assistant: ```c
void crta_r(float *sl, int w, int h, float size, float amp, float tilt) {
  int i, j;
  float d, st, ct, g;
  if (size == 0.0)
    return;
  st = sinf(tilt);
  ct = cosf(tilt);
  for (i = 0; i < h; i++)
    for (j = 0; j < w; j++) {
      d = (i - h / 2) * ct + (j - w / 2) * st;
      if (fabsf(d) > size / 2.0) {
        if (d > 0.0)
          sl[i * w + j] = 0.5 - amp / 2.0;
        else
          sl[i * w + j] = 0.5 + amp / 2.0;
      } else {
        if (d > size / 2.0)
          d = size / 2.0;
        g = 0.5 - amp * (d / size);
        sl[i * w + j] = g;
      }
    }
}
```