user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<marchi>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movss  %xmm0,-0x4(%rbp)
  movss  %xmm1,-0x8(%rbp)
  movss  %xmm2,-0xc(%rbp)
  movss  %xmm3,-0x10(%rbp)
  movss  %xmm4,-0x14(%rbp)
  movss  %xmm5,-0x18(%rbp)
  movss  -0x8(%rbp),%xmm0
  comiss -0x4(%rbp),%xmm0
  jb     L173
  movss  -0xc(%rbp),%xmm0
  comiss -0x4(%rbp),%xmm0
  jb     L173
  movss  -0x10(%rbp),%xmm0
  comiss -0x4(%rbp),%xmm0
  jb     L173
  movss  -0xc(%rbp),%xmm0
  comiss -0x8(%rbp),%xmm0
  jb     L109
  movss  -0x18(%rbp),%xmm4
  movss  -0x14(%rbp),%xmm3
  movss  -0x10(%rbp),%xmm2
  movss  -0xc(%rbp),%xmm1
  movss  -0x8(%rbp),%xmm0
  mov    -0x4(%rbp),%eax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <single_marcho@plt>
  movd   %xmm0,%eax
  jmp    L132
L109:
  movss  -0x14(%rbp),%xmm4
  movss  -0x18(%rbp),%xmm3
  movss  -0x10(%rbp),%xmm2
  movss  -0x8(%rbp),%xmm1
  movss  -0xc(%rbp),%xmm0
  mov    -0x4(%rbp),%eax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <marchi>
  movd   %xmm0,%eax
  jmp    L132
L173:
  movss  -0x4(%rbp),%xmm0
  comiss -0xc(%rbp),%xmm0
  jb     L92
  movss  -0x8(%rbp),%xmm0
  comiss -0xc(%rbp),%xmm0
  jb     L92
  movss  -0x10(%rbp),%xmm0
  comiss -0xc(%rbp),%xmm0
  jb     L92
  movss  D12(%rip),%xmm0
  movaps %xmm0,%xmm3
  subss  -0x14(%rbp),%xmm3
  movss  -0x18(%rbp),%xmm4
  movss  -0x8(%rbp),%xmm2
  movss  -0x4(%rbp),%xmm1
  movss  -0x10(%rbp),%xmm0
  mov    -0xc(%rbp),%eax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <marchi>
  movd   %xmm0,%eax
  jmp    L132
L92:
  movss  -0x4(%rbp),%xmm0
  comiss -0x8(%rbp),%xmm0
  jb     L150
  movss  -0xc(%rbp),%xmm0
  comiss -0x8(%rbp),%xmm0
  jb     L150
  movss  -0x10(%rbp),%xmm0
  comiss -0x8(%rbp),%xmm0
  jb     L150
  movss  D12(%rip),%xmm0
  movaps %xmm0,%xmm4
  subss  -0x18(%rbp),%xmm4
  movss  -0x14(%rbp),%xmm3
  movss  -0xc(%rbp),%xmm2
  movss  -0x10(%rbp),%xmm1
  movss  -0x4(%rbp),%xmm0
  mov    -0x8(%rbp),%eax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <marchi>
  movd   %xmm0,%eax
  jmp    L132
L150:
  movss  -0x4(%rbp),%xmm0
  comiss -0x10(%rbp),%xmm0
  jb     L53
  movss  -0x8(%rbp),%xmm0
  comiss -0x10(%rbp),%xmm0
  jb     L53
  movss  -0xc(%rbp),%xmm0
  comiss -0x10(%rbp),%xmm0
  jb     L53
  movss  D12(%rip),%xmm0
  movaps %xmm0,%xmm4
  subss  -0x14(%rbp),%xmm4
  movss  D12(%rip),%xmm0
  movaps %xmm0,%xmm3
  subss  -0x18(%rbp),%xmm3
  movss  -0x4(%rbp),%xmm2
  movss  -0xc(%rbp),%xmm1
  movss  -0x8(%rbp),%xmm0
  mov    -0x10(%rbp),%eax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <marchi>
  movd   %xmm0,%eax
  jmp    L132
L53:
  mov    $0x0,%edi
  call   <assert@plt>
  mov    D34(%rip),%eax
L132:
  movd   %eax,%xmm0
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D12
type_guessed: byte[4]
name: read_data
arguments: label: D34
type_guessed: byte[4]

tool: {"D12": [0x00,0x00,0x80,0x3f]}

tool: {"D34": [0x00,0x00,0x00,0x00]}

assistant: ```c
float marchi(float a, float b, float c, float d, float x, float y) {
  if (a <= b && a <= c && a <= d) {
    if (b <= c)
      return single_marcho(a, b, c, d, x, y);
    else
      return marchi(a, c, b, d, y, x);
  } else if (c <= a && c <= b && c <= d)
    return marchi(c, d, a, b, 1 - x, y);
  else if (b <= a && b <= c && b <= d)
    return marchi(b, a, d, c, x, 1 - y);
  else if (d <= a && d <= b && d <= c)
    return marchi(d, b, c, a, 1 - y, 1 - x);
  else
    assert(0);
  return 0;
}
```