user: What would the C source look like for the assembly code provided here?

```asm
<helper_double_27_recursive>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %esi,-0x5c(%rbp)
  cmpl   $0x9,-0x5c(%rbp)
  jne    L61
  movl   $0x0,-0x48(%rbp)
  jmp    L487
L352:
  movl   $0x0,-0x44(%rbp)
  jmp    L201
L420:
  mov    -0x48(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x44(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x48(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x44(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x4,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x48(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x44(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x8,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x48(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x44(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0xc,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x48(%rbp),%edi
  movslq %edi,%r8
  mov    -0x44(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x10,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x48(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x44(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0x14,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x48(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x44(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0x18,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x48(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x44(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0x1c,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vpermilpd $0x0,%ymm0,%ymm8
  vpermilpd $0xf,%ymm0,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm0
  vpermilpd $0x0,%ymm1,%ymm8
  vpermilpd $0xf,%ymm1,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm1
  vpermilpd $0x0,%ymm2,%ymm8
  vpermilpd $0xf,%ymm2,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm2
  vpermilpd $0x0,%ymm3,%ymm8
  vpermilpd $0xf,%ymm3,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm3
  vpermilpd $0x0,%ymm4,%ymm8
  vpermilpd $0xf,%ymm4,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm4
  vpermilpd $0x0,%ymm5,%ymm8
  vpermilpd $0xf,%ymm5,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm5
  vpermilpd $0x0,%ymm6,%ymm8
  vpermilpd $0xf,%ymm6,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm6
  vpermilpd $0x0,%ymm7,%ymm8
  vpermilpd $0xf,%ymm7,%ymm9
  vxorpd %ymm10,%ymm10,%ymm10
  vsubpd %ymm9,%ymm10,%ymm11
  vaddsubpd %ymm11,%ymm8,%ymm7
  vperm2f128 $0x0,%ymm0,%ymm0,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm0,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm0,%ymm11
  vaddpd %ymm11,%ymm8,%ymm0
  vperm2f128 $0x0,%ymm1,%ymm1,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm1,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm1,%ymm11
  vaddpd %ymm11,%ymm8,%ymm1
  vperm2f128 $0x0,%ymm2,%ymm2,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm2,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm2,%ymm11
  vaddpd %ymm11,%ymm8,%ymm2
  vperm2f128 $0x0,%ymm3,%ymm3,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm3,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm3,%ymm11
  vaddpd %ymm11,%ymm8,%ymm3
  vperm2f128 $0x0,%ymm4,%ymm4,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm4,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm4,%ymm11
  vaddpd %ymm11,%ymm8,%ymm4
  vperm2f128 $0x0,%ymm5,%ymm5,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm5,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm5,%ymm11
  vaddpd %ymm11,%ymm8,%ymm5
  vperm2f128 $0x0,%ymm6,%ymm6,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm6,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm6,%ymm11
  vaddpd %ymm11,%ymm8,%ymm6
  vperm2f128 $0x0,%ymm7,%ymm7,%ymm8
  vxorpd %ymm9,%ymm9,%ymm9
  vsubpd %ymm7,%ymm9,%ymm10
  vperm2f128 $0x31,%ymm10,%ymm7,%ymm11
  vaddpd %ymm11,%ymm8,%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x44(%rbp)
L201:
  cmpl   $0x3,-0x44(%rbp)
  jle    L420
  addl   $0x20,-0x48(%rbp)
L487:
  cmpl   $0x1ff,-0x48(%rbp)
  jle    L352
  movl   $0x0,-0x40(%rbp)
  jmp    L452
L410:
  movl   $0x0,-0x3c(%rbp)
  jmp    L397
L24:
  mov    -0x40(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x3c(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x40(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x20,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x40(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x3c(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x40,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x40(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x3c(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x60,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x40(%rbp),%edi
  movslq %edi,%r8
  mov    -0x3c(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  sub    $0xffffffffffffff80,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x40(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x3c(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0xa0,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x40(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x3c(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0xc0,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x40(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x3c(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0xe0,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x3c(%rbp)
L397:
  cmpl   $0x1f,-0x3c(%rbp)
  jle    L24
  addl   $0x100,-0x40(%rbp)
L452:
  cmpl   $0x1ff,-0x40(%rbp)
  jle    L410
  movl   $0x0,-0x38(%rbp)
  jmp    L424
L183:
  movl   $0x0,-0x34(%rbp)
  jmp    L166
L268:
  mov    -0x38(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x34(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x38(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x34(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x100,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  addl   $0x4,-0x34(%rbp)
L166:
  cmpl   $0xff,-0x34(%rbp)
  jle    L268
  addl   $0x200,-0x38(%rbp)
L424:
  cmpl   $0x1ff,-0x38(%rbp)
  jle    L183
  jmp    L19
L61:
  cmpl   $0xc,-0x5c(%rbp)
  jne    L325
  mov    -0x58(%rbp),%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x1000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x2000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x3000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x4000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x5000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x6000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x7000,%rax
  mov    $0x9,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  movl   $0x0,-0x30(%rbp)
  jmp    L337
L265:
  movl   $0x0,-0x2c(%rbp)
  jmp    L296
L232:
  mov    -0x30(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x2c(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x30(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x2c(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x200,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x30(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x2c(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x400,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x30(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x2c(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x600,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x30(%rbp),%edi
  movslq %edi,%r8
  mov    -0x2c(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x800,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x30(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x2c(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0xa00,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x30(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x2c(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0xc00,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x30(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x2c(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0xe00,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x2c(%rbp)
L296:
  cmpl   $0x1ff,-0x2c(%rbp)
  jle    L232
  addl   $0x1000,-0x30(%rbp)
L337:
  cmpl   $0xfff,-0x30(%rbp)
  jle    L265
  jmp    L19
L325:
  cmpl   $0xf,-0x5c(%rbp)
  jne    L401
  mov    -0x58(%rbp),%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x8000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x10000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x18000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x20000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x28000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x30000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x38000,%rax
  mov    $0xc,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  movl   $0x0,-0x28(%rbp)
  jmp    L246
L66:
  movl   $0x0,-0x24(%rbp)
  jmp    L253
L472:
  mov    -0x28(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x24(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x28(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x24(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x1000,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x28(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x24(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x2000,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x28(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x24(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x3000,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x28(%rbp),%edi
  movslq %edi,%r8
  mov    -0x24(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x4000,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x28(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x24(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0x5000,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x28(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x24(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0x6000,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x28(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x24(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0x7000,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x24(%rbp)
L253:
  cmpl   $0xfff,-0x24(%rbp)
  jle    L472
  addl   $0x8000,-0x28(%rbp)
L246:
  cmpl   $0x7fff,-0x28(%rbp)
  jle    L66
  jmp    L19
L401:
  cmpl   $0x12,-0x5c(%rbp)
  jne    L245
  mov    -0x58(%rbp),%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x40000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x80000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0xc0000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x100000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x140000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x180000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x1c0000,%rax
  mov    $0xf,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  movl   $0x0,-0x20(%rbp)
  jmp    L357
L9:
  movl   $0x0,-0x1c(%rbp)
  jmp    L212
L228:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x20(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x1c(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x8000,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x20(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x1c(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x10000,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x20(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x1c(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x18000,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x20(%rbp),%edi
  movslq %edi,%r8
  mov    -0x1c(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x20000,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x20(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x1c(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0x28000,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x20(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x1c(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0x30000,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x20(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x1c(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0x38000,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x1c(%rbp)
L212:
  cmpl   $0x7fff,-0x1c(%rbp)
  jle    L228
  addl   $0x40000,-0x20(%rbp)
L357:
  cmpl   $0x3ffff,-0x20(%rbp)
  jle    L9
  jmp    L19
L245:
  cmpl   $0x15,-0x5c(%rbp)
  jne    L191
  mov    -0x58(%rbp),%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x200000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x400000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x600000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x800000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0xa00000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0xc00000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0xe00000,%rax
  mov    $0x12,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  movl   $0x0,-0x18(%rbp)
  jmp    L99
L338:
  movl   $0x0,-0x14(%rbp)
  jmp    L310
L6:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x18(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x40000,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x18(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x14(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x80000,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x18(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x14(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0xc0000,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x18(%rbp),%edi
  movslq %edi,%r8
  mov    -0x14(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x100000,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x18(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x14(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0x140000,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x18(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x14(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0x180000,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x18(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x14(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0x1c0000,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x14(%rbp)
L310:
  cmpl   $0x3ffff,-0x14(%rbp)
  jle    L6
  addl   $0x200000,-0x18(%rbp)
L99:
  cmpl   $0x1fffff,-0x18(%rbp)
  jle    L338
  jmp    L19
L191:
  cmpl   $0x18,-0x5c(%rbp)
  jne    L38
  mov    -0x58(%rbp),%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x1000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x2000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x3000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x4000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x5000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x6000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x7000000,%rax
  mov    $0x15,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  movl   $0x0,-0x10(%rbp)
  jmp    L372
L449:
  movl   $0x0,-0xc(%rbp)
  jmp    L272
L413:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0xc(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x10(%rbp),%edx
  movslq %edx,%rcx
  mov    -0xc(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x200000,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x10(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0xc(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x400000,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x10(%rbp),%esi
  movslq %esi,%rdi
  mov    -0xc(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x600000,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x10(%rbp),%edi
  movslq %edi,%r8
  mov    -0xc(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x800000,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x10(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0xc(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0xa00000,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x10(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0xc(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0xc00000,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x10(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0xc(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0xe00000,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0xc(%rbp)
L272:
  cmpl   $0x1fffff,-0xc(%rbp)
  jle    L413
  addl   $0x1000000,-0x10(%rbp)
L372:
  cmpl   $0xffffff,-0x10(%rbp)
  jle    L449
  jmp    L19
L38:
  cmpl   $0x1b,-0x5c(%rbp)
  jne    L19
  mov    -0x58(%rbp),%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x8000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x10000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x18000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x20000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x28000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x30000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  mov    -0x58(%rbp),%rax
  add    $0x38000000,%rax
  mov    $0x18,%esi
  mov    %rax,%rdi
  call   <helper_double_27_recursive>
  movl   $0x0,-0x8(%rbp)
  jmp    L195
L203:
  movl   $0x0,-0x4(%rbp)
  jmp    L31
L435:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x4(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    -0x8(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x4(%rbp),%edx
  movslq %edx,%rdx
  add    %rcx,%rdx
  add    $0x1000000,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  mov    -0x8(%rbp),%ecx
  movslq %ecx,%rsi
  mov    -0x4(%rbp),%ecx
  movslq %ecx,%rcx
  add    %rsi,%rcx
  add    $0x2000000,%rcx
  lea    0x0(,%rcx,8),%rsi
  mov    -0x58(%rbp),%rcx
  add    %rsi,%rcx
  mov    -0x8(%rbp),%esi
  movslq %esi,%rdi
  mov    -0x4(%rbp),%esi
  movslq %esi,%rsi
  add    %rdi,%rsi
  add    $0x3000000,%rsi
  lea    0x0(,%rsi,8),%rdi
  mov    -0x58(%rbp),%rsi
  add    %rdi,%rsi
  mov    -0x8(%rbp),%edi
  movslq %edi,%r8
  mov    -0x4(%rbp),%edi
  movslq %edi,%rdi
  add    %r8,%rdi
  add    $0x4000000,%rdi
  lea    0x0(,%rdi,8),%r8
  mov    -0x58(%rbp),%rdi
  add    %r8,%rdi
  mov    -0x8(%rbp),%r8d
  movslq %r8d,%r9
  mov    -0x4(%rbp),%r8d
  movslq %r8d,%r8
  add    %r9,%r8
  add    $0x5000000,%r8
  lea    0x0(,%r8,8),%r9
  mov    -0x58(%rbp),%r8
  add    %r9,%r8
  mov    -0x8(%rbp),%r9d
  movslq %r9d,%r10
  mov    -0x4(%rbp),%r9d
  movslq %r9d,%r9
  add    %r10,%r9
  add    $0x6000000,%r9
  lea    0x0(,%r9,8),%r10
  mov    -0x58(%rbp),%r9
  add    %r10,%r9
  mov    -0x8(%rbp),%r10d
  movslq %r10d,%r11
  mov    -0x4(%rbp),%r10d
  movslq %r10d,%r10
  add    %r11,%r10
  add    $0x7000000,%r10
  lea    0x0(,%r10,8),%r11
  mov    -0x58(%rbp),%r10
  add    %r11,%r10
  vmovupd (%rax),%ymm0
  vmovupd (%rdx),%ymm1
  vmovupd (%rcx),%ymm2
  vmovupd (%rsi),%ymm3
  vmovupd (%rdi),%ymm4
  vmovupd (%r8),%ymm5
  vmovupd (%r9),%ymm6
  vmovupd (%r10),%ymm7
  vaddpd %ymm1,%ymm0,%ymm8
  vsubpd %ymm1,%ymm0,%ymm9
  vaddpd %ymm3,%ymm2,%ymm10
  vsubpd %ymm3,%ymm2,%ymm11
  vaddpd %ymm5,%ymm4,%ymm12
  vsubpd %ymm5,%ymm4,%ymm13
  vaddpd %ymm7,%ymm6,%ymm14
  vsubpd %ymm7,%ymm6,%ymm15
  vaddpd %ymm10,%ymm8,%ymm0
  vsubpd %ymm10,%ymm8,%ymm2
  vaddpd %ymm11,%ymm9,%ymm1
  vsubpd %ymm11,%ymm9,%ymm3
  vaddpd %ymm14,%ymm12,%ymm4
  vsubpd %ymm14,%ymm12,%ymm6
  vaddpd %ymm15,%ymm13,%ymm5
  vsubpd %ymm15,%ymm13,%ymm7
  vaddpd %ymm4,%ymm0,%ymm8
  vsubpd %ymm4,%ymm0,%ymm12
  vaddpd %ymm5,%ymm1,%ymm9
  vsubpd %ymm5,%ymm1,%ymm13
  vaddpd %ymm6,%ymm2,%ymm10
  vsubpd %ymm6,%ymm2,%ymm14
  vaddpd %ymm7,%ymm3,%ymm11
  vsubpd %ymm7,%ymm3,%ymm15
  vmovupd %ymm8,(%rax)
  vmovupd %ymm9,(%rdx)
  vmovupd %ymm10,(%rcx)
  vmovupd %ymm11,(%rsi)
  vmovupd %ymm12,(%rdi)
  vmovupd %ymm13,(%r8)
  vmovupd %ymm14,(%r9)
  vmovupd %ymm15,(%r10)
  addl   $0x4,-0x4(%rbp)
L31:
  cmpl   $0xffffff,-0x4(%rbp)
  jle    L435
  addl   $0x8000000,-0x8(%rbp)
L195:
  cmpl   $0x7ffffff,-0x8(%rbp)
  jle    L203
  nop
L19:
  leave
  ret
```

