user: 这段汇编代码用C语言表示是什么样的?

```asm
<RPYToRot>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movsd  %xmm0,-0x28(%rbp)
  movsd  %xmm1,-0x30(%rbp)
  movsd  %xmm2,-0x38(%rbp)
  mov    %rdi,-0x40(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mulsd  -0x48(%rbp),%xmm0
  mov    -0x40(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm3
  mulsd  -0x48(%rbp),%xmm3
  movsd  %xmm3,-0x48(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  -0x50(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x48(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mov    -0x40(%rbp),%rax
  movsd  %xmm0,0x8(%rax)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm4
  mulsd  -0x48(%rbp),%xmm4
  movsd  %xmm4,-0x48(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  mulsd  -0x50(%rbp),%xmm0
  addsd  -0x48(%rbp),%xmm0
  mov    -0x40(%rbp),%rax
  movsd  %xmm0,0x10(%rax)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mov    -0x40(%rbp),%rax
  add    $0x18,%rax
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm6
  mulsd  -0x48(%rbp),%xmm6
  movsd  %xmm6,-0x48(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mulsd  -0x50(%rbp),%xmm0
  mov    -0x40(%rbp),%rax
  add    $0x18,%rax
  addsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,0x8(%rax)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm2
  mulsd  -0x48(%rbp),%xmm2
  movsd  %xmm2,-0x48(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movsd  -0x50(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  mov    -0x40(%rbp),%rax
  add    $0x18,%rax
  movsd  -0x48(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rax)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  mov    -0x40(%rbp),%rdx
  add    $0x30,%rdx
  movq   D1(%rip),%xmm0
  movq   %rax,%xmm5
  xorpd  %xmm0,%xmm5
  movapd %xmm5,%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  mov    -0x40(%rbp),%rax
  add    $0x30,%rax
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,0x8(%rax)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mov    -0x40(%rbp),%rax
  add    $0x30,%rax
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,0x10(%rax)
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D1
datatype: byte[8]

tool: {"D1": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
void RPYToRot(double roll, double pitch, double yaw, double R[3][3]) {
  double alpha = yaw;
  double beta = pitch;
  double gamma = roll;
  R[0][0] = cos(alpha) * cos(beta);
  R[0][1] = cos(alpha) * sin(beta) * sin(gamma) - sin(alpha) * cos(gamma);
  R[0][2] = cos(alpha) * sin(beta) * cos(gamma) + sin(alpha) * sin(gamma);
  R[1][0] = sin(alpha) * cos(beta);
  R[1][1] = sin(alpha) * sin(beta) * sin(gamma) + cos(alpha) * cos(gamma);
  R[1][2] = sin(alpha) * sin(beta) * cos(gamma) - cos(alpha) * sin(gamma);
  R[2][0] = -sin(beta);
  R[2][1] = cos(beta) * sin(gamma);
  R[2][2] = cos(beta) * cos(gamma);
  return;
}
```