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

```asm
<collision_radius_to_line_segment>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movss  %xmm0,-0x34(%rbp)
  movss  %xmm1,-0x38(%rbp)
  movss  %xmm2,-0x3c(%rbp)
  movss  %xmm3,-0x40(%rbp)
  movss  %xmm4,-0x44(%rbp)
  movss  %xmm5,-0x48(%rbp)
  movss  %xmm6,-0x4c(%rbp)
  movss  -0x40(%rbp),%xmm0
  movaps %xmm0,%xmm4
  addss  -0x4c(%rbp),%xmm4
  movss  -0x3c(%rbp),%xmm0
  movaps %xmm0,%xmm3
  addss  -0x4c(%rbp),%xmm3
  movss  -0x38(%rbp),%xmm0
  movaps %xmm0,%xmm2
  subss  -0x4c(%rbp),%xmm2
  movss  -0x34(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  -0x4c(%rbp),%xmm1
  movss  -0x48(%rbp),%xmm0
  mov    -0x44(%rbp),%eax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <point_in_rectangle_full@plt>
  test   %rax,%rax
  je     L7
  movss  -0x3c(%rbp),%xmm0
  subss  -0x34(%rbp),%xmm0
  movss  %xmm0,-0x24(%rbp)
  movss  -0x40(%rbp),%xmm0
  subss  -0x38(%rbp),%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  -0x24(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm0,%xmm1
  movss  -0x20(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  -0x44(%rbp),%xmm0
  subss  -0x34(%rbp),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  -0x48(%rbp),%xmm0
  subss  -0x38(%rbp),%xmm0
  movss  %xmm0,-0x14(%rbp)
  movss  -0x24(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x18(%rbp),%xmm1
  movss  -0x20(%rbp),%xmm0
  mulss  -0x14(%rbp),%xmm0
  addss  %xmm1,%xmm0
  divss  -0x1c(%rbp),%xmm0
  movss  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  comiss -0x10(%rbp),%xmm0
  jb     L44
  movss  -0x18(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm0,%xmm1
  movss  -0x14(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x28(%rbp)
  jmp    L47
L44:
  movss  -0x10(%rbp),%xmm0
  movss  D9(%rip),%xmm1
  comiss %xmm1,%xmm0
  jb     L21
  movss  -0x44(%rbp),%xmm0
  subss  -0x3c(%rbp),%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  -0x48(%rbp),%xmm0
  subss  -0x40(%rbp),%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x8(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm0,%xmm1
  movss  -0x4(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x28(%rbp)
  jmp    L47
L21:
  movss  -0x20(%rbp),%xmm0
  mulss  -0x44(%rbp),%xmm0
  movss  -0x24(%rbp),%xmm1
  mulss  -0x48(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movss  -0x34(%rbp),%xmm1
  movaps %xmm1,%xmm2
  mulss  -0x40(%rbp),%xmm2
  movaps %xmm0,%xmm1
  subss  %xmm2,%xmm1
  movss  -0x3c(%rbp),%xmm0
  mulss  -0x38(%rbp),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  movss  -0xc(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  divss  -0x1c(%rbp),%xmm0
  movss  %xmm0,-0x28(%rbp)
L47:
  movss  -0x4c(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  comiss -0x28(%rbp),%xmm0
  seta   %al
  movzbl %al,%eax
  jmp    L52
L7:
  mov    $0x0,%eax
L52:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D9
type_guessed: f32

tool: D9: 1

assistant: ```c
int collision_radius_to_line_segment(float x1, float y1, float x2, float y2, float px, float py, float radius) {
  if (point_in_rectangle_full(px, py, x1 - radius, y1 - radius, x2 + radius, y2 + radius)) {
    float dx = x2 - x1;
    float dy = y2 - y1;
    float d2 = dx * dx + dy * dy;
    float ex = px - x1;
    float ey = py - y1;
    float scale = (dx * ex + dy * ey) / d2;
    float dist2;
    if (scale <= 0.0) {
      dist2 = ex * ex + ey * ey;
    } else if (scale >= 1.0) {
      float fx = px - x2;
      float fy = py - y2;
      dist2 = fx * fx + fy * fy;
    } else {
      float temp = dy * px - dx * py - x1 * y2 + x2 * y1;
      dist2 = temp * temp / d2;
    }
    return dist2 < radius * radius;
  }
  return 0;
}
```