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

```asm
<get_bounds>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  movsd  %xmm0,0x8(%rsp)
  movsd  %xmm1,0x10(%rsp)
  movq   %xmm2,%rbx
  movq   %xmm6,%r13
  movsd  %xmm7,0x28(%rsp)
  mov    %rdi,%rbp
  movsd  0x70(%rsp),%xmm6
  comisd D33(%rip),%xmm6
  jae    L83
  movq   %xmm3,%r14
  movq   %xmm4,%r12
  movq   %xmm5,%r15
  movsd  D73(%rip),%xmm0
  comisd %xmm6,%xmm0
  jb     L40
L83:
  movq   %rbx,%xmm3
  xorpd  D34(%rip),%xmm3
  movsd  %xmm3,0x18(%rsp)
  mov    %rbx,%r12
  movsd  %xmm3,0x20(%rsp)
L10:
  movsd  0x8(%rsp),%xmm2
  movsd  0x18(%rsp),%xmm4
  addsd  %xmm4,%xmm2
  movsd  %xmm2,0x0(%rbp)
  movsd  0x10(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm5
  addsd  %xmm5,%xmm1
  movsd  %xmm1,0x8(%rbp)
  movq   %rbx,%xmm0
  subsd  %xmm4,%xmm0
  addsd  %xmm2,%xmm0
  movsd  %xmm0,0x10(%rbp)
  movq   %r12,%xmm0
  subsd  %xmm5,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%rbp)
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L40:
  movapd %xmm5,%xmm1
  movapd %xmm3,%xmm0
  call   <fmin@plt>
  subsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x18(%rsp)
  movq   %r13,%xmm1
  movq   %r12,%xmm0
  call   <fmin@plt>
  movapd %xmm0,%xmm6
  subsd  0x10(%rsp),%xmm6
  movsd  %xmm6,0x20(%rsp)
  movq   %r15,%xmm1
  movq   %r14,%xmm0
  call   <fmax@plt>
  movapd %xmm0,%xmm6
  subsd  0x8(%rsp),%xmm6
  movq   %xmm6,%r14
  movq   %r13,%xmm1
  movq   %r12,%xmm0
  call   <fmax@plt>
  movapd %xmm0,%xmm7
  subsd  0x10(%rsp),%xmm7
  movq   %xmm7,%r12
  pxor   %xmm2,%xmm2
  movsd  0x70(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <contains_angle@plt>
  test   %rax,%rax
  je     L28
  movq   %rbx,%xmm7
  minsd  0x18(%rsp),%xmm7
  movsd  %xmm7,0x18(%rsp)
  movq   %rbx,%xmm7
  movq   %r14,%xmm6
  maxsd  %xmm6,%xmm7
  movq   %xmm7,%r14
L28:
  movsd  D55(%rip),%xmm2
  movsd  0x70(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <contains_angle@plt>
  test   %rax,%rax
  je     L89
  movq   %rbx,%xmm7
  minsd  0x20(%rsp),%xmm7
  movsd  %xmm7,0x20(%rsp)
  movq   %rbx,%xmm7
  movq   %r12,%xmm6
  maxsd  %xmm6,%xmm7
  movq   %xmm7,%r12
L89:
  movsd  D18(%rip),%xmm2
  movsd  0x70(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <contains_angle@plt>
  test   %rax,%rax
  je     L27
  movq   %rbx,%xmm0
  xorpd  D34(%rip),%xmm0
  movapd %xmm0,%xmm7
  minsd  0x18(%rsp),%xmm7
  movsd  %xmm7,0x18(%rsp)
  movq   %r14,%xmm7
  maxsd  %xmm7,%xmm0
  movq   %xmm0,%r14
L27:
  movsd  D30(%rip),%xmm2
  movsd  0x70(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <contains_angle@plt>
  test   %rax,%rax
  je     L77
  movq   %rbx,%xmm0
  xorpd  D34(%rip),%xmm0
  movapd %xmm0,%xmm7
  minsd  0x20(%rsp),%xmm7
  movsd  %xmm7,0x20(%rsp)
  movq   %r12,%xmm7
  mov    %r14,%rbx
  comisd %xmm7,%xmm0
  jbe    L10
  movq   %xmm0,%r12
  jmp    L10
L77:
  mov    %r14,%rbx
  jmp    L10
```

tool_calls: name: parse_data
arguments: label: D33
type_infered: f64[2]
name: parse_data
arguments: label: D73
type_infered: f32[2]
name: parse_data
arguments: label: D34
type_infered: f32[4]
name: parse_data
arguments: label: D55
type_infered: f64
name: parse_data
arguments: label: D18
type_infered: f64
name: parse_data
arguments: label: D30
type_infered: f64

tool: {"D33": [360.0,-360.0]}

tool: {"D73": [0.0,-3.8515625]}

tool: {"D34": [0.0,-0.0,0.0,0.0]}

tool: D55: 90

tool: D18: 180

tool: D30: 270

assistant: ```c
void get_bounds(double center_x, double center_y, double radius, double start_x, double start_y, double end_x, double end_y, double start_angle, double arc_angle, double *bounds) {
  double x_min;
  double y_min;
  double x_max;
  double y_max;
  if (arc_angle >= 360.0 || arc_angle <= -360.0) {
    x_min = -radius;
    y_min = -radius;
    x_max = radius;
    y_max = radius;
  } else {
    x_min = fmin(start_x, end_x) - center_x;
    y_min = fmin(start_y, end_y) - center_y;
    x_max = fmax(start_x, end_x) - center_x;
    y_max = fmax(start_y, end_y) - center_y;
    if (contains_angle(start_angle, arc_angle, 0.0)) {
      if (x_min > radius) {
        x_min = radius;
      }
      if (x_max < radius) {
        x_max = radius;
      }
    }
    if (contains_angle(start_angle, arc_angle, 90.0)) {
      if (y_min > radius) {
        y_min = radius;
      }
      if (y_max < radius) {
        y_max = radius;
      }
    }
    if (contains_angle(start_angle, arc_angle, 180.0)) {
      if (x_min > -radius) {
        x_min = -radius;
      }
      if (x_max < -radius) {
        x_max = -radius;
      }
    }
    if (contains_angle(start_angle, arc_angle, 270.0)) {
      if (y_min > -radius) {
        y_min = -radius;
      }
      if (y_max < -radius) {
        y_max = -radius;
      }
    }
  }
  bounds[0] = center_x + x_min;
  bounds[1] = center_y + y_min;
  bounds[2] = bounds[0] + (x_max - x_min);
  bounds[3] = bounds[1] + (y_max - y_min);
}
```