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

```asm
<jpeg_fdct_float>:
  endbr64
  movups (%rdi),%xmm5
  movups 0x10(%rdi),%xmm2
  movups 0x20(%rdi),%xmm1
  movups 0x30(%rdi),%xmm7
  movaps %xmm5,%xmm4
  movups 0x40(%rdi),%xmm3
  shufps $0xdd,%xmm2,%xmm5
  movups 0x60(%rdi),%xmm0
  shufps $0x88,%xmm2,%xmm4
  movaps %xmm1,%xmm2
  shufps $0xdd,%xmm7,%xmm1
  movups 0x70(%rdi),%xmm10
  shufps $0x88,%xmm7,%xmm2
  movups 0x50(%rdi),%xmm7
  movaps %xmm3,%xmm6
  movups 0x90(%rdi),%xmm12
  shufps $0x88,%xmm7,%xmm6
  shufps $0xdd,%xmm7,%xmm3
  movaps %xmm0,%xmm7
  shufps $0xdd,%xmm10,%xmm0
  shufps $0x88,%xmm10,%xmm7
  movaps %xmm4,%xmm10
  shufps $0xdd,%xmm2,%xmm4
  movaps %xmm4,%xmm8
  shufps $0x88,%xmm2,%xmm10
  movaps %xmm6,%xmm2
  shufps $0xdd,%xmm7,%xmm6
  shufps $0xdd,%xmm6,%xmm4
  shufps $0x88,%xmm7,%xmm2
  movaps %xmm5,%xmm7
  shufps $0xdd,%xmm1,%xmm5
  shufps $0x88,%xmm6,%xmm8
  shufps $0x88,%xmm1,%xmm7
  movaps %xmm3,%xmm1
  shufps $0xdd,%xmm0,%xmm3
  shufps $0x88,%xmm0,%xmm1
  movaps %xmm10,%xmm0
  shufps $0xdd,%xmm2,%xmm10
  shufps $0x88,%xmm2,%xmm0
  movaps %xmm7,%xmm2
  shufps $0xdd,%xmm1,%xmm7
  shufps $0x88,%xmm1,%xmm2
  movaps %xmm5,%xmm1
  movaps %xmm2,%xmm6
  shufps $0xdd,%xmm3,%xmm5
  addps  %xmm4,%xmm6
  subps  %xmm4,%xmm2
  shufps $0x88,%xmm3,%xmm1
  movaps %xmm7,%xmm4
  movaps %xmm0,%xmm3
  addps  %xmm8,%xmm4
  subps  %xmm7,%xmm8
  addps  %xmm5,%xmm3
  movaps %xmm10,%xmm7
  subps  %xmm5,%xmm0
  addps  %xmm1,%xmm7
  subps  %xmm10,%xmm1
  movaps D80(%rip),%xmm10
  movaps %xmm3,%xmm5
  addps  %xmm7,%xmm5
  subps  %xmm7,%xmm3
  movaps %xmm6,%xmm7
  subps  %xmm4,%xmm6
  addps  %xmm4,%xmm7
  movaps D65(%rip),%xmm4
  addps  %xmm8,%xmm1
  movaps %xmm5,%xmm9
  addps  %xmm3,%xmm6
  subps  %xmm7,%xmm5
  addps  %xmm7,%xmm9
  movaps %xmm3,%xmm7
  movaps %xmm1,%xmm11
  mulps  D25(%rip),%xmm1
  mulps  %xmm4,%xmm6
  addps  %xmm6,%xmm7
  subps  %xmm6,%xmm3
  movaps %xmm0,%xmm6
  addps  %xmm2,%xmm6
  addps  %xmm8,%xmm2
  subps  %xmm6,%xmm11
  mulps  D97(%rip),%xmm6
  mulps  %xmm4,%xmm2
  mulps  %xmm10,%xmm11
  addps  %xmm11,%xmm1
  addps  %xmm11,%xmm6
  movaps %xmm0,%xmm11
  addps  %xmm2,%xmm11
  subps  %xmm2,%xmm0
  movaps %xmm6,%xmm2
  movaps %xmm1,%xmm8
  addps  %xmm11,%xmm2
  addps  %xmm0,%xmm8
  subps  %xmm1,%xmm0
  subps  %xmm6,%xmm11
  movaps %xmm9,%xmm6
  unpcklps %xmm5,%xmm6
  unpckhps %xmm5,%xmm9
  movaps %xmm7,%xmm1
  movaps %xmm2,%xmm5
  unpckhps %xmm8,%xmm2
  unpckhps %xmm3,%xmm1
  unpcklps %xmm8,%xmm5
  movaps %xmm7,%xmm8
  movaps %xmm0,%xmm7
  unpcklps %xmm3,%xmm8
  unpcklps %xmm11,%xmm7
  unpckhps %xmm11,%xmm0
  movaps %xmm6,%xmm11
  movaps %xmm9,%xmm3
  unpckhps %xmm8,%xmm6
  unpcklps %xmm8,%xmm11
  movaps %xmm9,%xmm8
  movaps %xmm5,%xmm9
  unpcklps %xmm7,%xmm9
  unpckhps %xmm7,%xmm5
  unpcklps %xmm1,%xmm8
  movaps %xmm2,%xmm7
  unpckhps %xmm1,%xmm3
  movaps %xmm8,%xmm15
  unpcklps %xmm0,%xmm7
  unpckhps %xmm0,%xmm2
  movaps %xmm11,%xmm1
  movups 0xc0(%rdi),%xmm0
  unpcklps %xmm7,%xmm15
  unpckhps %xmm7,%xmm8
  movaps %xmm3,%xmm7
  unpcklps %xmm2,%xmm7
  movaps %xmm6,%xmm14
  unpcklps %xmm9,%xmm1
  movaps %xmm8,-0x28(%rsp)
  movaps %xmm7,-0x58(%rsp)
  unpckhps %xmm9,%xmm11
  unpcklps %xmm5,%xmm14
  unpckhps %xmm5,%xmm6
  movups 0x80(%rdi),%xmm7
  movups 0xa0(%rdi),%xmm9
  movaps %xmm3,%xmm5
  movaps %xmm0,%xmm3
  unpckhps %xmm2,%xmm5
  movups 0xe0(%rdi),%xmm2
  movaps %xmm6,-0x38(%rsp)
  movaps %xmm7,%xmm13
  shufps $0xdd,%xmm12,%xmm7
  movaps %xmm5,-0x18(%rsp)
  movaps %xmm9,%xmm5
  shufps $0x88,%xmm12,%xmm13
  movaps %xmm13,%xmm8
  movups 0xb0(%rdi),%xmm12
  movups 0xd0(%rdi),%xmm13
  movaps %xmm11,-0x48(%rsp)
  shufps $0x88,%xmm12,%xmm5
  shufps $0xdd,%xmm12,%xmm9
  shufps $0x88,%xmm13,%xmm3
  shufps $0xdd,%xmm13,%xmm0
  movaps %xmm8,%xmm12
  movups 0xf0(%rdi),%xmm13
  movaps %xmm0,%xmm6
  shufps $0xdd,%xmm5,%xmm8
  shufps $0x88,%xmm5,%xmm12
  movaps %xmm2,%xmm0
  movaps %xmm3,%xmm5
  shufps $0x88,%xmm13,%xmm0
  shufps $0x88,%xmm0,%xmm5
  shufps $0xdd,%xmm0,%xmm3
  movaps %xmm7,%xmm0
  shufps $0xdd,%xmm13,%xmm2
  shufps $0x88,%xmm9,%xmm0
  shufps $0xdd,%xmm9,%xmm7
  movaps %xmm8,%xmm13
  movaps %xmm6,%xmm9
  shufps $0x88,%xmm3,%xmm13
  shufps $0xdd,%xmm2,%xmm6
  movaps %xmm13,%xmm11
  shufps $0x88,%xmm2,%xmm9
  shufps $0xdd,%xmm3,%xmm8
  movaps %xmm12,%xmm2
  movaps %xmm7,%xmm3
  shufps $0xdd,%xmm5,%xmm12
  shufps $0xdd,%xmm6,%xmm7
  shufps $0x88,%xmm5,%xmm2
  shufps $0x88,%xmm6,%xmm3
  movaps %xmm0,%xmm5
  movaps %xmm2,%xmm6
  shufps $0xdd,%xmm9,%xmm0
  subps  %xmm0,%xmm11
  addps  %xmm7,%xmm6
  shufps $0x88,%xmm9,%xmm5
  movaps %xmm0,%xmm9
  movaps %xmm12,%xmm0
  addps  %xmm3,%xmm0
  subps  %xmm7,%xmm2
  movaps %xmm5,%xmm7
  addps  %xmm13,%xmm9
  addps  %xmm8,%xmm7
  movaps %xmm6,%xmm13
  subps  %xmm8,%xmm5
  subps  %xmm12,%xmm3
  addps  %xmm0,%xmm13
  subps  %xmm0,%xmm6
  movaps %xmm2,%xmm12
  addps  %xmm11,%xmm3
  addps  %xmm5,%xmm12
  movaps %xmm13,%xmm8
  movaps %xmm7,%xmm13
  subps  %xmm9,%xmm7
  addps  %xmm9,%xmm13
  movaps %xmm6,%xmm9
  addps  %xmm11,%xmm5
  movaps %xmm8,%xmm0
  addps  %xmm6,%xmm7
  mulps  %xmm4,%xmm5
  subps  %xmm13,%xmm8
  addps  %xmm13,%xmm0
  mulps  %xmm4,%xmm7
  subps  %xmm7,%xmm6
  addps  %xmm7,%xmm9
  movaps %xmm3,%xmm7
  subps  %xmm12,%xmm7
  mulps  D25(%rip),%xmm3
  mulps  D97(%rip),%xmm12
  mulps  %xmm10,%xmm7
  addps  %xmm7,%xmm3
  addps  %xmm7,%xmm12
  movaps %xmm2,%xmm7
  subps  %xmm5,%xmm2
  addps  %xmm5,%xmm7
  movaps %xmm0,%xmm5
  unpcklps %xmm8,%xmm5
  unpckhps %xmm8,%xmm0
  movaps %xmm3,%xmm13
  addps  %xmm2,%xmm13
  subps  %xmm3,%xmm2
  movaps %xmm12,%xmm3
  addps  %xmm7,%xmm3
  subps  %xmm12,%xmm7
  movaps %xmm3,%xmm12
  unpckhps %xmm13,%xmm3
  unpcklps %xmm13,%xmm12
  movaps %xmm9,%xmm13
  unpckhps %xmm6,%xmm9
  unpcklps %xmm6,%xmm13
  movaps %xmm13,%xmm8
  movaps %xmm2,%xmm13
  unpckhps %xmm7,%xmm2
  unpcklps %xmm7,%xmm13
  movaps %xmm5,%xmm7
  unpckhps %xmm8,%xmm5
  movaps %xmm13,%xmm11
  movaps %xmm0,%xmm13
  unpcklps %xmm8,%xmm7
  unpcklps %xmm9,%xmm13
  unpckhps %xmm9,%xmm0
  movaps %xmm12,%xmm9
  unpckhps %xmm11,%xmm12
  unpcklps %xmm11,%xmm9
  movaps %xmm13,%xmm8
  movaps %xmm12,%xmm6
  movaps %xmm3,%xmm13
  movaps %xmm7,%xmm12
  unpcklps %xmm2,%xmm13
  unpcklps %xmm9,%xmm12
  unpckhps %xmm9,%xmm7
  movaps %xmm8,%xmm9
  unpckhps %xmm2,%xmm3
  movaps %xmm0,%xmm2
  unpcklps %xmm13,%xmm9
  unpcklps %xmm3,%xmm2
  unpckhps %xmm3,%xmm0
  movaps %xmm9,%xmm3
  movaps %xmm5,%xmm11
  unpckhps %xmm6,%xmm5
  addps  %xmm14,%xmm3
  subps  %xmm9,%xmm14
  unpcklps %xmm6,%xmm11
  movaps %xmm2,%xmm6
  unpckhps %xmm13,%xmm8
  movaps %xmm11,%xmm13
  addps  %xmm1,%xmm6
  subps  %xmm2,%xmm1
  movaps %xmm15,%xmm9
  movaps %xmm14,%xmm2
  movaps -0x58(%rsp),%xmm14
  addps  %xmm15,%xmm13
  subps  %xmm11,%xmm9
  movaps %xmm3,%xmm15
  addps  %xmm12,%xmm14
  subps  %xmm13,%xmm3
  addps  %xmm13,%xmm15
  movaps %xmm14,%xmm11
  addps  %xmm6,%xmm11
  subps  %xmm14,%xmm6
  movaps %xmm15,%xmm14
  addps  %xmm6,%xmm3
  movaps %xmm11,%xmm15
  subps  %xmm14,%xmm11
  addps  %xmm14,%xmm15
  mulps  %xmm4,%xmm3
  movups %xmm11,0x80(%rdi)
  movups %xmm15,(%rdi)
  movaps %xmm3,%xmm13
  addps  %xmm6,%xmm13
  subps  %xmm3,%xmm6
  movups %xmm13,0x40(%rdi)
  movups %xmm6,0xc0(%rdi)
  movaps -0x58(%rsp),%xmm14
  movaps %xmm2,%xmm6
  addps  %xmm9,%xmm2
  addps  %xmm1,%xmm6
  movaps -0x18(%rsp),%xmm15
  subps  %xmm12,%xmm14
  mulps  %xmm4,%xmm2
  movaps %xmm14,%xmm3
  addps  %xmm9,%xmm3
  movaps %xmm2,%xmm9
  movaps %xmm3,%xmm14
  addps  %xmm1,%xmm9
  subps  %xmm2,%xmm1
  subps  %xmm6,%xmm14
  mulps  D25(%rip),%xmm3
  mulps  D97(%rip),%xmm6
  movaps %xmm1,%xmm2
  movaps %xmm14,%xmm11
  mulps  %xmm10,%xmm11
  addps  %xmm11,%xmm3
  addps  %xmm11,%xmm6
  movaps %xmm15,%xmm11
  addps  %xmm7,%xmm11
  subps  %xmm3,%xmm1
  addps  %xmm3,%xmm2
  movaps -0x28(%rsp),%xmm3
  movups %xmm1,0x60(%rdi)
  movaps %xmm6,%xmm1
  addps  %xmm9,%xmm1
  movups %xmm2,0xa0(%rdi)
  movaps -0x38(%rsp),%xmm2
  subps  %xmm6,%xmm9
  movups %xmm1,0x20(%rdi)
  movaps -0x48(%rsp),%xmm1
  movups %xmm9,0xe0(%rdi)
  movaps %xmm11,%xmm9
  movaps %xmm1,%xmm6
  subps  %xmm0,%xmm1
  addps  %xmm0,%xmm6
  movaps %xmm2,%xmm0
  subps  %xmm8,%xmm2
  addps  %xmm8,%xmm0
  movaps %xmm3,%xmm8
  subps  %xmm5,%xmm3
  addps  %xmm5,%xmm8
  addps  %xmm6,%xmm9
  movaps %xmm6,%xmm5
  subps  %xmm11,%xmm5
  movaps %xmm8,%xmm6
  addps  %xmm0,%xmm6
  subps  %xmm8,%xmm0
  addps  %xmm5,%xmm0
  movaps %xmm6,%xmm11
  addps  %xmm9,%xmm11
  subps  %xmm6,%xmm9
  mulps  %xmm4,%xmm0
  movups %xmm11,0x10(%rdi)
  movups %xmm9,0x90(%rdi)
  movaps %xmm0,%xmm6
  addps  %xmm5,%xmm6
  subps  %xmm0,%xmm5
  movaps %xmm15,%xmm0
  subps  %xmm7,%xmm0
  movups %xmm5,0xd0(%rdi)
  movaps %xmm2,%xmm5
  addps  %xmm3,%xmm0
  addps  %xmm1,%xmm5
  movups %xmm6,0x50(%rdi)
  addps  %xmm2,%xmm3
  movaps %xmm0,%xmm6
  subps  %xmm5,%xmm6
  mulps  %xmm4,%xmm3
  mulps  D25(%rip),%xmm0
  mulps  D97(%rip),%xmm5
  mulps  %xmm10,%xmm6
  movaps %xmm3,%xmm2
  addps  %xmm1,%xmm2
  subps  %xmm3,%xmm1
  addps  %xmm6,%xmm0
  addps  %xmm6,%xmm5
  movaps %xmm1,%xmm3
  addps  %xmm0,%xmm3
  subps  %xmm0,%xmm1
  movaps %xmm2,%xmm0
  addps  %xmm5,%xmm0
  subps  %xmm5,%xmm2
  movups %xmm3,0xb0(%rdi)
  movups %xmm1,0x70(%rdi)
  movups %xmm0,0x30(%rdi)
  movups %xmm2,0xf0(%rdi)
  ret
```

