user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<contr_hrr>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %edi,-0x14(%rbp)
  movsd  %xmm0,-0x20(%rbp)
  movsd  %xmm1,-0x28(%rbp)
  movsd  %xmm2,-0x30(%rbp)
  mov    %rsi,-0x38(%rbp)
  mov    %edx,-0x18(%rbp)
  mov    %ecx,-0x3c(%rbp)
  mov    %r8d,-0x40(%rbp)
  mov    %r9,-0x48(%rbp)
  movsd  %xmm3,-0x50(%rbp)
  movsd  %xmm4,-0x58(%rbp)
  movsd  %xmm5,-0x60(%rbp)
  movsd  %xmm6,-0x68(%rbp)
  movsd  %xmm7,-0x70(%rbp)
  cmpl   $0x0,0x28(%rbp)
  jle    L113
  mov    0x28(%rbp),%eax
  lea    -0x1(%rax),%r8d
  mov    -0x18(%rbp),%eax
  lea    0x1(%rax),%r10d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r9
  mov    -0x40(%rbp),%r11d
  mov    -0x3c(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%ecx
  push   %rcx
  mov    0xc0(%rbp),%ecx
  push   %rcx
  mov    0xb8(%rbp),%ecx
  push   %rcx
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%ecx
  push   %rcx
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%ecx
  push   %rcx
  mov    0x70(%rbp),%ecx
  push   %rcx
  mov    0x68(%rbp),%ecx
  push   %rcx
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%ecx
  push   %rcx
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%ecx
  push   %rcx
  mov    0x30(%rbp),%ecx
  push   %rcx
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%ecx
  push   %rcx
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11d,%r8d
  mov    %edx,%ecx
  mov    %r10d,%edx
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movapd %xmm0,%xmm7
  subsd  -0x50(%rbp),%xmm7
  movsd  %xmm7,-0x80(%rbp)
  mov    0x28(%rbp),%eax
  lea    -0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  push   %r9
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm7
  addsd  -0x78(%rbp),%xmm7
  movq   %xmm7,%rax
  jmp    L62
L113:
  cmpl   $0x0,0x30(%rbp)
  jle    L49
  mov    0x30(%rbp),%eax
  lea    -0x1(%rax),%r9d
  mov    -0x3c(%rbp),%eax
  lea    0x1(%rax),%ecx
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  push   %r9
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movapd %xmm0,%xmm7
  subsd  -0x58(%rbp),%xmm7
  movsd  %xmm7,-0x80(%rbp)
  mov    0x30(%rbp),%eax
  lea    -0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  push   %r9
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm7
  addsd  -0x78(%rbp),%xmm7
  movq   %xmm7,%rax
  jmp    L62
L49:
  cmpl   $0x0,0x38(%rbp)
  jle    L64
  mov    0x38(%rbp),%eax
  lea    -0x1(%rax),%r9d
  mov    -0x40(%rbp),%eax
  lea    0x1(%rax),%r11d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r10
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  push   %r9
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r10,%r9
  mov    %r11d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm0,%xmm7
  subsd  -0x60(%rbp),%xmm7
  movsd  %xmm7,-0x80(%rbp)
  mov    0x38(%rbp),%eax
  lea    -0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  push   %r9
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm7
  addsd  -0x78(%rbp),%xmm7
  movq   %xmm7,%rax
  jmp    L62
L64:
  cmpl   $0x0,0xb8(%rbp)
  jle    L28
  mov    0xb8(%rbp),%eax
  lea    -0x1(%rax),%r10d
  mov    0x68(%rbp),%eax
  lea    0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%rbx
  mov    -0x40(%rbp),%r11d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  push   %r10
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  push   %r9
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %rbx,%r9
  mov    %r11d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm7
  subsd  0x98(%rbp),%xmm7
  movsd  %xmm7,-0x80(%rbp)
  mov    0xb8(%rbp),%eax
  lea    -0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  push   %r9
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x78(%rbp),%xmm1
  movq   %xmm1,%rax
  jmp    L62
L28:
  cmpl   $0x0,0xc0(%rbp)
  jle    L9
  mov    0xc0(%rbp),%eax
  lea    -0x1(%rax),%r10d
  mov    0x70(%rbp),%eax
  lea    0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%rbx
  mov    -0x40(%rbp),%r11d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  push   %r10
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  push   %r9
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %rbx,%r9
  mov    %r11d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  0xa0(%rbp),%xmm2
  movsd  %xmm2,-0x80(%rbp)
  mov    0xc0(%rbp),%eax
  lea    -0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  mov    0xc8(%rbp),%r8d
  push   %r8
  push   %r9
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm3
  addsd  -0x78(%rbp),%xmm3
  movq   %xmm3,%rax
  jmp    L62
L9:
  cmpl   $0x0,0xc8(%rbp)
  jle    L40
  mov    0xc8(%rbp),%eax
  lea    -0x1(%rax),%r8d
  mov    0x78(%rbp),%eax
  lea    0x1(%rax),%r9d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r11
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  push   %r9
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r11,%r9
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  0x58(%rbp),%xmm0
  movapd %xmm0,%xmm4
  subsd  0xa8(%rbp),%xmm4
  movsd  %xmm4,-0x80(%rbp)
  mov    0xc8(%rbp),%eax
  lea    -0x1(%rax),%r8d
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r9
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  push   %r8
  mov    0xc0(%rbp),%r8d
  push   %r8
  mov    0xb8(%rbp),%r8d
  push   %r8
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  mov    0x38(%rbp),%r8d
  push   %r8
  mov    0x30(%rbp),%r8d
  push   %r8
  mov    0x28(%rbp),%r8d
  push   %r8
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_hrr>
  add    $0xd0,%rsp
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm5
  addsd  -0x78(%rbp),%xmm5
  movq   %xmm5,%rax
  jmp    L62
L40:
  movsd  -0x70(%rbp),%xmm6
  movsd  -0x68(%rbp),%xmm5
  movsd  -0x60(%rbp),%xmm4
  movsd  -0x58(%rbp),%xmm3
  movsd  -0x50(%rbp),%xmm2
  mov    -0x48(%rbp),%r9
  mov    -0x40(%rbp),%r10d
  mov    -0x3c(%rbp),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rsi
  movsd  -0x30(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mov    -0x20(%rbp),%rdi
  mov    -0x14(%rbp),%eax
  push   0xd8(%rbp)
  push   0xd0(%rbp)
  push   0xb0(%rbp)
  push   0xa8(%rbp)
  push   0xa0(%rbp)
  push   0x98(%rbp)
  mov    0x90(%rbp),%r8d
  push   %r8
  push   0x88(%rbp)
  push   0x80(%rbp)
  mov    0x78(%rbp),%r8d
  push   %r8
  mov    0x70(%rbp),%r8d
  push   %r8
  mov    0x68(%rbp),%r8d
  push   %r8
  push   0x60(%rbp)
  push   0x58(%rbp)
  mov    0x50(%rbp),%r8d
  push   %r8
  push   0x48(%rbp)
  push   0x40(%rbp)
  push   0x20(%rbp)
  mov    0x18(%rbp),%r8d
  push   %r8
  push   0x10(%rbp)
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  mov    %r10d,%r8d
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <contr_vrr@plt>
  add    $0xa0,%rsp
  movq   %xmm0,%rax
L62:
  movq   %rax,%xmm0
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
double contr_hrr(int lena, double xa, double ya, double za, double *anorms, int la, int ma, int na, double *aexps, double *acoefs, int lenb, double xb, double yb, double zb, double *bnorms, int lb, int mb, int nb, double *bexps, double *bcoefs, int lenc, double xc, double yc, double zc, double *cnorms, int lc, int mc, int nc, double *cexps, double *ccoefs, int lend, double xd, double yd, double zd, double *dnorms, int ld, int md, int nd, double *dexps, double *dcoefs) {
  if (lb > 0) {
    return contr_hrr(lena, xa, ya, za, anorms, la + 1, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb - 1, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd, dexps, dcoefs) + (xa - xb) * contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb - 1, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd, dexps, dcoefs);
  } else if (mb > 0) {
    return contr_hrr(lena, xa, ya, za, anorms, la, ma + 1, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb - 1, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd, dexps, dcoefs) + (ya - yb) * contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb - 1, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd, dexps, dcoefs);
  } else if (nb > 0) {
    return contr_hrr(lena, xa, ya, za, anorms, la, ma, na + 1, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb - 1, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd, dexps, dcoefs) + (za - zb) * contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb - 1, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd, dexps, dcoefs);
  } else if (ld > 0) {
    return contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc + 1, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld - 1, md, nd, dexps, dcoefs) + (xc - xd) * contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld - 1, md, nd, dexps, dcoefs);
  } else if (md > 0) {
    return contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc + 1, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md - 1, nd, dexps, dcoefs) + (yc - yd) * contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md - 1, nd, dexps, dcoefs);
  } else if (nd > 0) {
    return contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc + 1, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd - 1, dexps, dcoefs) + (zc - zd) * contr_hrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, lb, mb, nb, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, ld, md, nd - 1, dexps, dcoefs);
  }
  return contr_vrr(lena, xa, ya, za, anorms, la, ma, na, aexps, acoefs, lenb, xb, yb, zb, bnorms, bexps, bcoefs, lenc, xc, yc, zc, cnorms, lc, mc, nc, cexps, ccoefs, lend, xd, yd, zd, dnorms, dexps, dcoefs);
}
```