user: Translate the below assembly code into C programming language:

```asm
<make_nucleon_2pt>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %rdx,-0x68(%rbp)
  mov    %rcx,-0x70(%rbp)
  mov    %r8,-0x78(%rbp)
  mov    %r9,-0x80(%rbp)
  mov    0x70(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x68(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x88(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x20(%rbp)
  mov    0x70(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x68(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x88(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x18(%rbp)
  mov    0x70(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x68(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x88(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x10(%rbp)
  mov    0x70(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x68(%rbp),%eax
  imul   0x50(%rbp),%eax
  imul   0x58(%rbp),%eax
  imul   0x88(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x80(%rbp),%r9
  mov    -0x78(%rbp),%r8
  mov    -0x70(%rbp),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x18(%rbp),%rsi
  mov    -0x20(%rbp),%rax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x80(%rbp),%edi
  push   %rdi
  mov    0x78(%rbp),%edi
  push   %rdi
  mov    0x70(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  push   0x38(%rbp)
  push   0x30(%rbp)
  push   0x10(%rbp)
  mov    %rax,%rdi
  call   <make_local_block@plt>
  add    $0x60,%rsp
  mov    0x20(%rbp),%r9
  mov    0x18(%rbp),%r8
  mov    -0x70(%rbp),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x8(%rbp),%rsi
  mov    -0x10(%rbp),%rax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x80(%rbp),%edi
  push   %rdi
  mov    0x78(%rbp),%edi
  push   %rdi
  mov    0x70(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  push   0x38(%rbp)
  push   0x30(%rbp)
  push   0x28(%rbp)
  mov    %rax,%rdi
  call   <make_local_block@plt>
  add    $0x60,%rsp
  movl   $0x0,-0x3c(%rbp)
  jmp    L15
L141:
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x38(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x34(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x2c(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x28(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  movl   $0x0,-0x48(%rbp)
  jmp    L107
L149:
  movl   $0x0,-0x4c(%rbp)
  jmp    L189
L120:
  movl   $0x0,-0x44(%rbp)
  jmp    L8
L50:
  movl   $0x0,-0x40(%rbp)
  jmp    L30
L71:
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x88(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x90(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  movsd  %xmm2,-0x98(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x98(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x90(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  mov    0x90(%rbp),%r8d
  mov    0x88(%rbp),%edi
  mov    -0x44(%rbp),%ecx
  mov    -0x4c(%rbp),%edx
  mov    -0x48(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x70(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <index_4d@plt>
  add    $0x10,%rsp
  lea    0x0(,%rax,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,-0x88(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm7
  movsd  %xmm7,-0x90(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x98(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x98(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x90(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  mov    0x90(%rbp),%r8d
  mov    0x88(%rbp),%edi
  mov    -0x44(%rbp),%ecx
  mov    -0x4c(%rbp),%edx
  mov    -0x48(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x70(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <index_4d@plt>
  add    $0x10,%rsp
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L30:
  mov    -0x40(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L71
  addl   $0x1,-0x44(%rbp)
L8:
  mov    -0x44(%rbp),%eax
  cmp    0x70(%rbp),%eax
  jl     L50
  addl   $0x1,-0x4c(%rbp)
L189:
  mov    -0x4c(%rbp),%eax
  cmp    0x90(%rbp),%eax
  jl     L120
  addl   $0x1,-0x48(%rbp)
L107:
  mov    -0x48(%rbp),%eax
  cmp    0x88(%rbp),%eax
  jl     L149
  addl   $0x1,-0x3c(%rbp)
L15:
  mov    -0x3c(%rbp),%eax
  cmp    0x78(%rbp),%eax
  jl     L141
  movl   $0x0,-0x3c(%rbp)
  jmp    L51
L46:
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x38(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x34(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x2c(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x28(%rbp)
  mov    0x80(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  movl   $0x0,-0x48(%rbp)
  jmp    L45
L155:
  movl   $0x0,-0x4c(%rbp)
  jmp    L70
L72:
  movl   $0x0,-0x44(%rbp)
  jmp    L33
L104:
  movl   $0x0,-0x40(%rbp)
  jmp    L35
L193:
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  movsd  %xmm2,-0x88(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm3
  movsd  %xmm3,-0x90(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,-0x98(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x98(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x90(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  mov    0x90(%rbp),%r8d
  mov    0x88(%rbp),%edi
  mov    -0x44(%rbp),%ecx
  mov    -0x4c(%rbp),%edx
  mov    -0x48(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x70(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <index_4d@plt>
  add    $0x10,%rsp
  lea    0x0(,%rax,8),%rcx
  mov    -0x58(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x88(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x90(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    0x90(%rbp),%edx
  mov    -0x4c(%rbp),%ecx
  mov    -0x40(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  movsd  %xmm2,-0x98(%rbp)
  mov    -0x40(%rbp),%r9d
  mov    -0x24(%rbp),%r8d
  mov    -0x28(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%esi
  mov    -0x44(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x88(%rbp),%edi
  push   %rdi
  mov    0x68(%rbp),%edi
  push   %rdi
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x2c(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x98(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x90(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  mov    0x90(%rbp),%r8d
  mov    0x88(%rbp),%edi
  mov    -0x44(%rbp),%ecx
  mov    -0x4c(%rbp),%edx
  mov    -0x48(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x70(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <index_4d@plt>
  add    $0x10,%rsp
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L35:
  mov    -0x40(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L193
  addl   $0x1,-0x44(%rbp)
L33:
  mov    -0x44(%rbp),%eax
  cmp    0x70(%rbp),%eax
  jl     L104
  addl   $0x1,-0x4c(%rbp)
L70:
  mov    -0x4c(%rbp),%eax
  cmp    0x90(%rbp),%eax
  jl     L72
  addl   $0x1,-0x48(%rbp)
L45:
  mov    -0x48(%rbp),%eax
  cmp    0x88(%rbp),%eax
  jl     L155
  addl   $0x1,-0x3c(%rbp)
L51:
  mov    -0x3c(%rbp),%eax
  cmp    0x78(%rbp),%eax
  jl     L46
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  nop
  leave
  ret
```

