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

```asm
<kern_r4_u4_f>:
  endbr64
  push   %r13
  mov    %rsi,%r10
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rcx,%rbx
  sub    $0x100,%rsp
  mov    0x148(%rsp),%r13
  mov    0x128(%rsp),%rsi
  mov    0x130(%rsp),%rcx
  mov    0x138(%rsp),%r12
  test   %r13,%r13
  jle    L19
  mov    %rdx,%r11
  cmp    $0x1,%r13
  je     L23
  lea    -0x1(%r13),%rdx
  shl    $0x6,%r13
  xor    %eax,%eax
  sub    $0x40,%r13
  nopl   0x0(%rax,%rax,1)
L32:
  movupd (%r12,%rax,1),%xmm4
  movupd 0x10(%r9,%rax,4),%xmm7
  lea    (%rax,%rax,2),%rbp
  movupd (%r12,%rax,1),%xmm9
  movupd 0x20(%r9,%rax,4),%xmm6
  unpckhpd %xmm4,%xmm4
  movupd (%r9,%rax,4),%xmm8
  movupd 0x30(%r9,%rax,4),%xmm5
  movapd %xmm4,%xmm14
  unpcklpd %xmm9,%xmm9
  movapd %xmm4,%xmm12
  movupd (%r12,%rax,2),%xmm2
  mulpd  %xmm7,%xmm14
  movapd %xmm9,%xmm11
  movapd %xmm4,%xmm13
  movupd (%r12,%rax,2),%xmm3
  mulpd  %xmm6,%xmm12
  movapd %xmm4,%xmm15
  unpcklpd %xmm2,%xmm2
  movupd (%r12,%rbp,1),%xmm1
  mulpd  %xmm6,%xmm11
  shufpd $0x1,%xmm6,%xmm6
  unpckhpd %xmm3,%xmm3
  mulpd  %xmm5,%xmm13
  movapd %xmm1,%xmm0
  mulpd  %xmm8,%xmm15
  unpcklpd %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  movaps %xmm14,0x88(%rsp)
  movapd %xmm9,%xmm14
  movaps %xmm12,0x98(%rsp)
  mulpd  %xmm7,%xmm14
  movapd %xmm9,%xmm12
  shufpd $0x1,%xmm7,%xmm7
  mulpd  %xmm8,%xmm12
  shufpd $0x1,%xmm8,%xmm8
  movapd %xmm8,%xmm10
  movaps %xmm13,0xa8(%rsp)
  mulpd  %xmm9,%xmm10
  movapd %xmm7,%xmm13
  mulpd  %xmm4,%xmm7
  mulpd  %xmm9,%xmm13
  movaps %xmm14,0x18(%rsp)
  mulpd  %xmm4,%xmm8
  movapd %xmm11,%xmm14
  movapd %xmm9,%xmm11
  mulpd  %xmm5,%xmm11
  movaps %xmm12,0x28(%rsp)
  shufpd $0x1,%xmm5,%xmm5
  movaps %xmm7,-0x8(%rsp)
  movupd (%rsi,%rax,4),%xmm7
  movaps %xmm13,0x58(%rsp)
  movapd %xmm2,%xmm13
  movaps %xmm8,0x8(%rsp)
  movapd %xmm11,%xmm12
  movapd %xmm6,%xmm11
  mulpd  %xmm9,%xmm11
  mulpd  %xmm4,%xmm6
  mulpd  %xmm5,%xmm9
  mulpd  %xmm5,%xmm4
  movupd 0x20(%rsi,%rax,4),%xmm5
  movaps %xmm11,0x68(%rsp)
  mulpd  %xmm5,%xmm13
  movapd %xmm2,%xmm11
  shufpd $0x1,%xmm5,%xmm5
  mulpd  %xmm7,%xmm11
  shufpd $0x1,%xmm7,%xmm7
  movaps %xmm6,-0x18(%rsp)
  movupd 0x10(%rsi,%rax,4),%xmm6
  mulpd  %xmm3,%xmm7
  movaps %xmm9,0x78(%rsp)
  movapd %xmm2,%xmm9
  movaps %xmm4,-0x28(%rsp)
  movupd 0x30(%rsi,%rax,4),%xmm4
  mulpd  %xmm6,%xmm9
  shufpd $0x1,%xmm6,%xmm6
  mulpd  %xmm3,%xmm6
  mulpd  %xmm3,%xmm5
  movapd %xmm13,%xmm8
  mulpd  %xmm4,%xmm2
  shufpd $0x1,%xmm4,%xmm4
  mulpd  %xmm3,%xmm4
  movapd %xmm7,%xmm3
  addpd  %xmm11,%xmm3
  subpd  %xmm7,%xmm11
  subpd  %xmm5,%xmm8
  movsd  %xmm3,%xmm11
  movapd %xmm6,%xmm3
  addpd  %xmm9,%xmm3
  subpd  %xmm6,%xmm9
  movaps %xmm11,0x38(%rsp)
  movapd %xmm9,%xmm7
  movapd %xmm0,%xmm9
  movsd  %xmm3,%xmm7
  movapd %xmm5,%xmm3
  movapd %xmm8,%xmm5
  addpd  %xmm13,%xmm3
  movaps %xmm7,-0x58(%rsp)
  movapd %xmm0,%xmm8
  movsd  %xmm3,%xmm5
  movapd %xmm4,%xmm3
  movaps %xmm5,-0x68(%rsp)
  movupd (%rcx,%rax,4),%xmm5
  addpd  %xmm2,%xmm3
  subpd  %xmm4,%xmm2
  movupd 0x10(%rcx,%rax,4),%xmm4
  movapd %xmm5,%xmm7
  mulpd  %xmm1,%xmm7
  movsd  %xmm3,%xmm2
  movupd 0x20(%rcx,%rax,4),%xmm3
  movapd %xmm4,%xmm6
  mulpd  %xmm1,%xmm6
  movaps %xmm2,-0x78(%rsp)
  movupd 0x30(%rcx,%rax,4),%xmm2
  movapd %xmm3,%xmm13
  mulpd  %xmm1,%xmm13
  movapd %xmm2,%xmm11
  mulpd  %xmm1,%xmm11
  movaps %xmm7,-0x48(%rsp)
  movapd %xmm0,%xmm7
  mulpd  %xmm4,%xmm7
  movaps %xmm6,0xb8(%rsp)
  movapd %xmm0,%xmm6
  shufpd $0x1,%xmm4,%xmm4
  mulpd  %xmm5,%xmm6
  shufpd $0x1,%xmm5,%xmm5
  movaps %xmm13,0xc8(%rsp)
  mulpd  %xmm5,%xmm9
  movapd %xmm0,%xmm13
  movaps %xmm11,0xd8(%rsp)
  mulpd  %xmm3,%xmm13
  shufpd $0x1,%xmm3,%xmm3
  movapd %xmm0,%xmm11
  movaps %xmm3,0x48(%rsp)
  mulpd  %xmm4,%xmm8
  movaps %xmm7,-0x38(%rsp)
  mulpd  %xmm2,%xmm11
  movapd %xmm0,%xmm7
  shufpd $0x1,%xmm2,%xmm2
  mulpd  %xmm3,%xmm7
  movapd %xmm10,%xmm3
  addpd  %xmm15,%xmm10
  subpd  %xmm15,%xmm3
  movapd 0x58(%rsp),%xmm15
  mulpd  %xmm2,%xmm0
  mulpd  %xmm1,%xmm5
  mulpd  %xmm1,%xmm4
  movsd  %xmm3,%xmm10
  movapd %xmm9,%xmm3
  subpd  -0x48(%rsp),%xmm3
  addpd  -0x48(%rsp),%xmm9
  movsd  %xmm3,%xmm9
  movapd %xmm8,%xmm3
  subpd  %xmm9,%xmm10
  movapd 0x88(%rsp),%xmm9
  movaps %xmm10,0xe8(%rsp)
  movapd %xmm15,%xmm10
  addpd  %xmm9,%xmm15
  subpd  %xmm9,%xmm10
  movapd %xmm15,%xmm9
  movapd 0xb8(%rsp),%xmm15
  movsd  %xmm10,%xmm9
  movapd 0x68(%rsp),%xmm10
  subpd  %xmm15,%xmm3
  addpd  %xmm15,%xmm8
  movapd 0xc8(%rsp),%xmm15
  movsd  %xmm3,%xmm8
  movapd %xmm7,%xmm3
  addpd  %xmm15,%xmm7
  subpd  %xmm8,%xmm9
  subpd  %xmm15,%xmm3
  movapd 0x98(%rsp),%xmm8
  movapd 0x78(%rsp),%xmm15
  movaps %xmm9,0x58(%rsp)
  movapd %xmm10,%xmm9
  addpd  %xmm8,%xmm10
  subpd  %xmm8,%xmm9
  movapd %xmm10,%xmm8
  movapd 0x8(%rsp),%xmm10
  movsd  %xmm9,%xmm8
  movapd %xmm3,%xmm9
  movapd %xmm8,%xmm3
  shufpd $0x2,%xmm7,%xmm9
  movapd 0xa8(%rsp),%xmm8
  subpd  %xmm9,%xmm3
  movapd %xmm15,%xmm9
  addpd  %xmm8,%xmm15
  subpd  %xmm8,%xmm9
  movapd %xmm3,%xmm7
  movapd 0x48(%rsp),%xmm3
  movapd %xmm15,%xmm8
  movapd 0xd8(%rsp),%xmm15
  mulpd  %xmm1,%xmm3
  movsd  %xmm9,%xmm8
  movapd %xmm0,%xmm9
  subpd  %xmm15,%xmm9
  addpd  %xmm15,%xmm0
  movapd %xmm8,%xmm15
  movapd %xmm2,%xmm8
  movapd 0x18(%rsp),%xmm2
  mulpd  %xmm1,%xmm8
  movapd %xmm10,%xmm1
  movsd  %xmm9,%xmm0
  subpd  %xmm0,%xmm15
  movapd 0x28(%rsp),%xmm0
  addpd  %xmm0,%xmm1
  subpd  %xmm10,%xmm0
  movsd  %xmm1,%xmm0
  movapd %xmm6,%xmm1
  subpd  %xmm5,%xmm6
  addpd  %xmm5,%xmm1
  movapd -0x28(%rsp),%xmm5
  movsd  %xmm1,%xmm6
  movapd -0x8(%rsp),%xmm1
  addpd  %xmm6,%xmm0
  movapd -0x38(%rsp),%xmm6
  movaps %xmm0,-0x48(%rsp)
  movapd %xmm1,%xmm0
  addpd  %xmm2,%xmm0
  subpd  %xmm1,%xmm2
  movapd %xmm6,%xmm1
  subpd  %xmm4,%xmm1
  movsd  %xmm0,%xmm2
  movapd %xmm6,%xmm0
  movapd -0x18(%rsp),%xmm6
  addpd  %xmm4,%xmm0
  movsd  %xmm0,%xmm1
  movapd %xmm6,%xmm0
  addpd  %xmm1,%xmm2
  movapd %xmm14,%xmm1
  addpd  %xmm14,%xmm0
  subpd  %xmm6,%xmm1
  movsd  %xmm0,%xmm1
  movapd %xmm13,%xmm0
  subpd  %xmm3,%xmm13
  addpd  %xmm3,%xmm0
  movapd %xmm5,%xmm3
  addpd  %xmm12,%xmm3
  subpd  %xmm5,%xmm12
  movapd %xmm13,%xmm4
  movupd (%r8,%rax,4),%xmm13
  movsd  %xmm0,%xmm4
  movapd %xmm12,%xmm0
  addpd  %xmm4,%xmm1
  movapd %xmm11,%xmm4
  movsd  %xmm3,%xmm0
  movapd %xmm11,%xmm3
  addpd  %xmm8,%xmm4
  subpd  %xmm8,%xmm3
  movsd  %xmm4,%xmm3
  movapd 0x38(%rsp),%xmm4
  addpd  %xmm3,%xmm0
  subpd  %xmm4,%xmm13
  movapd %xmm13,%xmm10
  movupd 0x10(%r8,%rax,4),%xmm13
  subpd  -0x58(%rsp),%xmm13
  movapd 0xe8(%rsp),%xmm6
  movupd 0x20(%r8,%rax,4),%xmm8
  subpd  -0x68(%rsp),%xmm8
  movapd 0x58(%rsp),%xmm5
  movapd %xmm13,%xmm9
  movupd 0x30(%r8,%rax,4),%xmm13
  movapd %xmm6,%xmm14
  subpd  -0x78(%rsp),%xmm13
  addpd  %xmm10,%xmm14
  subpd  %xmm6,%xmm10
  movupd (%r8,%rax,4),%xmm6
  movapd %xmm8,%xmm12
  subpd  %xmm7,%xmm8
  movapd %xmm13,%xmm3
  addpd  %xmm7,%xmm12
  addpd  %xmm4,%xmm6
  movupd 0x20(%r8,%rax,4),%xmm4
  movapd %xmm3,%xmm11
  movapd %xmm3,%xmm7
  movapd %xmm5,%xmm13
  movupd 0x30(%r8,%rax,4),%xmm3
  addpd  %xmm15,%xmm11
  subpd  %xmm15,%xmm7
  movapd -0x48(%rsp),%xmm15
  addpd  %xmm9,%xmm13
  subpd  %xmm5,%xmm9
  movupd 0x10(%r8,%rax,4),%xmm5
  addpd  %xmm6,%xmm15
  addpd  -0x58(%rsp),%xmm5
  addpd  -0x68(%rsp),%xmm4
  addpd  -0x78(%rsp),%xmm3
  subpd  -0x48(%rsp),%xmm6
  movups %xmm15,(%rdi,%rax,1)
  movapd %xmm5,%xmm15
  subpd  %xmm2,%xmm5
  addpd  %xmm2,%xmm15
  movapd %xmm10,%xmm2
  movsd  %xmm14,%xmm2
  movsd  %xmm10,%xmm14
  movups %xmm6,(%r11,%rax,1)
  movups %xmm2,(%r10,%rax,1)
  movapd %xmm9,%xmm2
  movups %xmm15,0x10(%rdi,%rax,1)
  movapd %xmm4,%xmm15
  movsd  %xmm13,%xmm2
  subpd  %xmm1,%xmm4
  addpd  %xmm1,%xmm15
  movapd %xmm8,%xmm1
  movups %xmm2,0x10(%r10,%rax,1)
  movapd %xmm7,%xmm2
  movsd  %xmm12,%xmm1
  movsd  %xmm11,%xmm2
  movsd  %xmm9,%xmm13
  movups %xmm5,0x10(%r11,%rax,1)
  movsd  %xmm8,%xmm12
  movsd  %xmm7,%xmm11
  movups %xmm4,0x20(%r11,%rax,1)
  movups %xmm15,0x20(%rdi,%rax,1)
  movapd %xmm3,%xmm15
  subpd  %xmm0,%xmm3
  addpd  %xmm0,%xmm15
  movups %xmm1,0x20(%r10,%rax,1)
  movups %xmm2,0x30(%r10,%rax,1)
  movups %xmm3,0x30(%r11,%rax,1)
  movups %xmm15,0x30(%rdi,%rax,1)
  movups %xmm14,(%rbx,%rax,1)
  movups %xmm13,0x10(%rbx,%rax,1)
  movups %xmm12,0x20(%rbx,%rax,1)
  movups %xmm11,0x30(%rbx,%rax,1)
  add    $0x40,%rax
  cmp    %r13,%rax
  jne    L32
L24:
  mov    %rdx,%rax
  mov    %rdx,%r13
  shl    $0x6,%rax
  shl    $0x7,%r13
  lea    (%r12,%rax,1),%rbp
  movupd (%r12,%r13,1),%xmm11
  movupd 0x0(%rbp),%xmm8
  movupd 0x0(%rbp),%xmm3
  add    %rax,%rbp
  movupd 0x0(%rbp),%xmm2
  movupd 0x0(%rbp,%rax,1),%xmm0
  lea    (%rdx,%rdx,2),%rbp
  shl    $0x8,%rdx
  add    %rdx,%r9
  unpckhpd %xmm3,%xmm3
  unpcklpd %xmm8,%xmm8
  add    %rdx,%rsi
  movupd 0x20(%r9),%xmm5
  movupd 0x30(%r9),%xmm4
  movapd %xmm8,%xmm14
  unpcklpd %xmm2,%xmm2
  movupd (%r9),%xmm7
  unpckhpd %xmm11,%xmm11
  add    %rdx,%rcx
  add    %rdx,%r8
  movapd %xmm5,%xmm12
  movapd %xmm4,%xmm13
  movupd 0x10(%r9),%xmm6
  movapd %xmm4,%xmm10
  mulpd  %xmm3,%xmm12
  movapd %xmm7,%xmm15
  shufpd $0x1,%xmm4,%xmm4
  shl    $0x6,%rbp
  mulpd  %xmm3,%xmm13
  movapd %xmm6,%xmm9
  movupd (%r12,%rbp,1),%xmm1
  unpcklpd %xmm0,%xmm0
  mulpd  %xmm7,%xmm14
  shufpd $0x1,%xmm7,%xmm7
  mulpd  %xmm8,%xmm10
  unpckhpd %xmm1,%xmm1
  mulpd  %xmm3,%xmm9
  movaps %xmm12,0x78(%rsp)
  mulpd  %xmm3,%xmm15
  movapd %xmm8,%xmm12
  movaps %xmm13,0x28(%rsp)
  mulpd  %xmm6,%xmm12
  movapd %xmm8,%xmm13
  shufpd $0x1,%xmm6,%xmm6
  movaps %xmm14,0x98(%rsp)
  mulpd  %xmm6,%xmm13
  movapd %xmm8,%xmm14
  mulpd  %xmm3,%xmm6
  mulpd  %xmm5,%xmm14
  shufpd $0x1,%xmm5,%xmm5
  movaps %xmm9,0x18(%rsp)
  movapd %xmm8,%xmm9
  mulpd  %xmm5,%xmm9
  movaps %xmm12,0x88(%rsp)
  movapd %xmm10,%xmm12
  movapd %xmm8,%xmm10
  mulpd  %xmm7,%xmm10
  movaps %xmm13,-0x68(%rsp)
  movaps %xmm6,0xc8(%rsp)
  mulpd  %xmm3,%xmm7
  movapd %xmm5,%xmm6
  movupd 0x10(%rsi),%xmm5
  mulpd  %xmm3,%xmm6
  mulpd  %xmm4,%xmm8
  movaps %xmm9,-0x58(%rsp)
  mulpd  %xmm3,%xmm4
  movupd 0x30(%rsi),%xmm3
  movaps %xmm7,-0x48(%rsp)
  movaps %xmm6,0xb8(%rsp)
  movupd (%rsi),%xmm6
  movaps %xmm8,0x8(%rsp)
  movapd %xmm6,%xmm7
  shufpd $0x1,%xmm6,%xmm6
  movaps %xmm4,0xa8(%rsp)
  movupd 0x20(%rsi),%xmm4
  mulpd  %xmm2,%xmm7
  mulpd  %xmm11,%xmm6
  movapd %xmm7,%xmm9
  movapd %xmm5,%xmm7
  shufpd $0x1,%xmm5,%xmm5
  mulpd  %xmm2,%xmm7
  mulpd  %xmm11,%xmm5
  movapd %xmm7,%xmm8
  movapd %xmm4,%xmm7
  shufpd $0x1,%xmm4,%xmm4
  mulpd  %xmm2,%xmm7
  mulpd  %xmm11,%xmm4
  mulpd  %xmm3,%xmm2
  shufpd $0x1,%xmm3,%xmm3
  mulpd  %xmm11,%xmm3
  movapd %xmm9,%xmm11
  subpd  %xmm6,%xmm9
  addpd  %xmm6,%xmm11
  movapd %xmm9,%xmm13
  movsd  %xmm11,%xmm13
  movapd %xmm8,%xmm11
  subpd  %xmm5,%xmm8
  addpd  %xmm5,%xmm11
  movapd %xmm7,%xmm5
  subpd  %xmm4,%xmm7
  movaps %xmm13,-0x8(%rsp)
  addpd  %xmm4,%xmm5
  movapd %xmm2,%xmm4
  subpd  %xmm3,%xmm2
  addpd  %xmm3,%xmm4
  movapd %xmm11,%xmm6
  movapd %xmm8,%xmm11
  movsd  %xmm6,%xmm11
  movsd  %xmm5,%xmm7
  movupd (%rcx),%xmm5
  movsd  %xmm4,%xmm2
  movaps %xmm11,-0x18(%rsp)
  movupd 0x10(%rcx),%xmm4
  movaps %xmm7,-0x28(%rsp)
  movapd %xmm5,%xmm11
  movapd %xmm5,%xmm6
  shufpd $0x1,%xmm5,%xmm5
  movaps %xmm2,-0x38(%rsp)
  movupd 0x20(%rcx),%xmm3
  mulpd  %xmm1,%xmm11
  movupd 0x30(%rcx),%xmm2
  mulpd  %xmm0,%xmm6
  movapd %xmm4,%xmm8
  movapd %xmm5,%xmm9
  mulpd  %xmm1,%xmm8
  movapd %xmm3,%xmm7
  movapd %xmm3,%xmm13
  shufpd $0x1,%xmm3,%xmm3
  mulpd  %xmm1,%xmm7
  mulpd  %xmm0,%xmm13
  movaps %xmm11,-0x78(%rsp)
  mulpd  %xmm0,%xmm9
  movapd %xmm2,%xmm11
  mulpd  %xmm1,%xmm11
  movaps %xmm8,0x48(%rsp)
  mulpd  %xmm1,%xmm5
  movaps %xmm7,0x58(%rsp)
  movapd %xmm4,%xmm7
  shufpd $0x1,%xmm4,%xmm4
  movapd %xmm4,%xmm8
  mulpd  %xmm0,%xmm7
  mulpd  %xmm0,%xmm8
  movaps %xmm11,0x68(%rsp)
  mulpd  %xmm1,%xmm4
  movapd %xmm2,%xmm11
  shufpd $0x1,%xmm2,%xmm2
  mulpd  %xmm0,%xmm11
  movaps %xmm7,0xd8(%rsp)
  movapd %xmm3,%xmm7
  mulpd  %xmm0,%xmm7
  mulpd  %xmm2,%xmm0
  mulpd  %xmm1,%xmm3
  movaps %xmm0,0x38(%rsp)
  movapd %xmm10,%xmm0
  addpd  %xmm15,%xmm10
  subpd  %xmm15,%xmm0
  movapd -0x68(%rsp),%xmm15
  movsd  %xmm0,%xmm10
  movapd %xmm9,%xmm0
  subpd  -0x78(%rsp),%xmm0
  addpd  -0x78(%rsp),%xmm9
  movsd  %xmm0,%xmm9
  movapd %xmm8,%xmm0
  subpd  %xmm9,%xmm10
  movapd 0x18(%rsp),%xmm9
  movaps %xmm10,-0x78(%rsp)
  movapd %xmm15,%xmm10
  addpd  %xmm9,%xmm15
  subpd  %xmm9,%xmm10
  movapd %xmm15,%xmm9
  movapd 0x48(%rsp),%xmm15
  movsd  %xmm10,%xmm9
  movapd -0x58(%rsp),%xmm10
  subpd  %xmm15,%xmm0
  addpd  %xmm15,%xmm8
  movapd 0x78(%rsp),%xmm15
  movsd  %xmm0,%xmm8
  movapd %xmm7,%xmm0
  subpd  %xmm8,%xmm9
  movapd %xmm10,%xmm8
  addpd  %xmm15,%xmm10
  subpd  %xmm15,%xmm8
  movapd 0x58(%rsp),%xmm15
  subpd  %xmm15,%xmm0
  addpd  %xmm15,%xmm7
  movaps %xmm9,-0x68(%rsp)
  movapd 0x8(%rsp),%xmm15
  shufpd $0x2,%xmm10,%xmm8
  movapd 0x38(%rsp),%xmm10
  movsd  %xmm0,%xmm7
  movapd %xmm10,%xmm0
  subpd  %xmm7,%xmm8
  movapd %xmm15,%xmm7
  movaps %xmm8,-0x58(%rsp)
  movapd 0x28(%rsp),%xmm8
  addpd  %xmm8,%xmm15
  subpd  %xmm8,%xmm7
  shufpd $0x2,%xmm15,%xmm7
  movapd 0x68(%rsp),%xmm15
  subpd  %xmm15,%xmm0
  movapd %xmm0,%xmm8
  movapd %xmm10,%xmm0
  movapd -0x48(%rsp),%xmm10
  addpd  %xmm15,%xmm0
  movapd %xmm7,%xmm15
  movsd  %xmm8,%xmm0
  subpd  %xmm0,%xmm15
  movapd %xmm2,%xmm0
  movapd 0x88(%rsp),%xmm2
  mulpd  %xmm1,%xmm0
  movapd %xmm0,%xmm7
  movapd %xmm6,%xmm0
  subpd  %xmm5,%xmm6
  addpd  %xmm5,%xmm0
  movapd 0x98(%rsp),%xmm5
  movapd %xmm5,%xmm1
  movsd  %xmm0,%xmm6
  movapd %xmm10,%xmm0
  subpd  %xmm10,%xmm1
  addpd  %xmm5,%xmm0
  movapd 0xa8(%rsp),%xmm5
  movsd  %xmm0,%xmm1
  movapd %xmm6,%xmm0
  movapd 0xb8(%rsp),%xmm6
  addpd  %xmm1,%xmm0
  movapd 0xc8(%rsp),%xmm1
  movaps %xmm0,-0x48(%rsp)
  movapd %xmm2,%xmm0
  subpd  %xmm1,%xmm2
  addpd  %xmm1,%xmm0
  movapd 0xd8(%rsp),%xmm1
  movsd  %xmm0,%xmm2
  movapd %xmm1,%xmm0
  subpd  %xmm4,%xmm1
  addpd  %xmm4,%xmm0
  movapd %xmm13,%xmm4
  subpd  %xmm3,%xmm4
  movsd  %xmm0,%xmm1
  movapd %xmm6,%xmm0
  addpd  %xmm1,%xmm2
  movapd %xmm14,%xmm1
  addpd  %xmm14,%xmm0
  subpd  %xmm6,%xmm1
  movapd %xmm13,%xmm6
  addpd  %xmm3,%xmm6
  movapd %xmm5,%xmm3
  addpd  %xmm12,%xmm3
  movsd  %xmm0,%xmm1
  movsd  %xmm6,%xmm4
  movapd %xmm12,%xmm6
  subpd  %xmm5,%xmm6
  addpd  %xmm4,%xmm1
  movapd %xmm11,%xmm4
  addpd  %xmm7,%xmm4
  movapd %xmm6,%xmm0
  movupd (%r8),%xmm6
  movupd 0x10(%r8),%xmm5
  movsd  %xmm3,%xmm0
  movapd %xmm11,%xmm3
  movapd %xmm15,%xmm11
  movapd -0x78(%rsp),%xmm14
  subpd  %xmm7,%xmm3
  movapd %xmm6,%xmm10
  addpd  -0x8(%rsp),%xmm6
  movapd -0x68(%rsp),%xmm13
  movapd %xmm5,%xmm9
  addpd  -0x18(%rsp),%xmm5
  subpd  -0x8(%rsp),%xmm10
  subpd  -0x18(%rsp),%xmm9
  movapd -0x58(%rsp),%xmm12
  movsd  %xmm4,%xmm3
  movupd 0x20(%r8),%xmm4
  addpd  %xmm3,%xmm0
  movupd 0x30(%r8),%xmm3
  addpd  %xmm10,%xmm14
  movapd %xmm4,%xmm8
  addpd  -0x28(%rsp),%xmm4
  addpd  %xmm9,%xmm13
  movapd %xmm3,%xmm7
  subpd  -0x38(%rsp),%xmm7
  subpd  -0x78(%rsp),%xmm10
  subpd  -0x28(%rsp),%xmm8
  subpd  -0x68(%rsp),%xmm9
  addpd  -0x38(%rsp),%xmm3
  addpd  %xmm7,%xmm11
  subpd  %xmm15,%xmm7
  movapd -0x48(%rsp),%xmm15
  addpd  %xmm8,%xmm12
  subpd  -0x58(%rsp),%xmm8
  addpd  %xmm6,%xmm15
  subpd  -0x48(%rsp),%xmm6
  movups %xmm15,(%rdi,%rax,1)
  movapd %xmm5,%xmm15
  subpd  %xmm2,%xmm5
  addpd  %xmm2,%xmm15
  movapd %xmm10,%xmm2
  movups %xmm6,(%r11,%rax,1)
  movsd  %xmm14,%xmm2
  movsd  %xmm10,%xmm14
  movups %xmm2,(%r10,%rax,1)
  movapd %xmm9,%xmm2
  movups %xmm15,0x10(%rdi,%rax,1)
  movapd %xmm4,%xmm15
  movsd  %xmm13,%xmm2
  subpd  %xmm1,%xmm4
  addpd  %xmm1,%xmm15
  movsd  %xmm9,%xmm13
  movups %xmm14,(%rbx,%rax,1)
  movups %xmm2,0x10(%r10,%rax,1)
  movapd %xmm8,%xmm2
  movsd  %xmm12,%xmm2
  movsd  %xmm8,%xmm12
  movups %xmm5,0x10(%r11,%rax,1)
  movups %xmm15,0x20(%rdi,%rax,1)
  movapd %xmm3,%xmm15
  subpd  %xmm0,%xmm3
  addpd  %xmm0,%xmm15
  movups %xmm2,0x20(%r10,%rax,1)
  movapd %xmm7,%xmm2
  movsd  %xmm11,%xmm2
  movsd  %xmm7,%xmm11
  movups %xmm4,0x20(%r11,%rax,1)
  movups %xmm3,0x30(%r11,%rax,1)
  movups %xmm15,0x30(%rdi,%rax,1)
  movups %xmm2,0x30(%r10,%rax,1)
  movups %xmm13,0x10(%rbx,%rax,1)
  movups %xmm12,0x20(%rbx,%rax,1)
  movups %xmm11,0x30(%rbx,%rax,1)
L19:
  add    $0x100,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L23:
  xor    %edx,%edx
  jmp    L24
```

