user: What is the c source code of the assembly code below?

```asm
<helper_float_5>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L26
L12:
  movl   $0x0,-0x4(%rbp)
  jmp    L39
L34:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x4(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    -0x8(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x4(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x8,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x18(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x8(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x4(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x10,%rcx
  lea    0x0(,%rcx,4),%rsi
  mov    -0x18(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x8(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x4(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x18,%rsi
  lea    0x0(,%rsi,4),%rdi
  mov    -0x18(%rbp),%rsi
  add    %rdi,%rsi
  vmovups (%rax),%ymm0
  vmovups (%rdx),%ymm1
  vmovups (%rcx),%ymm2
  vmovups (%rsi),%ymm3
  vpermilps $0xa0,%ymm0,%ymm8
  vpermilps $0xf5,%ymm0,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vaddsubps %ymm11,%ymm8,%ymm0
  vpermilps $0xa0,%ymm1,%ymm8
  vpermilps $0xf5,%ymm1,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vaddsubps %ymm11,%ymm8,%ymm1
  vpermilps $0xa0,%ymm2,%ymm8
  vpermilps $0xf5,%ymm2,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vaddsubps %ymm11,%ymm8,%ymm2
  vpermilps $0xa0,%ymm3,%ymm8
  vpermilps $0xf5,%ymm3,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vaddsubps %ymm11,%ymm8,%ymm3
  vpermilps $0x44,%ymm0,%ymm8
  vpermilps $0xee,%ymm0,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vblendps $0xcc,%ymm11,%ymm9,%ymm12
  vaddps %ymm8,%ymm12,%ymm0
  vpermilps $0x44,%ymm1,%ymm8
  vpermilps $0xee,%ymm1,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vblendps $0xcc,%ymm11,%ymm9,%ymm12
  vaddps %ymm8,%ymm12,%ymm1
  vpermilps $0x44,%ymm2,%ymm8
  vpermilps $0xee,%ymm2,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vblendps $0xcc,%ymm11,%ymm9,%ymm12
  vaddps %ymm8,%ymm12,%ymm2
  vpermilps $0x44,%ymm3,%ymm8
  vpermilps $0xee,%ymm3,%ymm9
  vxorps %ymm10,%ymm10,%ymm10
  vsubps %ymm9,%ymm10,%ymm11
  vblendps $0xcc,%ymm11,%ymm9,%ymm12
  vaddps %ymm8,%ymm12,%ymm3
  vxorps %ymm8,%ymm8,%ymm8
  vsubps %ymm0,%ymm8,%ymm9
  vperm2f128 $0x0,%ymm0,%ymm0,%ymm10
  vperm2f128 $0x31,%ymm9,%ymm0,%ymm11
  vaddps %ymm10,%ymm11,%ymm0
  vxorps %ymm8,%ymm8,%ymm8
  vsubps %ymm1,%ymm8,%ymm9
  vperm2f128 $0x0,%ymm1,%ymm1,%ymm10
  vperm2f128 $0x31,%ymm9,%ymm1,%ymm11
  vaddps %ymm10,%ymm11,%ymm1
  vxorps %ymm8,%ymm8,%ymm8
  vsubps %ymm2,%ymm8,%ymm9
  vperm2f128 $0x0,%ymm2,%ymm2,%ymm10
  vperm2f128 $0x31,%ymm9,%ymm2,%ymm11
  vaddps %ymm10,%ymm11,%ymm2
  vxorps %ymm8,%ymm8,%ymm8
  vsubps %ymm3,%ymm8,%ymm9
  vperm2f128 $0x0,%ymm3,%ymm3,%ymm10
  vperm2f128 $0x31,%ymm9,%ymm3,%ymm11
  vaddps %ymm10,%ymm11,%ymm3
  vaddps %ymm1,%ymm0,%ymm8
  vsubps %ymm1,%ymm0,%ymm9
  vaddps %ymm3,%ymm2,%ymm10
  vsubps %ymm3,%ymm2,%ymm11
  vaddps %ymm10,%ymm8,%ymm0
  vsubps %ymm10,%ymm8,%ymm2
  vaddps %ymm11,%ymm9,%ymm1
  vsubps %ymm11,%ymm9,%ymm3
  vmovups %ymm0,(%rax)
  vmovups %ymm1,(%rdx)
  vmovups %ymm2,(%rcx)
  vmovups %ymm3,(%rsi)
  addl   $0x8,-0x4(%rbp)
L39:
  cmpl   $0x7,-0x4(%rbp)
  jle    L34
  addl   $0x20,-0x8(%rbp)
L26:
  cmpl   $0x1f,-0x8(%rbp)
  jle    L12
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void helper_float_5(float *buf) {
  for (int j = 0; j < 32; j += 32) {
    for (int k = 0; k < 8; k += 8) {
      __asm__ volatile("vmovups (%0), %%ymm0\n"
                       "vmovups (%1), %%ymm1\n"
                       "vmovups (%2), %%ymm2\n"
                       "vmovups (%3), %%ymm3\n"
                       "vpermilps $160, %%ymm0, %%ymm8\n"
                       "vpermilps $245, %%ymm0, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vaddsubps %%ymm11, %%ymm8, %%ymm0\n"
                       "vpermilps $160, %%ymm1, %%ymm8\n"
                       "vpermilps $245, %%ymm1, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vaddsubps %%ymm11, %%ymm8, %%ymm1\n"
                       "vpermilps $160, %%ymm2, %%ymm8\n"
                       "vpermilps $245, %%ymm2, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vaddsubps %%ymm11, %%ymm8, %%ymm2\n"
                       "vpermilps $160, %%ymm3, %%ymm8\n"
                       "vpermilps $245, %%ymm3, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vaddsubps %%ymm11, %%ymm8, %%ymm3\n"
                       "vpermilps $68, %%ymm0, %%ymm8\n"
                       "vpermilps $238, %%ymm0, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n"
                       "vaddps %%ymm8, %%ymm12, %%ymm0\n"
                       "vpermilps $68, %%ymm1, %%ymm8\n"
                       "vpermilps $238, %%ymm1, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n"
                       "vaddps %%ymm8, %%ymm12, %%ymm1\n"
                       "vpermilps $68, %%ymm2, %%ymm8\n"
                       "vpermilps $238, %%ymm2, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n"
                       "vaddps %%ymm8, %%ymm12, %%ymm2\n"
                       "vpermilps $68, %%ymm3, %%ymm8\n"
                       "vpermilps $238, %%ymm3, %%ymm9\n"
                       "vxorps %%ymm10, %%ymm10, %%ymm10\n"
                       "vsubps %%ymm9, %%ymm10, %%ymm11\n"
                       "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n"
                       "vaddps %%ymm8, %%ymm12, %%ymm3\n"
                       "vxorps %%ymm8, %%ymm8, %%ymm8\n"
                       "vsubps %%ymm0, %%ymm8, %%ymm9\n"
                       "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n"
                       "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n"
                       "vaddps %%ymm10, %%ymm11, %%ymm0\n"
                       "vxorps %%ymm8, %%ymm8, %%ymm8\n"
                       "vsubps %%ymm1, %%ymm8, %%ymm9\n"
                       "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n"
                       "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n"
                       "vaddps %%ymm10, %%ymm11, %%ymm1\n"
                       "vxorps %%ymm8, %%ymm8, %%ymm8\n"
                       "vsubps %%ymm2, %%ymm8, %%ymm9\n"
                       "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n"
                       "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n"
                       "vaddps %%ymm10, %%ymm11, %%ymm2\n"
                       "vxorps %%ymm8, %%ymm8, %%ymm8\n"
                       "vsubps %%ymm3, %%ymm8, %%ymm9\n"
                       "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n"
                       "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n"
                       "vaddps %%ymm10, %%ymm11, %%ymm3\n"
                       "vaddps %%ymm1, %%ymm0, %%ymm8\n"
                       "vsubps %%ymm1, %%ymm0, %%ymm9\n"
                       "vaddps %%ymm3, %%ymm2, %%ymm10\n"
                       "vsubps %%ymm3, %%ymm2, %%ymm11\n"
                       "vaddps %%ymm10, %%ymm8, %%ymm0\n"
                       "vsubps %%ymm10, %%ymm8, %%ymm2\n"
                       "vaddps %%ymm11, %%ymm9, %%ymm1\n"
                       "vsubps %%ymm11, %%ymm9, %%ymm3\n"
                       "vmovups %%ymm0, (%0)\n"
                       "vmovups %%ymm1, (%1)\n"
                       "vmovups %%ymm2, (%2)\n"
                       "vmovups %%ymm3, (%3)\n" ::"r"(buf + j + k + 0),
                       "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24)
                       : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
    }
  }
}
```