assistant: ```c
void make_nucleon_2pt(double *C_re, double *C_im, const double *prop_re, const double *prop_im, const int *src_color_weights_r1, const int *src_spin_weights_r1, const double *src_weights_r1, const int *src_color_weights_r2, const int *src_spin_weights_r2, const double *src_weights_r2, const double *src_psi_re, const double *src_psi_im, const double *snk_psi_re, const double *snk_psi_im, const int Nc, const int Ns, const int Vsrc, const int Vsnk, const int Nt, const int Nw, const int Nq, const int Nsrc, const int Nsnk) {
  int n, m, t, x, iC, iS, jC, jS, kC, kS, wnum;
  double *Blocal_r1_re = malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  double *Blocal_r1_im = malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  double *Blocal_r2_re = malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  double *Blocal_r2_im = malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  make_local_block(Blocal_r1_re, Blocal_r1_im, prop_re, prop_im, src_color_weights_r1, src_spin_weights_r1, src_weights_r1, src_psi_re, src_psi_im, Nc, Ns, Vsrc, Vsnk, Nt, Nw, Nq, Nsrc);
  make_local_block(Blocal_r2_re, Blocal_r2_im, prop_re, prop_im, src_color_weights_r2, src_spin_weights_r2, src_weights_r2, src_psi_re, src_psi_im, Nc, Ns, Vsrc, Vsnk, Nt, Nw, Nq, Nsrc);
  for (wnum = 0; wnum < Nw; wnum++) {
    iC = src_color_weights_r1[index_2d(wnum, 0, Nq)];
    iS = src_spin_weights_r1[index_2d(wnum, 0, Nq)];
    jC = src_color_weights_r1[index_2d(wnum, 1, Nq)];
    jS = src_spin_weights_r1[index_2d(wnum, 1, Nq)];
    kC = src_color_weights_r1[index_2d(wnum, 2, Nq)];
    kS = src_spin_weights_r1[index_2d(wnum, 2, Nq)];
    for (m = 0; m < Nsrc; m++) {
      for (n = 0; n < Nsnk; n++) {
        for (t = 0; t < Nt; t++) {
          for (x = 0; x < Vsnk; x++) {
            C_re[index_4d(0, m, n, t, Nsrc, Nsnk, Nt)] += src_weights_r1[wnum] * (snk_psi_re[index_2d(x, n, Nsnk)] * Blocal_r1_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)] - snk_psi_im[index_2d(x, n, Nsnk)] * Blocal_r1_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)]);
            C_im[index_4d(0, m, n, t, Nsrc, Nsnk, Nt)] += src_weights_r1[wnum] * (snk_psi_re[index_2d(x, n, Nsnk)] * Blocal_r1_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)] - snk_psi_im[index_2d(x, n, Nsnk)] * Blocal_r1_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)]);
          }
        }
      }
    }
  }
  for (wnum = 0; wnum < Nw; wnum++) {
    iC = src_color_weights_r2[index_2d(wnum, 0, Nq)];
    iS = src_spin_weights_r2[index_2d(wnum, 0, Nq)];
    jC = src_color_weights_r2[index_2d(wnum, 1, Nq)];
    jS = src_spin_weights_r2[index_2d(wnum, 1, Nq)];
    kC = src_color_weights_r2[index_2d(wnum, 2, Nq)];
    kS = src_spin_weights_r2[index_2d(wnum, 2, Nq)];
    for (m = 0; m < Nsrc; m++) {
      for (n = 0; n < Nsnk; n++) {
        for (t = 0; t < Nt; t++) {
          for (x = 0; x < Vsnk; x++) {
            C_re[index_4d(1, m, n, t, Nsrc, Nsnk, Nt)] += src_weights_r2[wnum] * (snk_psi_re[index_2d(x, n, Nsnk)] * Blocal_r2_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)] - snk_psi_im[index_2d(x, n, Nsnk)] * Blocal_r2_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)]);
            C_im[index_4d(1, m, n, t, Nsrc, Nsnk, Nt)] += src_weights_r2[wnum] * (snk_psi_re[index_2d(x, n, Nsnk)] * Blocal_r2_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)] - snk_psi_im[index_2d(x, n, Nsnk)] * Blocal_r2_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m, Nc, Ns, Vsnk, Nsrc)]);
          }
        }
      }
    }
  }
  free(Blocal_r1_re);
  free(Blocal_r1_im);
  free(Blocal_r2_re);
  free(Blocal_r2_im);
}
```