user: 请将以下的汇编代码转换成C语言代码：

```asm
<ttheta>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %ecx,0x34(%rsp)
  mov    %r8d,0x40(%rsp)
  test   %ecx,%ecx
  jle    L58
  movslq %r8d,%r15
  movss  0x8(%rdx),%xmm7
  mov    %rdx,%rbx
  mov    %rdi,%r12
  mov    %r15,%rax
  lea    0x0(,%r15,4),%rcx
  mov    %rsi,%rbp
  xor    %r14d,%r14d
  sub    $0x1,%eax
  movss  %xmm7,0x44(%rsp)
  movss  0xc(%rdx),%xmm7
  mov    %rcx,0x38(%rsp)
  mov    %eax,0x4c(%rsp)
  movss  %xmm7,0x48(%rsp)
  nop
L37:
  pxor   %xmm0,%xmm0
  mov    0x40(%rsp),%eax
  cvtsi2ss %r14d,%xmm0
  subss  0x44(%rsp),%xmm0
  mulss  0x48(%rsp),%xmm0
  movss  %xmm0,0x18(%rsp)
  test   %eax,%eax
  jle    L2
  movss  (%rbx),%xmm7
  movss  0x34(%rbx),%xmm5
  xor    %r15d,%r15d
  movss  0x24(%rbx),%xmm6
  mov    0x4c(%rsp),%r13d
  movss  %xmm7,0x1c(%rsp)
  movss  0x4(%rbx),%xmm7
  movss  %xmm6,0x2c(%rsp)
  movss  %xmm7,0x20(%rsp)
  movss  0x30(%rbx),%xmm7
  movss  %xmm7,0x24(%rsp)
  movss  0x18(%rsp),%xmm7
  mulss  %xmm7,%xmm5
  mulss  0x28(%rbx),%xmm7
  movss  %xmm5,0x28(%rsp)
  movss  %xmm7,0x30(%rsp)
  jmp    L45
  nopl   0x0(%rax)
L46:
  mov    %rdx,%r15
L45:
  pxor   %xmm2,%xmm2
  movss  0x24(%rsp),%xmm4
  movss  0x2c(%rsp),%xmm3
  cvtsi2ss %r15d,%xmm2
  subss  0x1c(%rsp),%xmm2
  mulss  0x20(%rsp),%xmm2
  mulss  %xmm2,%xmm4
  movss  %xmm2,0x14(%rsp)
  mulss  %xmm2,%xmm3
  addss  0x28(%rsp),%xmm4
  addss  0x30(%rsp),%xmm3
  movaps %xmm4,%xmm0
  movss  %xmm4,0xc(%rsp)
  movaps %xmm3,%xmm1
  movss  %xmm3,0x10(%rsp)
  call   <atan2f@plt>
  movss  0x10(%rsp),%xmm3
  pxor   %xmm6,%xmm6
  movss  0xc(%rsp),%xmm4
  mulss  D7(%rip),%xmm0
  movss  0x14(%rsp),%xmm2
  mulss  %xmm3,%xmm3
  movss  0x10(%rbx),%xmm1
  mulss  %xmm4,%xmm4
  mulss  0x18(%rbx),%xmm2
  movss  %xmm0,0x0(%rbp,%r15,4)
  movss  0x18(%rsp),%xmm0
  mulss  0x1c(%rbx),%xmm0
  addss  %xmm4,%xmm3
  addss  %xmm0,%xmm2
  ucomiss %xmm3,%xmm6
  movaps %xmm3,%xmm0
  addss  %xmm2,%xmm1
  ja     L62
  sqrtss %xmm0,%xmm0
L1:
  call   <atan2f@plt>
  mulss  D7(%rip),%xmm0
  lea    0x1(%r15),%rdx
  movss  %xmm0,(%r12,%r15,4)
  cmp    %r15,%r13
  jne    L46
L2:
  mov    0x38(%rsp),%rax
  add    $0x1,%r14d
  add    %rax,%r12
  add    %rax,%rbp
  cmp    %r14d,0x34(%rsp)
  jne    L37
L58:
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L62:
  movss  %xmm1,0xc(%rsp)
  call   <sqrtf@plt>
  movss  0xc(%rsp),%xmm1
  jmp    L1
```

tool_calls: name: unpack_data
arguments: data_tag: D7
datatype: byte[4]

tool: {"D7": [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;
    }
  }
}
```