assistant: ```c
void kern_r4_u4_f(double *restrict o0, double *restrict o1, double *restrict o2, double *restrict o3, double *i0, double *i1, double *i2, double *i3, double *w, long bsize, long blocks) {
  long i;
  for (i = 0; i < blocks; i++) {
    double wr1, wi1;
    double wr2, wi2;
    double wr3, wi3;
    double pr1, pi1;
    double pr2, pi2;
    double pr3, pi3;
    double qr0, qi0;
    double qr1, qi1;
    double qr2, qi2;
    double qr3, qi3;
    wr1 = w[8 * i];
    wi1 = w[8 * i + 1];
    wr2 = w[16 * i];
    wi2 = w[16 * i + 1];
    wr3 = w[24 * i];
    wi3 = w[24 * i + 1];
    pr1 = i1[32 * i] * wr1 + i1[32 * i + 1] * wi1;
    pi1 = i1[32 * i + 1] * wr1 - i1[32 * i] * wi1;
    pr2 = i2[32 * i] * wr2 + i2[32 * i + 1] * wi2;
    pi2 = i2[32 * i + 1] * wr2 - i2[32 * i] * wi2;
    pr3 = i3[32 * i] * wr3 + i3[32 * i + 1] * wi3;
    pi3 = i3[32 * i + 1] * wr3 - i3[32 * i] * wi3;
    qr0 = i0[32 * i] + pr2;
    qr2 = i0[32 * i] - pr2;
    qi0 = i0[32 * i + 1] + pi2;
    qi2 = i0[32 * i + 1] - pi2;
    qr1 = pr1 + pr3;
    qr3 = pr1 - pr3;
    qi1 = pi1 + pi3;
    qi3 = pi1 - pi3;
    pr1 = i1[32 * i + 2] * wr1 + i1[32 * i + 3] * wi1;
    pi1 = i1[32 * i + 3] * wr1 - i1[32 * i + 2] * wi1;
    pr2 = i2[32 * i + 2] * wr2 + i2[32 * i + 3] * wi2;
    pi2 = i2[32 * i + 3] * wr2 - i2[32 * i + 2] * wi2;
    pr3 = i3[32 * i + 2] * wr3 + i3[32 * i + 3] * wi3;
    pi3 = i3[32 * i + 3] * wr3 - i3[32 * i + 2] * wi3;
    o0[8 * i] = qr0 + qr1;
    o0[8 * i + 1] = qi0 + qi1;
    o2[8 * i] = qr0 - qr1;
    o2[8 * i + 1] = qi0 - qi1;
    o1[8 * i] = qr2 + qi3;
    o1[8 * i + 1] = qi2 - qr3;
    o3[8 * i] = qr2 - qi3;
    o3[8 * i + 1] = qi2 + qr3;
    qr0 = i0[32 * i + 2] + pr2;
    qr2 = i0[32 * i + 2] - pr2;
    qi0 = i0[32 * i + 3] + pi2;
    qi2 = i0[32 * i + 3] - pi2;
    qr1 = pr1 + pr3;
    qr3 = pr1 - pr3;
    qi1 = pi1 + pi3;
    qi3 = pi1 - pi3;
    pr1 = i1[32 * i + 4] * wr1 + i1[32 * i + 5] * wi1;
    pi1 = i1[32 * i + 5] * wr1 - i1[32 * i + 4] * wi1;
    pr2 = i2[32 * i + 4] * wr2 + i2[32 * i + 5] * wi2;
    pi2 = i2[32 * i + 5] * wr2 - i2[32 * i + 4] * wi2;
    pr3 = i3[32 * i + 4] * wr3 + i3[32 * i + 5] * wi3;
    pi3 = i3[32 * i + 5] * wr3 - i3[32 * i + 4] * wi3;
    o0[8 * i + 2] = qr0 + qr1;
    o0[8 * i + 3] = qi0 + qi1;
    o2[8 * i + 2] = qr0 - qr1;
    o2[8 * i + 3] = qi0 - qi1;
    o1[8 * i + 2] = qr2 + qi3;
    o1[8 * i + 3] = qi2 - qr3;
    o3[8 * i + 2] = qr2 - qi3;
    o3[8 * i + 3] = qi2 + qr3;
    qr0 = i0[32 * i + 4] + pr2;
    qr2 = i0[32 * i + 4] - pr2;
    qi0 = i0[32 * i + 5] + pi2;
    qi2 = i0[32 * i + 5] - pi2;
    qr1 = pr1 + pr3;
    qr3 = pr1 - pr3;
    qi1 = pi1 + pi3;
    qi3 = pi1 - pi3;
    pr1 = i1[32 * i + 6] * wr1 + i1[32 * i + 7] * wi1;
    pi1 = i1[32 * i + 7] * wr1 - i1[32 * i + 6] * wi1;
    pr2 = i2[32 * i + 6] * wr2 + i2[32 * i + 7] * wi2;
    pi2 = i2[32 * i + 7] * wr2 - i2[32 * i + 6] * wi2;
    pr3 = i3[32 * i + 6] * wr3 + i3[32 * i + 7] * wi3;
    pi3 = i3[32 * i + 7] * wr3 - i3[32 * i + 6] * wi3;
    o0[8 * i + 4] = qr0 + qr1;
    o0[8 * i + 5] = qi0 + qi1;
    o2[8 * i + 4] = qr0 - qr1;
    o2[8 * i + 5] = qi0 - qi1;
    o1[8 * i + 4] = qr2 + qi3;
    o1[8 * i + 5] = qi2 - qr3;
    o3[8 * i + 4] = qr2 - qi3;
    o3[8 * i + 5] = qi2 + qr3;
    qr0 = i0[32 * i + 6] + pr2;
    qr2 = i0[32 * i + 6] - pr2;
    qi0 = i0[32 * i + 7] + pi2;
    qi2 = i0[32 * i + 7] - pi2;
    qr1 = pr1 + pr3;
    qr3 = pr1 - pr3;
    qi1 = pi1 + pi3;
    qi3 = pi1 - pi3;
    o0[8 * i + 6] = qr0 + qr1;
    o0[8 * i + 7] = qi0 + qi1;
    o2[8 * i + 6] = qr0 - qr1;
    o2[8 * i + 7] = qi0 - qi1;
    o1[8 * i + 6] = qr2 + qi3;
    o1[8 * i + 7] = qi2 - qr3;
    o3[8 * i + 6] = qr2 - qi3;
    o3[8 * i + 7] = qi2 + qr3;
  }
}
```