assistant: ```c
void helper_double_27_recursive(double *buf, int depth) {
  if (depth == 9) {
    for (int j = 0; j < 512; j += 32) {
      for (int k = 0; k < 4; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vpermilpd $0, %%ymm0, %%ymm8\n"
                         "vpermilpd $15, %%ymm0, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n"
                         "vpermilpd $0, %%ymm1, %%ymm8\n"
                         "vpermilpd $15, %%ymm1, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n"
                         "vpermilpd $0, %%ymm2, %%ymm8\n"
                         "vpermilpd $15, %%ymm2, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n"
                         "vpermilpd $0, %%ymm3, %%ymm8\n"
                         "vpermilpd $15, %%ymm3, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n"
                         "vpermilpd $0, %%ymm4, %%ymm8\n"
                         "vpermilpd $15, %%ymm4, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n"
                         "vpermilpd $0, %%ymm5, %%ymm8\n"
                         "vpermilpd $15, %%ymm5, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n"
                         "vpermilpd $0, %%ymm6, %%ymm8\n"
                         "vpermilpd $15, %%ymm6, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n"
                         "vpermilpd $0, %%ymm7, %%ymm8\n"
                         "vpermilpd $15, %%ymm7, %%ymm9\n"
                         "vxorpd %%ymm10, %%ymm10, %%ymm10\n"
                         "vsubpd %%ymm9, %%ymm10, %%ymm11\n"
                         "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n"
                         "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm0, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm0\n"
                         "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm1, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm1\n"
                         "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm2, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm2\n"
                         "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm3, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm3\n"
                         "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm4, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm4\n"
                         "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm5\n"
                         "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm6, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm6\n"
                         "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n"
                         "vxorpd %%ymm9, %%ymm9, %%ymm9\n"
                         "vsubpd %%ymm7, %%ymm9, %%ymm10\n"
                         "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n"
                         "vaddpd %%ymm11, %%ymm8, %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    for (int j = 0; j < 512; j += 256) {
      for (int k = 0; k < 32; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    for (int j = 0; j < 512; j += 512) {
      for (int k = 0; k < 256; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 256)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
  if (depth == 12) {
    helper_double_27_recursive(buf + 0, 9);
    helper_double_27_recursive(buf + 512, 9);
    helper_double_27_recursive(buf + 1024, 9);
    helper_double_27_recursive(buf + 1536, 9);
    helper_double_27_recursive(buf + 2048, 9);
    helper_double_27_recursive(buf + 2560, 9);
    helper_double_27_recursive(buf + 3072, 9);
    helper_double_27_recursive(buf + 3584, 9);
    for (int j = 0; j < 4096; j += 4096) {
      for (int k = 0; k < 512; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
  if (depth == 15) {
    helper_double_27_recursive(buf + 0, 12);
    helper_double_27_recursive(buf + 4096, 12);
    helper_double_27_recursive(buf + 8192, 12);
    helper_double_27_recursive(buf + 12288, 12);
    helper_double_27_recursive(buf + 16384, 12);
    helper_double_27_recursive(buf + 20480, 12);
    helper_double_27_recursive(buf + 24576, 12);
    helper_double_27_recursive(buf + 28672, 12);
    for (int j = 0; j < 32768; j += 32768) {
      for (int k = 0; k < 4096; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
  if (depth == 18) {
    helper_double_27_recursive(buf + 0, 15);
    helper_double_27_recursive(buf + 32768, 15);
    helper_double_27_recursive(buf + 65536, 15);
    helper_double_27_recursive(buf + 98304, 15);
    helper_double_27_recursive(buf + 131072, 15);
    helper_double_27_recursive(buf + 163840, 15);
    helper_double_27_recursive(buf + 196608, 15);
    helper_double_27_recursive(buf + 229376, 15);
    for (int j = 0; j < 262144; j += 262144) {
      for (int k = 0; k < 32768; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
  if (depth == 21) {
    helper_double_27_recursive(buf + 0, 18);
    helper_double_27_recursive(buf + 262144, 18);
    helper_double_27_recursive(buf + 524288, 18);
    helper_double_27_recursive(buf + 786432, 18);
    helper_double_27_recursive(buf + 1048576, 18);
    helper_double_27_recursive(buf + 1310720, 18);
    helper_double_27_recursive(buf + 1572864, 18);
    helper_double_27_recursive(buf + 1835008, 18);
    for (int j = 0; j < 2097152; j += 2097152) {
      for (int k = 0; k < 262144; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
  if (depth == 24) {
    helper_double_27_recursive(buf + 0, 21);
    helper_double_27_recursive(buf + 2097152, 21);
    helper_double_27_recursive(buf + 4194304, 21);
    helper_double_27_recursive(buf + 6291456, 21);
    helper_double_27_recursive(buf + 8388608, 21);
    helper_double_27_recursive(buf + 10485760, 21);
    helper_double_27_recursive(buf + 12582912, 21);
    helper_double_27_recursive(buf + 14680064, 21);
    for (int j = 0; j < 16777216; j += 16777216) {
      for (int k = 0; k < 2097152; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
  if (depth == 27) {
    helper_double_27_recursive(buf + 0, 24);
    helper_double_27_recursive(buf + 16777216, 24);
    helper_double_27_recursive(buf + 33554432, 24);
    helper_double_27_recursive(buf + 50331648, 24);
    helper_double_27_recursive(buf + 67108864, 24);
    helper_double_27_recursive(buf + 83886080, 24);
    helper_double_27_recursive(buf + 100663296, 24);
    helper_double_27_recursive(buf + 117440512, 24);
    for (int j = 0; j < 134217728; j += 134217728) {
      for (int k = 0; k < 16777216; k += 4) {
        __asm__ volatile("vmovupd (%0), %%ymm0\n"
                         "vmovupd (%1), %%ymm1\n"
                         "vmovupd (%2), %%ymm2\n"
                         "vmovupd (%3), %%ymm3\n"
                         "vmovupd (%4), %%ymm4\n"
                         "vmovupd (%5), %%ymm5\n"
                         "vmovupd (%6), %%ymm6\n"
                         "vmovupd (%7), %%ymm7\n"
                         "vaddpd %%ymm1, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm1, %%ymm0, %%ymm9\n"
                         "vaddpd %%ymm3, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm3, %%ymm2, %%ymm11\n"
                         "vaddpd %%ymm5, %%ymm4, %%ymm12\n"
                         "vsubpd %%ymm5, %%ymm4, %%ymm13\n"
                         "vaddpd %%ymm7, %%ymm6, %%ymm14\n"
                         "vsubpd %%ymm7, %%ymm6, %%ymm15\n"
                         "vaddpd %%ymm10, %%ymm8, %%ymm0\n"
                         "vsubpd %%ymm10, %%ymm8, %%ymm2\n"
                         "vaddpd %%ymm11, %%ymm9, %%ymm1\n"
                         "vsubpd %%ymm11, %%ymm9, %%ymm3\n"
                         "vaddpd %%ymm14, %%ymm12, %%ymm4\n"
                         "vsubpd %%ymm14, %%ymm12, %%ymm6\n"
                         "vaddpd %%ymm15, %%ymm13, %%ymm5\n"
                         "vsubpd %%ymm15, %%ymm13, %%ymm7\n"
                         "vaddpd %%ymm4, %%ymm0, %%ymm8\n"
                         "vsubpd %%ymm4, %%ymm0, %%ymm12\n"
                         "vaddpd %%ymm5, %%ymm1, %%ymm9\n"
                         "vsubpd %%ymm5, %%ymm1, %%ymm13\n"
                         "vaddpd %%ymm6, %%ymm2, %%ymm10\n"
                         "vsubpd %%ymm6, %%ymm2, %%ymm14\n"
                         "vaddpd %%ymm7, %%ymm3, %%ymm11\n"
                         "vsubpd %%ymm7, %%ymm3, %%ymm15\n"
                         "vmovupd %%ymm8, (%0)\n"
                         "vmovupd %%ymm9, (%1)\n"
                         "vmovupd %%ymm10, (%2)\n"
                         "vmovupd %%ymm11, (%3)\n"
                         "vmovupd %%ymm12, (%4)\n"
                         "vmovupd %%ymm13, (%5)\n"
                         "vmovupd %%ymm14, (%6)\n"
                         "vmovupd %%ymm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648), "r"(buf + j + k + 67108864), "r"(buf + j + k + 83886080), "r"(buf + j + k + 100663296), "r"(buf + j + k + 117440512)
                         : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory");
      }
    }
    return;
  }
}
```