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

```asm
<jpeg12_fdct_float>:
  endbr64
  movss  D4(%rip),%xmm2
  mov    %rdi,%rax
  mov    %rdi,%rdx
  movss  D3(%rip),%xmm3
  movss  D1(%rip),%xmm4
  movss  D11(%rip),%xmm5
  lea    0x100(%rdi),%rcx
  nopl   0x0(%rax)
L0:
  movss  (%rdx),%xmm1
  movss  0x1c(%rdx),%xmm0
  add    $0x20,%rdx
  movss  -0x1c(%rdx),%xmm7
  movss  -0x18(%rdx),%xmm8
  movaps %xmm1,%xmm9
  subss  %xmm0,%xmm1
  movss  -0x10(%rdx),%xmm10
  addss  %xmm0,%xmm9
  movss  -0x8(%rdx),%xmm0
  movaps %xmm7,%xmm6
  movaps %xmm8,%xmm12
  addss  %xmm0,%xmm6
  subss  %xmm0,%xmm7
  movss  -0xc(%rdx),%xmm0
  movaps %xmm9,%xmm11
  subss  %xmm0,%xmm8
  addss  %xmm0,%xmm12
  movss  -0x14(%rdx),%xmm0
  movaps %xmm0,%xmm13
  subss  %xmm10,%xmm0
  addss  %xmm10,%xmm13
  addss  %xmm8,%xmm0
  subss  %xmm13,%xmm9
  addss  %xmm13,%xmm11
  movaps %xmm6,%xmm13
  subss  %xmm12,%xmm6
  addss  %xmm12,%xmm13
  movaps %xmm11,%xmm14
  addss  %xmm9,%xmm6
  subss  %xmm13,%xmm11
  addss  %xmm13,%xmm14
  mulss  %xmm2,%xmm6
  movss  %xmm11,-0x10(%rdx)
  movaps %xmm9,%xmm11
  movss  %xmm14,-0x20(%rdx)
  subss  %xmm6,%xmm9
  addss  %xmm6,%xmm11
  movaps %xmm1,%xmm6
  addss  %xmm7,%xmm6
  addss  %xmm8,%xmm7
  movaps %xmm1,%xmm8
  movss  %xmm9,-0x8(%rdx)
  movaps %xmm0,%xmm9
  subss  %xmm6,%xmm9
  mulss  %xmm4,%xmm0
  movss  %xmm11,-0x18(%rdx)
  mulss  %xmm2,%xmm7
  mulss  %xmm5,%xmm6
  mulss  %xmm3,%xmm9
  subss  %xmm7,%xmm1
  addss  %xmm7,%xmm8
  addss  %xmm9,%xmm0
  addss  %xmm9,%xmm6
  movaps %xmm0,%xmm7
  addss  %xmm1,%xmm7
  subss  %xmm0,%xmm1
  movaps %xmm6,%xmm0
  addss  %xmm8,%xmm0
  subss  %xmm6,%xmm8
  movss  %xmm7,-0xc(%rdx)
  movss  %xmm1,-0x14(%rdx)
  movss  %xmm0,-0x1c(%rdx)
  movss  %xmm8,-0x4(%rdx)
  cmp    %rcx,%rdx
  jne    L0
  lea    0x20(%rax),%rdx
  xchg   %ax,%ax
L18:
  movss  (%rax),%xmm6
  movss  0x20(%rax),%xmm7
  add    $0x4,%rax
  movss  0xdc(%rax),%xmm0
  movss  0x3c(%rax),%xmm8
  movaps %xmm6,%xmm9
  movaps %xmm7,%xmm1
  movss  0x7c(%rax),%xmm10
  subss  %xmm0,%xmm6
  addss  %xmm0,%xmm9
  movaps %xmm8,%xmm12
  movss  0xbc(%rax),%xmm0
  addss  %xmm0,%xmm1
  subss  %xmm0,%xmm7
  movss  0x9c(%rax),%xmm0
  movaps %xmm9,%xmm11
  subss  %xmm0,%xmm8
  addss  %xmm0,%xmm12
  movss  0x5c(%rax),%xmm0
  movaps %xmm0,%xmm13
  subss  %xmm10,%xmm0
  addss  %xmm10,%xmm13
  addss  %xmm8,%xmm0
  subss  %xmm13,%xmm9
  addss  %xmm13,%xmm11
  movaps %xmm1,%xmm13
  subss  %xmm12,%xmm1
  addss  %xmm12,%xmm13
  movaps %xmm11,%xmm14
  addss  %xmm9,%xmm1
  subss  %xmm13,%xmm11
  addss  %xmm13,%xmm14
  mulss  %xmm2,%xmm1
  movss  %xmm11,0x7c(%rax)
  movaps %xmm9,%xmm11
  movss  %xmm14,-0x4(%rax)
  subss  %xmm1,%xmm9
  addss  %xmm1,%xmm11
  movaps %xmm6,%xmm1
  addss  %xmm7,%xmm1
  addss  %xmm8,%xmm7
  movaps %xmm6,%xmm8
  movss  %xmm9,0xbc(%rax)
  movaps %xmm0,%xmm9
  subss  %xmm1,%xmm9
  mulss  %xmm4,%xmm0
  movss  %xmm11,0x3c(%rax)
  mulss  %xmm2,%xmm7
  mulss  %xmm5,%xmm1
  mulss  %xmm3,%xmm9
  subss  %xmm7,%xmm6
  addss  %xmm7,%xmm8
  addss  %xmm9,%xmm0
  addss  %xmm9,%xmm1
  movaps %xmm0,%xmm7
  addss  %xmm6,%xmm7
  subss  %xmm0,%xmm6
  movaps %xmm1,%xmm0
  addss  %xmm8,%xmm0
  subss  %xmm1,%xmm8
  movss  %xmm7,0x9c(%rax)
  movss  %xmm6,0x5c(%rax)
  movss  %xmm0,0x1c(%rax)
  movss  %xmm8,0xdc(%rax)
  cmp    %rdx,%rax
  jne    L18
  ret
```

tool_calls: name: disassemble_data
arguments: label: D4
type_infered: f32
name: disassemble_data
arguments: label: D3
type_infered: f32
name: disassemble_data
arguments: label: D1
type_infered: f32
name: disassemble_data
arguments: label: D11
type_infered: f32

tool: D4: 0.707106781

tool: D3: 0.382683433

tool: D1: 0.5411961

tool: D11: 1.306562965

assistant: ```c
void jpeg12_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++;
  }
}
```