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

```asm
<ttheta>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %ecx,0x2c(%rsp)
  test   %ecx,%ecx
  jle    L3
  movss  0x8(%rdx),%xmm7
  mov    %rdx,%rbx
  movss  %xmm7,0x30(%rsp)
  movss  0xc(%rdx),%xmm7
  movss  %xmm7,0x34(%rsp)
  test   %r8d,%r8d
  jle    L3
  movslq %r8d,%r13
  mov    %rdi,%r12
  mov    %rsi,%rbp
  xor    %r14d,%r14d
  lea    0x0(,%r13,4),%rax
  mov    %rax,0x38(%rsp)
  nopl   0x0(%rax)
L50:
  pxor   %xmm0,%xmm0
  movss  0x4(%rbx),%xmm5
  movss  (%rbx),%xmm6
  xor    %r15d,%r15d
  cvtsi2ss %r14d,%xmm0
  subss  0x30(%rsp),%xmm0
  movss  0x34(%rsp),%xmm7
  movss  %xmm5,0x18(%rsp)
  movss  0x34(%rbx),%xmm5
  movss  %xmm6,0x14(%rsp)
  movss  0x30(%rbx),%xmm6
  mulss  %xmm0,%xmm7
  movss  %xmm6,0x1c(%rsp)
  mulss  %xmm7,%xmm5
  movss  %xmm7,0x10(%rsp)
  mulss  0x28(%rbx),%xmm7
  movss  %xmm5,0x20(%rsp)
  movss  0x24(%rbx),%xmm5
  movss  %xmm7,0x28(%rsp)
  movss  %xmm5,0x24(%rsp)
  nopw   0x0(%rax,%rax,1)
L56:
  pxor   %xmm2,%xmm2
  movss  0x1c(%rsp),%xmm4
  movss  0x24(%rsp),%xmm3
  cvtsi2ss %r15d,%xmm2
  subss  0x14(%rsp),%xmm2
  mulss  0x18(%rsp),%xmm2
  mulss  %xmm2,%xmm4
  movss  %xmm2,0xc(%rsp)
  mulss  %xmm2,%xmm3
  addss  0x20(%rsp),%xmm4
  addss  0x28(%rsp),%xmm3
  movaps %xmm4,%xmm0
  movss  %xmm4,0x4(%rsp)
  movaps %xmm3,%xmm1
  movss  %xmm3,0x8(%rsp)
  call   <atan2f@plt>
  movss  0x8(%rsp),%xmm3
  pxor   %xmm6,%xmm6
  movss  0x4(%rsp),%xmm4
  mulss  D18(%rip),%xmm0
  movss  0xc(%rsp),%xmm2
  mulss  %xmm3,%xmm3
  movss  0x10(%rbx),%xmm1
  mulss  %xmm4,%xmm4
  mulss  0x18(%rbx),%xmm2
  movss  %xmm0,0x0(%rbp,%r15,4)
  movss  0x10(%rsp),%xmm0
  mulss  0x1c(%rbx),%xmm0
  addss  %xmm4,%xmm3
  addss  %xmm0,%xmm2
  ucomiss %xmm3,%xmm6
  addss  %xmm2,%xmm1
  ja     L2
  sqrtss %xmm3,%xmm3
  movaps %xmm3,%xmm0
  call   <atan2f@plt>
  mulss  D18(%rip),%xmm0
  movss  %xmm0,(%r12,%r15,4)
  add    $0x1,%r15
  cmp    %r15,%r13
  jne    L56
L32:
  mov    0x38(%rsp),%rax
  add    $0x1,%r14d
  add    %rax,%r12
  add    %rax,%rbp
  cmp    %r14d,0x2c(%rsp)
  jne    L50
L3:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L2:
  movaps %xmm3,%xmm0
  movss  %xmm1,0x4(%rsp)
  call   <sqrtf@plt>
  movss  0x4(%rsp),%xmm1
  call   <atan2f@plt>
  mulss  D18(%rip),%xmm0
  movss  %xmm0,(%r12,%r15,4)
  add    $0x1,%r15
  cmp    %r13,%r15
  jne    L56
  jmp    L32
```

tool_calls: name: parse_data
arguments: data_label: D18
type_guessed: byte[4]

tool: {"D18": [0x83,0xf9,0xa2,0x3e]}

assistant: ```c
void ttheta(float *restrict tth, float *restrict eta, float *restrict p, int ns, int nf) {
  int i, j, a, row;
  float s, f, x, y, z, th, et, OPI;
  OPI = 1.0 / 3.14159265358979323846f;
#pragma omp parallel for private(s, f, x, y, z, j, a, i)
  for (i = 0; i < ns; i++) {
    s = (i - p[2]) * p[3];
    a = i * nf;
    for (j = 0; j < nf; j++, a++) {
      f = (j - p[0]) * p[1];
      z = p[5 + 7] * f + p[5 + 8] * s;
      y = p[5 + 4] * f + p[5 + 5] * s;
      eta[a] = atan2f(z, y) * OPI;
      x = p[5 + 1] * f + p[5 + 2] * s + p[4];
      tth[a] = atan2f(sqrtf(y * y + z * z), x) * OPI;
    }
  }
}
```