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

```asm
<march_cyclic>:
  endbr64
  sub    $0x28,%rsp
  movss  %xmm2,0x8(%rsp)
  movss  %xmm3,0xc(%rsp)
  movss  %xmm4,0x10(%rsp)
  movss  %xmm5,0x1c(%rsp)
  movss  %xmm1,0x18(%rsp)
  movss  %xmm0,0x14(%rsp)
  comiss %xmm0,%xmm1
  setae  %dil
  movzbl %dil,%edi
  call   <assert@plt>
  movss  0xc(%rsp),%xmm7
  comiss 0x18(%rsp),%xmm7
  setae  %dil
  movzbl %dil,%edi
  call   <assert@plt>
  movss  0x8(%rsp),%xmm6
  comiss 0xc(%rsp),%xmm6
  setae  %dil
  movzbl %dil,%edi
  call   <assert@plt>
  movss  0x14(%rsp),%xmm0
  movss  0x8(%rsp),%xmm6
  ucomiss %xmm6,%xmm0
  jp     L85
  jne    L85
  movss  D85(%rip),%xmm1
  subss  0x1c(%rsp),%xmm1
  mulss  D19(%rip),%xmm1
  comiss 0x10(%rsp),%xmm1
  jae    L86
  movss  D19(%rip),%xmm2
  movss  0x1c(%rsp),%xmm4
  mulss  %xmm2,%xmm4
  addss  %xmm4,%xmm2
  movss  0x10(%rsp),%xmm3
  comiss %xmm2,%xmm3
  jae    L56
L17:
  movss  0x10(%rsp),%xmm5
  movaps %xmm5,%xmm0
  subss  %xmm1,%xmm0
  mulss  0xc(%rsp),%xmm0
  movaps %xmm2,%xmm3
  subss  %xmm5,%xmm3
  mulss  0x18(%rsp),%xmm3
  addss  %xmm3,%xmm0
  subss  %xmm1,%xmm2
  divss  %xmm2,%xmm0
L114:
  add    $0x28,%rsp
  ret
L85:
  movss  0x8(%rsp),%xmm1
  movss  0x14(%rsp),%xmm7
  subss  %xmm7,%xmm1
  movss  0x18(%rsp),%xmm0
  subss  %xmm7,%xmm0
  divss  %xmm1,%xmm0
  movss  D85(%rip),%xmm1
  subss  0x1c(%rsp),%xmm1
  mulss  %xmm0,%xmm1
  comiss 0x10(%rsp),%xmm1
  jae    L109
  movss  0xc(%rsp),%xmm0
  movss  0x14(%rsp),%xmm4
  subss  %xmm4,%xmm0
  movss  0x8(%rsp),%xmm2
  subss  %xmm4,%xmm2
  divss  %xmm2,%xmm0
  movss  D85(%rip),%xmm3
  subss  %xmm0,%xmm3
  movss  0x1c(%rsp),%xmm4
  mulss  %xmm3,%xmm4
  movaps %xmm4,%xmm2
  addss  %xmm0,%xmm2
  movss  0x10(%rsp),%xmm5
  comiss %xmm2,%xmm5
  jb     L17
  movss  D85(%rip),%xmm1
  comiss %xmm0,%xmm1
  ja     L102
  movss  0x8(%rsp),%xmm0
  jmp    L114
L109:
  comiss D62(%rip),%xmm0
  ja     L89
  movss  0x14(%rsp),%xmm0
  jmp    L114
L86:
  movss  D19(%rip),%xmm0
L89:
  movss  0x1c(%rsp),%xmm1
  mulss  %xmm0,%xmm1
  addss  0x10(%rsp),%xmm1
  divss  %xmm0,%xmm1
  movss  D85(%rip),%xmm0
  subss  %xmm1,%xmm0
  mulss  0x14(%rsp),%xmm0
  mulss  0x18(%rsp),%xmm1
  addss  %xmm1,%xmm0
  jmp    L114
L56:
  movss  D19(%rip),%xmm3
L102:
  movss  D85(%rip),%xmm1
  movaps %xmm1,%xmm0
  subss  0x10(%rsp),%xmm0
  addss  %xmm4,%xmm0
  divss  %xmm3,%xmm0
  subss  %xmm0,%xmm1
  mulss  0x8(%rsp),%xmm1
  mulss  0xc(%rsp),%xmm0
  addss  %xmm1,%xmm0
  jmp    L114
```

tool_calls: name: disassemble_data
arguments: tag: D85
datatype: f32
name: disassemble_data
arguments: tag: D19
datatype: f32
name: disassemble_data
arguments: tag: D62
datatype: byte[4]

tool: D85: 1

tool: D19: 0.5

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

assistant: ```c
float march_cyclic(float a, float b, float c, float d, float x, float y) {
  assert(a <= b);
  assert(b <= d);
  assert(d <= c);
  float alpha = c == a ? 0.5 : (b - a) / (c - a);
  if (x <= alpha * (1 - y)) {
    float ix = a;
    if (alpha > 0) {
      float y0 = (x + alpha * y) / alpha;
      ix = b * y0 + a * (1 - y0);
    }
    return ix;
  }
  float beta = c == a ? 0.5 : (d - a) / (c - a);
  if (x >= beta + (1 - beta) * y) {
    float ix = c;
    if (beta < 1) {
      float y0 = (1 - x + (1 - beta) * y) / (1 - beta);
      ix = d * y0 + c * (1 - y0);
    }
    return ix;
  }
  float x0 = alpha * (1 - y);
  float x1 = beta + (1 - beta) * y;
  float ix = ((x - x0) * d + (x1 - x) * b) / (x1 - x0);
  return 1 * ix;
}
```