tool_calls: name: read_data
arguments: label: D80
type: f32[4]
name: read_data
arguments: label: D65
type: f32[4]
name: read_data
arguments: label: D25
type: f32[4]
name: read_data
arguments: label: D97
type: f32[4]

tool: {"D80": [0.3826834261417389,0.3826834261417389,0.3826834261417389,0.3826834261417389]}

tool: {"D65": [0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304]}

tool: {"D25": [0.5411961078643799,0.5411961078643799,0.5411961078643799,0.5411961078643799]}

tool: {"D97": [1.3065630197525024,1.3065630197525024,1.3065630197525024,1.3065630197525024]}

assistant: ```c
void jpeg_fdct_float(float *data) {
  float tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  float tmp10, tmp11, tmp12, tmp13;
  float z1, z2, z3, z4, z5, z11, z13;
  float *dataptr;
  int ctr;
  dataptr = data;
  for (ctr = 8 - 1; ctr >= 0; ctr--) {
    tmp0 = dataptr[0] + dataptr[7];
    tmp7 = dataptr[0] - dataptr[7];
    tmp1 = dataptr[1] + dataptr[6];
    tmp6 = dataptr[1] - dataptr[6];
    tmp2 = dataptr[2] + dataptr[5];
    tmp5 = dataptr[2] - dataptr[5];
    tmp3 = dataptr[3] + dataptr[4];
    tmp4 = dataptr[3] - dataptr[4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[0] = tmp10 + tmp11;
    dataptr[4] = tmp10 - tmp11;
    z1 = (tmp12 + tmp13) * ((float)0.707106781);
    dataptr[2] = tmp13 + z1;
    dataptr[6] = tmp13 - z1;
    tmp10 = tmp4 + tmp5;
    tmp11 = tmp5 + tmp6;
    tmp12 = tmp6 + tmp7;
    z5 = (tmp10 - tmp12) * ((float)0.382683433);
    z2 = ((float)0.541196100) * tmp10 + z5;
    z4 = ((float)1.306562965) * tmp12 + z5;
    z3 = tmp11 * ((float)0.707106781);
    z11 = tmp7 + z3;
    z13 = tmp7 - z3;
    dataptr[5] = z13 + z2;
    dataptr[3] = z13 - z2;
    dataptr[1] = z11 + z4;
    dataptr[7] = z11 - z4;
    dataptr += 8;
  }
  dataptr = data;
  for (ctr = 8 - 1; ctr >= 0; ctr--) {
    tmp0 = dataptr[8 * 0] + dataptr[8 * 7];
    tmp7 = dataptr[8 * 0] - dataptr[8 * 7];
    tmp1 = dataptr[8 * 1] + dataptr[8 * 6];
    tmp6 = dataptr[8 * 1] - dataptr[8 * 6];
    tmp2 = dataptr[8 * 2] + dataptr[8 * 5];
    tmp5 = dataptr[8 * 2] - dataptr[8 * 5];
    tmp3 = dataptr[8 * 3] + dataptr[8 * 4];
    tmp4 = dataptr[8 * 3] - dataptr[8 * 4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[8 * 0] = tmp10 + tmp11;
    dataptr[8 * 4] = tmp10 - tmp11;
    z1 = (tmp12 + tmp13) * ((float)0.707106781);
    dataptr[8 * 2] = tmp13 + z1;
    dataptr[8 * 6] = tmp13 - z1;
    tmp10 = tmp4 + tmp5;
    tmp11 = tmp5 + tmp6;
    tmp12 = tmp6 + tmp7;
    z5 = (tmp10 - tmp12) * ((float)0.382683433);
    z2 = ((float)0.541196100) * tmp10 + z5;
    z4 = ((float)1.306562965) * tmp12 + z5;
    z3 = tmp11 * ((float)0.707106781);
    z11 = tmp7 + z3;
    z13 = tmp7 - z3;
    dataptr[8 * 5] = z13 + z2;
    dataptr[8 * 3] = z13 - z2;
    dataptr[8 * 1] = z11 + z4;
    dataptr[8 * 7] = z11 - z4;
    dataptr++;
  }
}
```