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

```asm
<mm_double_NT_c>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %edi,-0xe4(%rbp)
  mov    %esi,-0xe8(%rbp)
  mov    %edx,-0xec(%rbp)
  mov    %rcx,-0xf8(%rbp)
  mov    %r8,-0x100(%rbp)
  mov    %r9,-0x108(%rbp)
  movsd  %xmm0,-0x110(%rbp)
  movsd  %xmm1,-0x118(%rbp)
  mov    0x10(%rbp),%eax
  mov    %eax,-0xdc(%rbp)
  mov    0x18(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  mov    %eax,-0xd8(%rbp)
  mov    0x20(%rbp),%eax
  mov    %eax,-0xd4(%rbp)
  cmpl   $0x4,-0xe8(%rbp)
  jle    L158
  mov    -0xe8(%rbp),%eax
  sub    $0x1,%eax
  and    $0x3,%eax
  jmp    L59
L158:
  mov    -0xe8(%rbp),%eax
L59:
  mov    %eax,-0xd0(%rbp)
  mov    -0xe8(%rbp),%eax
  sub    -0xd0(%rbp),%eax
  mov    %eax,-0xcc(%rbp)
  movl   $0x0,-0xc8(%rbp)
  mov    -0xe4(%rbp),%eax
  sub    -0xc8(%rbp),%eax
  mov    %eax,-0xc4(%rbp)
  mov    -0xec(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  mov    %eax,%esi
  sar    $0x1f,%esi
  mov    %edx,%ecx
  sub    %esi,%ecx
  mov    %ecx,%edx
  add    %edx,%edx
  add    %ecx,%edx
  sub    %edx,%eax
  mov    %eax,-0xc0(%rbp)
  mov    -0xec(%rbp),%eax
  sub    -0xc0(%rbp),%eax
  mov    %eax,-0xbc(%rbp)
  mov    -0xc4(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x108(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x58(%rbp)
  pxor   %xmm0,%xmm0
  ucomisd -0x118(%rbp),%xmm0
  jp     L2
  pxor   %xmm0,%xmm0
  ucomisd -0x118(%rbp),%xmm0
  jne    L2
  mov    -0xe4(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x108(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x108(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  jmp    L183
L356:
  mov    -0xec(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x78(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  jmp    L275
L172:
  mov    -0x70(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addq   $0x8,-0x70(%rbp)
L275:
  mov    -0x70(%rbp),%rax
  cmp    -0x38(%rbp),%rax
  jne    L172
  mov    0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x78(%rbp)
L183:
  mov    -0x78(%rbp),%rax
  cmp    -0x40(%rbp),%rax
  jne    L356
  jmp    L29
L2:
  movsd  D14(%rip),%xmm0
  ucomisd -0x118(%rbp),%xmm0
  jp     L26
  movsd  D14(%rip),%xmm0
  ucomisd -0x118(%rbp),%xmm0
  je     L29
L26:
  mov    -0xe4(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x108(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x108(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  jmp    L40
L245:
  mov    -0xec(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  jmp    L326
L60:
  mov    -0x60(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x118(%rbp),%xmm0
  mov    -0x60(%rbp),%rax
  movsd  %xmm0,(%rax)
  addq   $0x8,-0x60(%rbp)
L326:
  mov    -0x60(%rbp),%rax
  cmp    -0x48(%rbp),%rax
  jne    L60
  mov    0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x68(%rbp)
L40:
  mov    -0x68(%rbp),%rax
  cmp    -0x50(%rbp),%rax
  jne    L245
L29:
  mov    -0x108(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  mov    -0xf8(%rbp),%rax
  mov    %rax,-0xb8(%rbp)
  jmp    L219
L82:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0xbc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x100(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  jmp    L116
L47:
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0xb0(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x88(%rbp)
  pxor   %xmm7,%xmm7
  movapd %xmm7,%xmm8
  pxor   %xmm1,%xmm1
  movapd %xmm1,%xmm9
  pxor   %xmm3,%xmm3
  movapd %xmm3,%xmm10
  cmpl   $0x4,-0xe8(%rbp)
  jle    L7
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm4
  movapd %xmm4,%xmm6
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm5
  movapd %xmm5,%xmm0
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm2
  movapd %xmm2,%xmm11
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm7
  movapd %xmm7,%xmm1
  addq   $0x8,-0x98(%rbp)
  addq   $0x8,-0x90(%rbp)
  addq   $0x8,-0x88(%rbp)
  addq   $0x8,-0xa0(%rbp)
L187:
  movapd %xmm6,%xmm7
  movapd %xmm1,%xmm5
  mulsd  %xmm5,%xmm7
  movapd %xmm0,%xmm6
  mulsd  %xmm5,%xmm6
  movapd %xmm11,%xmm1
  mulsd  %xmm1,%xmm5
  movapd %xmm8,%xmm2
  addsd  %xmm7,%xmm2
  movapd %xmm9,%xmm3
  addsd  %xmm6,%xmm3
  movapd %xmm10,%xmm4
  addsd  %xmm5,%xmm4
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm6
  mulsd  %xmm6,%xmm7
  mulsd  %xmm6,%xmm5
  mulsd  %xmm1,%xmm6
  addsd  %xmm7,%xmm2
  addsd  %xmm5,%xmm3
  addsd  %xmm6,%xmm4
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm6
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mulsd  %xmm7,%xmm6
  mulsd  %xmm7,%xmm1
  mulsd  %xmm5,%xmm7
  addsd  %xmm6,%xmm2
  addsd  %xmm1,%xmm3
  addsd  %xmm7,%xmm4
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm6
  mov    -0xa0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm1,%xmm7
  mulsd  %xmm1,%xmm5
  mulsd  %xmm6,%xmm1
  addsd  %xmm7,%xmm2
  movapd %xmm2,%xmm8
  addsd  %xmm5,%xmm3
  movapd %xmm3,%xmm9
  addsd  %xmm1,%xmm4
  movapd %xmm4,%xmm10
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm6
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm5
  movapd %xmm5,%xmm0
  mov    -0x88(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm7
  movapd %xmm7,%xmm11
  mov    -0xa0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  addq   $0x20,-0xa0(%rbp)
  addq   $0x20,-0x98(%rbp)
  addq   $0x20,-0x90(%rbp)
  addq   $0x20,-0x88(%rbp)
  mov    -0xa0(%rbp),%rax
  cmp    -0x18(%rbp),%rax
  jne    L187
  mulsd  %xmm1,%xmm6
  mulsd  %xmm1,%xmm5
  mulsd  %xmm7,%xmm1
  addsd  %xmm6,%xmm2
  movapd %xmm2,%xmm8
  addsd  %xmm5,%xmm3
  movapd %xmm3,%xmm9
  addsd  %xmm1,%xmm4
  movapd %xmm4,%xmm10
L7:
  mov    -0xd0(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L163
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm2
  mulsd  %xmm2,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm0,%xmm6
  movapd %xmm8,%xmm3
  addsd  %xmm3,%xmm6
  mulsd  %xmm2,%xmm4
  movapd %xmm4,%xmm0
  movapd %xmm0,%xmm4
  movapd %xmm9,%xmm3
  addsd  %xmm3,%xmm4
  mulsd  %xmm7,%xmm2
  movapd %xmm2,%xmm0
  movapd %xmm0,%xmm2
  movapd %xmm10,%xmm3
  addsd  %xmm3,%xmm2
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mulsd  %xmm3,%xmm1
  movapd %xmm1,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm6
  mulsd  %xmm3,%xmm5
  movapd %xmm5,%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm4,%xmm1
  mulsd  %xmm7,%xmm3
  movapd %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm3
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm5
  mov    -0xa0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm4
  mulsd  %xmm4,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm6,%xmm3
  mulsd  %xmm4,%xmm7
  movapd %xmm7,%xmm0
  movapd %xmm0,%xmm6
  addsd  %xmm1,%xmm6
  mulsd  %xmm5,%xmm4
  movapd %xmm4,%xmm0
  movapd %xmm0,%xmm4
  addsd  %xmm2,%xmm4
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm5
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm7
  mov    -0xa0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm2
  mulsd  %xmm2,%xmm5
  movapd %xmm5,%xmm0
  addsd  %xmm3,%xmm0
  movapd %xmm0,%xmm8
  mulsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm9
  mulsd  %xmm7,%xmm2
  movapd %xmm2,%xmm0
  addsd  %xmm4,%xmm0
  movapd %xmm0,%xmm10
  addq   $0x20,-0xa0(%rbp)
  addq   $0x20,-0x98(%rbp)
  addq   $0x20,-0x90(%rbp)
  addq   $0x20,-0x88(%rbp)
L163:
  mov    -0xd0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L18
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm3
  mulsd  %xmm3,%xmm2
  movapd %xmm2,%xmm0
  movapd %xmm0,%xmm2
  movapd %xmm8,%xmm6
  addsd  %xmm6,%xmm2
  mulsd  %xmm3,%xmm4
  movapd %xmm4,%xmm0
  movapd %xmm0,%xmm6
  movapd %xmm9,%xmm4
  addsd  %xmm4,%xmm6
  mulsd  %xmm1,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm0,%xmm3
  movapd %xmm10,%xmm4
  addsd  %xmm4,%xmm3
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mulsd  %xmm4,%xmm7
  movapd %xmm7,%xmm0
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm8
  mulsd  %xmm4,%xmm5
  movapd %xmm5,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm9
  mulsd  %xmm1,%xmm4
  movapd %xmm4,%xmm0
  addsd  %xmm3,%xmm0
  movapd %xmm0,%xmm10
  addq   $0x10,-0xa0(%rbp)
  addq   $0x10,-0x98(%rbp)
  addq   $0x10,-0x90(%rbp)
  addq   $0x10,-0x88(%rbp)
L18:
  mov    -0xd0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L227
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm5
  mulsd  %xmm5,%xmm2
  movapd %xmm2,%xmm0
  movapd %xmm8,%xmm2
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm8
  mulsd  %xmm5,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm9,%xmm2
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm9
  mulsd  %xmm4,%xmm5
  movapd %xmm5,%xmm0
  movapd %xmm10,%xmm2
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm10
L227:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm8,%xmm0
  mulsd  -0x110(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movapd %xmm9,%xmm0
  mulsd  -0x110(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movapd %xmm10,%xmm0
  mulsd  -0x110(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xd8(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0xb0(%rbp)
  addq   $0x18,-0x80(%rbp)
L116:
  mov    -0x80(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L47
  mov    -0xd4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0xa8(%rbp)
  mov    -0xdc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0xb8(%rbp)
L219:
  mov    -0xa8(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jne    L82
  mov    -0x108(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  mov    -0xf8(%rbp),%rax
  mov    %rax,-0xb8(%rbp)
  jmp    L90
L10:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x30(%rbp)
  mov    -0xbc(%rbp),%eax
  imul   0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0xbc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x80(%rbp)
  mov    -0xc0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L51
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0xb0(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x90(%rbp)
  pxor   %xmm3,%xmm3
  movapd %xmm3,%xmm8
  pxor   %xmm2,%xmm2
  movapd %xmm2,%xmm9
  cmpl   $0x4,-0xe8(%rbp)
  jle    L238
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm3
  movapd %xmm3,%xmm1
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm3
  addq   $0x8,-0x98(%rbp)
  addq   $0x8,-0x90(%rbp)
  addq   $0x8,-0xa0(%rbp)
L53:
  movapd %xmm1,%xmm4
  movapd %xmm3,%xmm1
  mulsd  %xmm1,%xmm4
  mulsd  %xmm2,%xmm1
  movapd %xmm8,%xmm5
  addsd  %xmm4,%xmm5
  movapd %xmm9,%xmm6
  addsd  %xmm1,%xmm6
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm2
  mulsd  %xmm2,%xmm3
  mulsd  %xmm4,%xmm2
  addsd  %xmm3,%xmm5
  addsd  %xmm2,%xmm6
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mulsd  %xmm3,%xmm2
  mulsd  %xmm4,%xmm3
  addsd  %xmm2,%xmm5
  addsd  %xmm3,%xmm6
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm3
  mov    -0xa0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm4
  mulsd  %xmm4,%xmm1
  mulsd  %xmm3,%xmm4
  addsd  %xmm1,%xmm5
  movapd %xmm5,%xmm8
  addsd  %xmm4,%xmm6
  movapd %xmm6,%xmm9
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm4
  movapd %xmm4,%xmm2
  mov    -0xa0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm7
  movapd %xmm7,%xmm3
  addq   $0x20,-0xa0(%rbp)
  addq   $0x20,-0x98(%rbp)
  addq   $0x20,-0x90(%rbp)
  mov    -0xa0(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jne    L53
  mulsd  %xmm7,%xmm1
  mulsd  %xmm4,%xmm7
  addsd  %xmm1,%xmm5
  movapd %xmm5,%xmm8
  addsd  %xmm7,%xmm6
  movapd %xmm6,%xmm9
L238:
  mov    -0xd0(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L210
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm6
  mulsd  %xmm6,%xmm7
  movapd %xmm7,%xmm0
  movapd %xmm0,%xmm5
  movapd %xmm8,%xmm3
  addsd  %xmm3,%xmm5
  mulsd  %xmm2,%xmm6
  movapd %xmm6,%xmm0
  movapd %xmm0,%xmm6
  movapd %xmm9,%xmm2
  addsd  %xmm2,%xmm6
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mulsd  %xmm7,%xmm4
  movapd %xmm4,%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm5,%xmm2
  mulsd  %xmm1,%xmm7
  movapd %xmm7,%xmm0
  movapd %xmm0,%xmm7
  addsd  %xmm6,%xmm7
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm3
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm5
  mov    -0xa0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm6
  mulsd  %xmm6,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm2,%xmm1
  mulsd  %xmm5,%xmm6
  movapd %xmm6,%xmm0
  movapd %xmm0,%xmm6
  addsd  %xmm7,%xmm6
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm4
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm7
  mov    -0xa0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm5
  mulsd  %xmm5,%xmm4
  movapd %xmm4,%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm8
  mulsd  %xmm7,%xmm5
  movapd %xmm5,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm9
  addq   $0x20,-0xa0(%rbp)
  addq   $0x20,-0x98(%rbp)
  addq   $0x20,-0x90(%rbp)
L210:
  mov    -0xd0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L335
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm2
  mulsd  %xmm2,%xmm5
  movapd %xmm5,%xmm0
  movapd %xmm0,%xmm6
  movapd %xmm8,%xmm5
  addsd  %xmm5,%xmm6
  mulsd  %xmm3,%xmm2
  movapd %xmm2,%xmm0
  movapd %xmm0,%xmm2
  movapd %xmm9,%xmm5
  addsd  %xmm5,%xmm2
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mulsd  %xmm3,%xmm7
  movapd %xmm7,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm8
  mulsd  %xmm4,%xmm3
  movapd %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm9
  addq   $0x10,-0xa0(%rbp)
  addq   $0x10,-0x98(%rbp)
  addq   $0x10,-0x90(%rbp)
L335:
  mov    -0xd0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L211
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm4
  mulsd  %xmm4,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm8,%xmm2
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm8
  mulsd  %xmm6,%xmm4
  movapd %xmm4,%xmm0
  movapd %xmm9,%xmm6
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm9
L211:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm8,%xmm0
  mulsd  -0x110(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x28(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movapd %xmm9,%xmm0
  mulsd  -0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x18(%rbp),%eax
  add    %eax,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0xb0(%rbp)
  addq   $0x10,-0x80(%rbp)
L51:
  mov    -0xc0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L39
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0xb0(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  pxor   %xmm6,%xmm6
  movapd %xmm6,%xmm8
  cmpl   $0x4,-0xe8(%rbp)
  jle    L214
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm5
  movapd %xmm5,%xmm4
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm6
  movapd %xmm6,%xmm2
  addq   $0x8,-0x98(%rbp)
  addq   $0x8,-0xa0(%rbp)
L361:
  movapd %xmm2,%xmm5
  movapd %xmm4,%xmm2
  mulsd  %xmm2,%xmm5
  movapd %xmm8,%xmm7
  addsd  %xmm5,%xmm7
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm7
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm6
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mulsd  %xmm6,%xmm4
  addsd  %xmm4,%xmm7
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0xa0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm7
  movapd %xmm7,%xmm8
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm6
  movapd %xmm6,%xmm4
  mov    -0xa0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movapd %xmm1,%xmm2
  addq   $0x20,-0xa0(%rbp)
  addq   $0x20,-0x98(%rbp)
  mov    -0xa0(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jne    L361
  mulsd  %xmm6,%xmm1
  addsd  %xmm1,%xmm7
  movapd %xmm7,%xmm8
L214:
  mov    -0xd0(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L372
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  movapd %xmm0,%xmm7
  movapd %xmm8,%xmm3
  addsd  %xmm3,%xmm7
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm7,%xmm3
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  mov    -0xa0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm7,%xmm0
  movapd %xmm0,%xmm5
  addsd  %xmm3,%xmm5
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm4
  mov    -0xa0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  %xmm5,%xmm0
  movapd %xmm0,%xmm8
  addq   $0x20,-0xa0(%rbp)
  addq   $0x20,-0x98(%rbp)
L372:
  mov    -0xd0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L156
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm5,%xmm0
  movapd %xmm0,%xmm6
  movapd %xmm8,%xmm2
  addsd  %xmm2,%xmm6
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mov    -0xa0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm7,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm8
  addq   $0x10,-0xa0(%rbp)
  addq   $0x10,-0x98(%rbp)
L156:
  mov    -0xd0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L141
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm6,%xmm0
  movapd %xmm8,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm8
L141:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm8,%xmm0
  mulsd  -0x110(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
L39:
  mov    -0xd4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0xa8(%rbp)
  mov    -0xdc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0xb8(%rbp)
L90:
  mov    -0xa8(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jne    L10
  nop
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D14
datatype: f64

tool: D14: 1

assistant: ```c
void mm_double_NT_c(const int M, const int K, const int N, const double *const A, const double *const B, double *const C, const int Astride, const int Bstride, const int Cstride, const double alpha, const double beta) {
  const double *a;
  const double *b;
  double *c;
  const double *ap_0;
  const double *bp_0, *bp_1, *bp_2;
  double *cp;
  const int A_sbs_stride = Astride * 1;
  const int B_sbs_stride = Bstride * 3;
  const int C_sbs_stride = Cstride * 1;
  const int k_marg_el = ((K >= 5) ? ((K - 1) & 3) : K);
  const int k_norm = K - k_marg_el;
  const int m_marg_el = M & 0;
  const int m_norm = M - m_marg_el;
  const int n_marg_el = N % 3;
  const int n_norm = N - n_marg_el;
  double *const c_endp = C + m_norm * Cstride;
  register double c0_0, c0_1, c0_2;
  register double t0_0, t0_1, t0_2;
  if (beta == 0.0) {
    double *cprb, *cpre, *cp, *cpe;
    cpre = C + M * Cstride;
    for (cprb = C; cprb != cpre; cprb += Cstride) {
      cpe = cprb + N;
      for (cp = cprb; cp != cpe; cp++) {
        *cp = 0.0;
      }
    }
  } else if (beta != 1.0) {
    double *cprb, *cpre, *cp, *cpe;
    cpre = C + M * Cstride;
    for (cprb = C; cprb != cpre; cprb += Cstride) {
      cpe = cprb + N;
      for (cp = cprb; cp != cpe; cp++) {
        *cp *= (beta);
      }
    }
  }
  for (c = C, a = A; c != c_endp; c += C_sbs_stride, a += A_sbs_stride) {
    const double *const ap_endp = a + k_norm;
    double *const cp_endp = c + n_norm;
    for (b = B, cp = c; cp != cp_endp; b += B_sbs_stride, cp += 3) {
      register double _b0, _b1, _b2;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp_0 = b;
      bp_1 = bp_0 + Bstride;
      bp_2 = bp_1 + Bstride;
      c0_0 = 0.0;
      c0_1 = 0.0;
      c0_2 = 0.0;
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        bp_0 += 1;
        bp_1 += 1;
        bp_2 += 1;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[0];
          _b1 = bp_1[0];
          _b2 = bp_2[0];
          _a0 = ap_0[0];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[1];
          _b1 = bp_1[1];
          _b2 = bp_2[1];
          _a0 = ap_0[1];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[2];
          _b1 = bp_1[2];
          _b2 = bp_2[2];
          _a0 = ap_0[2];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[3];
          _b1 = bp_1[3];
          _b2 = bp_2[3];
          _a0 = ap_0[3];
          ap_0 += 4;
          bp_0 += 4;
          bp_1 += 4;
          bp_2 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t0_2 = _a0 * _b2;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c0_2 += t0_2;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _b2 = bp_2[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[2];
        _b1 = bp_1[2];
        _b2 = bp_2[2];
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[3];
        _b1 = bp_1[3];
        _b2 = bp_2[3];
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap_0 += 4;
        bp_0 += 4;
        bp_1 += 4;
        bp_2 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _b2 = bp_2[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap_0 += 2;
        bp_0 += 2;
        bp_1 += 2;
        bp_2 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      _cp[2] += alpha * c0_2;
    }
  }
  for (c = C, a = A; c != c_endp; c += C_sbs_stride, a += A_sbs_stride) {
    const double *const ap_endp = a + k_norm;
    b = B + n_norm * Bstride;
    cp = c + n_norm;
    if (n_marg_el & 0x2) {
      register double _b0, _b1;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp_0 = b;
      bp_1 = bp_0 + Bstride;
      c0_0 = 0.0;
      c0_1 = 0.0;
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        bp_0 += 1;
        bp_1 += 1;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[0];
          _b1 = bp_1[0];
          _a0 = ap_0[0];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[1];
          _b1 = bp_1[1];
          _a0 = ap_0[1];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[2];
          _b1 = bp_1[2];
          _a0 = ap_0[2];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[3];
          _b1 = bp_1[3];
          _a0 = ap_0[3];
          ap_0 += 4;
          bp_0 += 4;
          bp_1 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[2];
        _b1 = bp_1[2];
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[3];
        _b1 = bp_1[3];
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap_0 += 4;
        bp_0 += 4;
        bp_1 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap_0 += 2;
        bp_0 += 2;
        bp_1 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      b += Bstride * 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp_0 = b;
      c0_0 = 0.0;
      if (K >= 5) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        bp_0 += 1;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[0];
          _a0 = ap_0[0];
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[1];
          _a0 = ap_0[1];
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[2];
          _a0 = ap_0[2];
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[3];
          _a0 = ap_0[3];
          ap_0 += 4;
          bp_0 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        c0_0 += t0_0;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[2];
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[3];
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        ap_0 += 4;
        bp_0 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        ap_0 += 2;
        bp_0 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
    }
  }
}
```