user: Converte this assembly snippet into its equivalent C code:

```asm
<oneBspEval2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %edi,-0x34(%rbp)
  mov    %esi,-0x38(%rbp)
  mov    %rdx,-0x40(%rbp)
  mov    %ecx,-0x44(%rbp)
  mov    %r8d,-0x48(%rbp)
  mov    %r9,-0x50(%rbp)
  mov    -0x44(%rbp),%eax
  shl    $0x2,%eax
  mov    %eax,-0x20(%rbp)
  mov    0x18(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jb     L189
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jb     L213
  mov    -0x40(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x40(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    0x20(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0x40(%rbp),%rax
  movsd  0x10(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    0x20(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0x40(%rbp),%rax
  movsd  0x18(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  jmp    L41
L213:
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  comisd %xmm1,%xmm0
  jb     L172
  mov    -0x48(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x20(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L41
L172:
  mov    0x20(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rsi
  mov    -0x38(%rbp),%ecx
  mov    -0x48(%rbp),%eax
  mov    0x10(%rbp),%rdx
  movq   %rsi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <FindSpan@plt>
  mov    %eax,-0x18(%rbp)
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rdi
  mov    0x48(%rbp),%r8
  mov    0x40(%rbp),%rcx
  mov    0x50(%rbp),%rdx
  mov    -0x38(%rbp),%esi
  mov    -0x18(%rbp),%eax
  mov    %r8,%r9
  mov    %rcx,%r8
  mov    %rdx,%rcx
  mov    0x10(%rbp),%rdx
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <BasisFuns@plt>
  mov    -0x18(%rbp),%eax
  sub    -0x38(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L256
L225:
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  imul   -0x20(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  imul   -0x20(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  imul   -0x20(%rbp),%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L256:
  mov    -0x28(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jle    L225
  jmp    L41
L189:
  mov    0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x44(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  comisd %xmm1,%xmm0
  jb     L53
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jb     L209
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x18(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L41
L209:
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  comisd %xmm1,%xmm0
  jb     L222
  mov    -0x20(%rbp),%eax
  imul   -0x48(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x18(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L41
L222:
  mov    0x20(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rsi
  mov    -0x38(%rbp),%ecx
  mov    -0x48(%rbp),%eax
  mov    0x10(%rbp),%rdx
  movq   %rsi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <FindSpan@plt>
  mov    %eax,-0x18(%rbp)
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rdi
  mov    0x48(%rbp),%r8
  mov    0x40(%rbp),%rcx
  mov    0x50(%rbp),%rdx
  mov    -0x38(%rbp),%esi
  mov    -0x18(%rbp),%eax
  mov    %r8,%r9
  mov    %rcx,%r8
  mov    %rdx,%rcx
  mov    0x10(%rbp),%rdx
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <BasisFuns@plt>
  mov    -0x18(%rbp),%eax
  sub    -0x38(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x20(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0xc(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L61
L204:
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x18(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L61:
  mov    -0x28(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jle    L204
  jmp    L41
L53:
  mov    0x20(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jb     L250
  mov    0x18(%rbp),%rax
  mov    (%rax),%rsi
  mov    -0x50(%rbp),%rdx
  mov    -0x34(%rbp),%ecx
  mov    -0x44(%rbp),%eax
  movq   %rsi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <FindSpan@plt>
  mov    %eax,-0x1c(%rbp)
  mov    0x18(%rbp),%rax
  mov    (%rax),%rdi
  mov    0x30(%rbp),%r9
  mov    0x28(%rbp),%r8
  mov    0x38(%rbp),%rcx
  mov    -0x50(%rbp),%rdx
  mov    -0x34(%rbp),%esi
  mov    -0x1c(%rbp),%eax
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <BasisFuns@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0x34(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L35
L236:
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  shl    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  shl    $0x2,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  shl    $0x2,%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  shl    $0x2,%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L35:
  mov    -0x28(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L236
  jmp    L41
L250:
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  comisd %xmm1,%xmm0
  jb     L146
  mov    0x18(%rbp),%rax
  mov    (%rax),%rsi
  mov    -0x50(%rbp),%rdx
  mov    -0x34(%rbp),%ecx
  mov    -0x44(%rbp),%eax
  movq   %rsi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <FindSpan@plt>
  mov    %eax,-0x1c(%rbp)
  mov    0x18(%rbp),%rax
  mov    (%rax),%rdi
  mov    0x30(%rbp),%r9
  mov    0x28(%rbp),%r8
  mov    0x38(%rbp),%rcx
  mov    -0x50(%rbp),%rdx
  mov    -0x34(%rbp),%esi
  mov    -0x1c(%rbp),%eax
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <BasisFuns@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0x34(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x48(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x20(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L123
L124:
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x28(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L123:
  mov    -0x28(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L124
  jmp    L41
L146:
  mov    0x18(%rbp),%rax
  mov    (%rax),%rsi
  mov    -0x50(%rbp),%rdx
  mov    -0x34(%rbp),%ecx
  mov    -0x44(%rbp),%eax
  movq   %rsi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <FindSpan@plt>
  mov    %eax,-0x1c(%rbp)
  mov    0x18(%rbp),%rax
  mov    (%rax),%rdi
  mov    0x30(%rbp),%r9
  mov    0x28(%rbp),%r8
  mov    0x38(%rbp),%rcx
  mov    -0x50(%rbp),%rdx
  mov    -0x34(%rbp),%esi
  mov    -0x1c(%rbp),%eax
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <BasisFuns@plt>
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rsi
  mov    -0x38(%rbp),%ecx
  mov    -0x48(%rbp),%eax
  mov    0x10(%rbp),%rdx
  movq   %rsi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <FindSpan@plt>
  mov    %eax,-0x18(%rbp)
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rdi
  mov    0x48(%rbp),%r8
  mov    0x40(%rbp),%rcx
  mov    0x50(%rbp),%rdx
  mov    -0x38(%rbp),%esi
  mov    -0x18(%rbp),%eax
  mov    %r8,%r9
  mov    %rcx,%r8
  mov    %rdx,%rcx
  mov    0x10(%rbp),%rdx
  movq   %rdi,%xmm0
  mov    %eax,%edi
  call   <BasisFuns@plt>
  mov    -0x1c(%rbp),%eax
  sub    -0x34(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x18(%rbp),%eax
  sub    -0x38(%rbp),%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  shl    $0x2,%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L36
L201:
  movl   $0x0,-0x24(%rbp)
  jmp    L134
L185:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  shl    $0x2,%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  shl    $0x2,%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x20(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  shl    $0x2,%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x20(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x28(%rbp),%eax
  imul   -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  shl    $0x2,%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x20(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x24(%rbp)
L134:
  mov    -0x24(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L185
  addl   $0x1,-0x28(%rbp)
L36:
  mov    -0x28(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jle    L201
L41:
  nop
  leave
  ret
```

