user: 请将以下的汇编代码转换成C语言代码：

```asm
<psnd_get_clipped_viewwin>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8,-0x48(%rbp)
  mov    %r9,-0x50(%rbp)
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    0x10(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  mov    -0x50(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x18(%rbp)
  mov    0x18(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jbe    L118
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  jmp    L91
L118:
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm0
L91:
  movss  %xmm0,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L24
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  jmp    L20
L24:
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm0
L20:
  movss  %xmm0,-0xc(%rbp)
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x40(%rbp),%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jbe    L110
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm0
  jmp    L27
L110:
  mov    -0x40(%rbp),%rax
  movss  (%rax),%xmm0
L27:
  movss  %xmm0,-0x8(%rbp)
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x40(%rbp),%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L37
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm0
  jmp    L40
L37:
  mov    -0x40(%rbp),%rax
  movss  (%rax),%xmm0
L40:
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm0,%xmm0
  comiss -0x10(%rbp),%xmm0
  jbe    L92
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm2
  movss  -0x10(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  %xmm2,%xmm1
  mov    0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm2
  subss  %xmm2,%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm3
  movaps %xmm1,%xmm2
  subss  %xmm3,%xmm2
  movaps %xmm0,%xmm1
  divss  %xmm2,%xmm1
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x20(%rbp)
L92:
  movss  -0xc(%rbp),%xmm0
  movss  D23(%rip),%xmm1
  comiss %xmm1,%xmm0
  jbe    L19
  movss  D23(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm2
  movss  -0xc(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  %xmm2,%xmm1
  mov    0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm2
  subss  %xmm2,%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm3
  movaps %xmm1,%xmm2
  subss  %xmm3,%xmm2
  movaps %xmm0,%xmm1
  divss  %xmm2,%xmm1
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x1c(%rbp)
L19:
  pxor   %xmm0,%xmm0
  comiss -0x8(%rbp),%xmm0
  jbe    L87
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x8(%rbp)
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm2
  movss  -0x8(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  %xmm2,%xmm1
  mov    0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  movss  (%rax),%xmm2
  subss  %xmm2,%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x40(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm3
  movaps %xmm1,%xmm2
  subss  %xmm3,%xmm2
  movaps %xmm0,%xmm1
  divss  %xmm2,%xmm1
  mov    -0x50(%rbp),%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x18(%rbp)
L87:
  movss  -0x4(%rbp),%xmm0
  movss  D23(%rip),%xmm1
  comiss %xmm1,%xmm0
  jbe    L53
  movss  D23(%rip),%xmm0
  movss  %xmm0,-0x4(%rbp)
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm2
  movss  -0x4(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  %xmm2,%xmm1
  mov    0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  movss  (%rax),%xmm2
  subss  %xmm2,%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x40(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm3
  movaps %xmm1,%xmm2
  subss  %xmm3,%xmm2
  movaps %xmm0,%xmm1
  divss  %xmm2,%xmm1
  mov    -0x50(%rbp),%rax
  movss  (%rax),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x14(%rbp)
L53:
  mov    -0x48(%rbp),%rax
  movss  -0x20(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  movss  -0x1c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x50(%rbp),%rax
  movss  -0x18(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x18(%rbp),%rax
  movss  -0x14(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  movss  -0x10(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x38(%rbp),%rax
  movss  -0xc(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x30(%rbp),%rax
  movss  -0x8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x40(%rbp),%rax
  movss  -0x4(%rbp),%xmm0
  movss  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D23
type_infered: f32

tool: D23: 1

assistant: ```c
void psnd_get_clipped_viewwin(float *vx1, float *vy1, float *vx2, float *vy2, float *wx1, float *wy1, float *wx2, float *wy2) {
  float nwx1 = *wx1;
  float nwx2 = *wx2;
  float nwy1 = *wy1;
  float nwy2 = *wy2;
  float nvx1 = (((*vx1) < (*vx2)) ? (*vx1) : (*vx2));
  float nvx2 = (((*vx1) > (*vx2)) ? (*vx1) : (*vx2));
  float nvy1 = (((*vy1) < (*vy2)) ? (*vy1) : (*vy2));
  float nvy2 = (((*vy1) > (*vy2)) ? (*vy1) : (*vy2));
  if (nvx1 < 0.0) {
    nvx1 = 0.0;
    nwx1 = (nvx1 - (*vx1)) * (*wx2 - *wx1) / (*vx2 - *vx1) + *wx1;
  }
  if (nvx2 > 1.0) {
    nvx2 = 1.0;
    nwx2 = (nvx2 - (*vx1)) * (*wx2 - *wx1) / (*vx2 - *vx1) + *wx1;
  }
  if (nvy1 < 0.0) {
    nvy1 = 0.0;
    nwy1 = (nvy1 - (*vy1)) * (*wy2 - *wy1) / (*vy2 - *vy1) + *wy1;
  }
  if (nvy2 > 1.0) {
    nvy2 = 1.0;
    nwy2 = (nvy2 - (*vy1)) * (*wy2 - *wy1) / (*vy2 - *vy1) + *wy1;
  }
  *wx1 = nwx1;
  *wx2 = nwx2;
  *wy1 = nwy1;
  *wy2 = nwy2;
  *vx1 = nvx1;
  *vx2 = nvx2;
  *vy1 = nvy1;
  *vy2 = nvy2;
}
```