user: What would the C source look like for the assembly code provided here:

```asm
<arched_opening>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movsd  %xmm0,-0x8(%rbp)
  movsd  %xmm1,-0x10(%rbp)
  movsd  %xmm2,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D83(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D83(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D83(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  D78(%rip),%xmm1
  movsd  D78(%rip),%xmm0
  mov    D78(%rip),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <scale@plt>
  movsd  -0x8(%rbp),%xmm0
  movq   D166(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D156(%rip),%xmm1
  movapd %xmm0,%xmm2
  divsd  %xmm1,%xmm2
  movsd  -0x18(%rbp),%xmm0
  movq   D166(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D156(%rip),%xmm1
  movapd %xmm0,%xmm3
  divsd  %xmm1,%xmm3
  movsd  -0x10(%rbp),%xmm0
  movq   D166(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D156(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movapd %xmm3,%xmm1
  movq   %rax,%xmm0
  call   <xlate@plt>
  mov    $0x0,%eax
  call   <onion@plt>
  movsd  -0x10(%rbp),%xmm0
  movsd  D156(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  -0x18(%rbp),%xmm0
  mov    -0x10(%rbp),%rax
  mov    $0x0,%edi
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <cube@plt>
  movsd  -0x10(%rbp),%xmm0
  movsd  D156(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  -0x10(%rbp),%xmm0
  movsd  D156(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <xlate@plt>
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    $0x1,%esi
  mov    $0x5a,%edi
  call   <rotate@plt>
  movsd  -0x10(%rbp),%xmm0
  movsd  D156(%rip),%xmm1
  movapd %xmm0,%xmm2
  divsd  %xmm1,%xmm2
  movsd  -0x10(%rbp),%xmm0
  movsd  D156(%rip),%xmm1
  divsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <cylinder@plt>
  mov    $0x0,%eax
  call   <endrotate@plt>
  mov    $0x0,%eax
  call   <endxlate@plt>
  mov    $0x0,%eax
  call   <endonion@plt>
  mov    $0x0,%eax
  call   <endxlate@plt>
  mov    $0x0,%eax
  call   <endscale@plt>
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D83
type_infered: f64
name: retrieve_data
arguments: tag: D78
type_infered: f64
name: retrieve_data
arguments: tag: D166
type_infered: byte[8]
name: retrieve_data
arguments: tag: D156
type_infered: f64

tool: D83: 10

tool: D78: 0.1

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

tool: D156: 2

assistant: ```c
void arched_opening(double height, double width, double depth) {
  height *= 10.0;
  width *= 10.0;
  depth *= 10.0;
  scale(0.1, 0.1, 0.1);
  xlate(-width / 2.0, -depth / 2.0, -height / 2.0);
  onion();
  cube(width, depth, height - width / 2.0, 0);
  xlate(width / 2.0, depth, height - width / 2.0);
  rotate(90, 1, 0, 0);
  cylinder(depth, width / 2.0, width / 2.0);
  endrotate();
  endxlate();
  endonion();
  endxlate();
  endscale();
}
```