user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<set_box>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mov    -0x8(%rbp),%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movsd  0x8(%rax),%xmm0
  mov    -0x8(%rbp),%rax
  movsd  0x8(%rax),%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movsd  0x10(%rax),%xmm0
  mov    -0x8(%rbp),%rax
  movsd  0x10(%rax),%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D22(%rip),%xmm0
  divsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  D22(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  movsd  D22(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0x10(%rbp),%rax
  add    $0x18,%rax
  movsd  0x10(%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0x10(%rbp),%rax
  add    $0x20,%rax
  movsd  0x8(%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  movq   D44(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm1,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  movq   D44(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x28,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: data_tag: D22
type: f64
name: read_data
arguments: data_tag: D44
type: byte[8]

tool: D22: 1

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

assistant: ```c
void set_box(double box[3][3], double *h, double *h_inv) {
  h[0] = box[1][0] - box[0][0];
  h[1] = box[1][1] - box[0][1];
  h[2] = box[1][2] - box[0][2];
  h_inv[0] = 1.0 / h[0];
  h_inv[1] = 1.0 / h[1];
  h_inv[2] = 1.0 / h[2];
  h[3] = box[2][2];
  h[4] = box[2][1];
  h[5] = box[2][0];
  h_inv[3] = -h[3] / (h[1] * h[2]);
  h_inv[4] = (h[3] * h[5] - h[1] * h[4]) / (h[0] * h[1] * h[2]);
  h_inv[5] = -h[5] / (h[0] * h[1]);
}
```