assistant: ```c
void oneBspEval2(int degU, int degV, double *cp, int ncp, int kcp, double *knotU, double *knotV, double *us, double *ep, double *leftU, double *rightU, double *NU, double *leftV, double *rightV, double *NV) {
  int i, j, spanU, spanV, ind, ind2, fourncp, myint;
  double NN;
  fourncp = 4 * ncp;
  if (us[0] <= knotU[degU]) {
    if (us[1] <= knotV[degV]) {
      ep[0] = cp[0];
      ep[1] = cp[1];
      ep[2] = cp[2];
      ep[3] = cp[3];
    } else if (us[1] >= knotV[kcp]) {
      myint = fourncp * (kcp - 1);
      ep[0] = cp[myint];
      ep[1] = cp[myint + 1];
      ep[2] = cp[myint + 2];
      ep[3] = cp[myint + 3];
    } else {
      ep[0] = 0.0;
      ep[1] = 0.0;
      ep[2] = 0.0;
      ep[3] = 0.0;
      spanV = FindSpan(kcp, degV, us[1], knotV);
      BasisFuns(spanV, us[1], degV, knotV, NV, leftV, rightV);
      ind = spanV - degV;
      for (i = 0; i <= degV; i++) {
        ep[0] += NV[i] * cp[(ind + i) * fourncp];
        ep[1] += NV[i] * cp[(ind + i) * fourncp + 1];
        ep[2] += NV[i] * cp[(ind + i) * fourncp + 2];
        ep[3] += NV[i] * cp[(ind + i) * fourncp + 3];
      }
    }
  } else if (us[0] >= knotU[ncp]) {
    if (us[1] <= knotV[degV]) {
      ep[0] = cp[fourncp - 4];
      ep[1] = cp[fourncp - 3];
      ep[2] = cp[fourncp - 2];
      ep[3] = cp[fourncp - 1];
    } else if (us[1] >= knotV[kcp]) {
      myint = fourncp * kcp;
      ep[0] = cp[myint - 4];
      ep[1] = cp[myint - 3];
      ep[2] = cp[myint - 2];
      ep[3] = cp[myint - 1];
    } else {
      ep[0] = 0.0;
      ep[1] = 0.0;
      ep[2] = 0.0;
      ep[3] = 0.0;
      spanV = FindSpan(kcp, degV, us[1], knotV);
      BasisFuns(spanV, us[1], degV, knotV, NV, leftV, rightV);
      ind = spanV - degV;
      myint = (ind + 1) * fourncp;
      for (i = 0; i <= degV; i++) {
        ep[0] += NV[i] * cp[i * fourncp + myint - 4];
        ep[1] += NV[i] * cp[i * fourncp + myint - 3];
        ep[2] += NV[i] * cp[i * fourncp + myint - 2];
        ep[3] += NV[i] * cp[i * fourncp + myint - 1];
      }
    }
  } else {
    ep[0] = 0.0;
    ep[1] = 0.0;
    ep[2] = 0.0;
    ep[3] = 0.0;
    if (us[1] <= knotV[degV]) {
      spanU = FindSpan(ncp, degU, us[0], knotU);
      BasisFuns(spanU, us[0], degU, knotU, NU, leftU, rightU);
      ind = spanU - degU;
      for (i = 0; i <= degU; i++) {
        ep[0] += NU[i] * cp[(ind + i) * 4];
        ep[1] += NU[i] * cp[(ind + i) * 4 + 1];
        ep[2] += NU[i] * cp[(ind + i) * 4 + 2];
        ep[3] += NU[i] * cp[(ind + i) * 4 + 3];
      }
    } else if (us[1] >= knotV[kcp]) {
      spanU = FindSpan(ncp, degU, us[0], knotU);
      BasisFuns(spanU, us[0], degU, knotU, NU, leftU, rightU);
      ind = spanU - degU;
      myint = ind * 4 + (kcp - 1) * fourncp;
      for (i = 0; i <= degU; i++) {
        ep[0] += NU[i] * cp[i * 4 + myint];
        ep[1] += NU[i] * cp[i * 4 + myint + 1];
        ep[2] += NU[i] * cp[i * 4 + myint + 2];
        ep[3] += NU[i] * cp[i * 4 + myint + 3];
      }
    } else {
      spanU = FindSpan(ncp, degU, us[0], knotU);
      BasisFuns(spanU, us[0], degU, knotU, NU, leftU, rightU);
      spanV = FindSpan(kcp, degV, us[1], knotV);
      BasisFuns(spanV, us[1], degV, knotV, NV, leftV, rightV);
      ind = spanU - degU;
      ind2 = spanV - degV;
      myint = ind2 * fourncp + ind * 4;
      for (i = 0; i <= degV; i++) {
        for (j = 0; j <= degU; j++) {
          NN = NV[i] * NU[j];
          ep[0] += NN * cp[i * fourncp + j * 4 + myint];
          ep[1] += NN * cp[i * fourncp + j * 4 + myint + 1];
          ep[2] += NN * cp[i * fourncp + j * 4 + myint + 2];
          ep[3] += NN * cp[i * fourncp + j * 4 + myint + 3];
        }
      }
    }
  }
}
```