user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<mm_double_TN_c>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %edi,-0xd4(%rbp)
  mov    %esi,-0xd8(%rbp)
  mov    %edx,-0xdc(%rbp)
  mov    %rcx,-0xe8(%rbp)
  mov    %r8,-0xf0(%rbp)
  mov    %r9,-0xf8(%rbp)
  movsd  %xmm0,-0x100(%rbp)
  movsd  %xmm1,-0x108(%rbp)
  mov    0x20(%rbp),%eax
  mov    %eax,-0xc4(%rbp)
  cmpl   $0x4,-0xd8(%rbp)
  jle    L231
  mov    -0xd8(%rbp),%eax
  sub    $0x1,%eax
  and    $0x3,%eax
  jmp    L181
L231:
  mov    -0xd8(%rbp),%eax
L181:
  mov    %eax,-0xc0(%rbp)
  mov    -0xd8(%rbp),%eax
  sub    -0xc0(%rbp),%eax
  mov    0x10(%rbp),%edx
  imul   %edx,%eax
  mov    %eax,-0xbc(%rbp)
  movl   $0x0,-0xb8(%rbp)
  mov    -0xd4(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  mov    %eax,-0xb4(%rbp)
  mov    -0xdc(%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,-0xb0(%rbp)
  mov    -0xdc(%rbp),%eax
  sub    -0xb0(%rbp),%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xb4(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xf8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x58(%rbp)
  pxor   %xmm0,%xmm0
  ucomisd -0x108(%rbp),%xmm0
  jp     L148
  pxor   %xmm0,%xmm0
  ucomisd -0x108(%rbp),%xmm0
  jne    L148
  mov    -0xd4(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xf8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0xf8(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  jmp    L14
L53:
  mov    -0xdc(%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    L154
L242:
  mov    -0x70(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addq   $0x8,-0x70(%rbp)
L154:
  mov    -0x70(%rbp),%rax
  cmp    -0x38(%rbp),%rax
  jne    L242
  mov    0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x78(%rbp)
L14:
  mov    -0x78(%rbp),%rax
  cmp    -0x40(%rbp),%rax
  jne    L53
  jmp    L109
L148:
  movsd  D19(%rip),%xmm0
  ucomisd -0x108(%rbp),%xmm0
  jp     L314
  movsd  D19(%rip),%xmm0
  ucomisd -0x108(%rbp),%xmm0
  je     L109
L314:
  mov    -0xd4(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xf8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0xf8(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  jmp    L269
L241:
  mov    -0xdc(%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    L260
L28:
  mov    -0x60(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x108(%rbp),%xmm0
  mov    -0x60(%rbp),%rax
  movsd  %xmm0,(%rax)
  addq   $0x8,-0x60(%rbp)
L260:
  mov    -0x60(%rbp),%rax
  cmp    -0x48(%rbp),%rax
  jne    L28
  mov    0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x68(%rbp)
L269:
  mov    -0x68(%rbp),%rax
  cmp    -0x50(%rbp),%rax
  jne    L241
L109:
  mov    -0xf8(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    -0xe8(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  jmp    L191
L374:
  mov    -0xbc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  mov    -0xf0(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0x98(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  jmp    L249
L77:
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    -0xa0(%rbp),%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,-0xd8(%rbp)
  jle    L359
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm4
  movapd %xmm4,%xmm6
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  movapd %xmm5,%xmm0
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  movapd %xmm2,%xmm11
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm7
  movapd %xmm7,%xmm1
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L153:
  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    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm6,%xmm7
  mulsd  %xmm6,%xmm5
  mulsd  %xmm1,%xmm6
  addsd  %xmm7,%xmm2
  addsd  %xmm5,%xmm3
  addsd  %xmm6,%xmm4
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm5
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm7,%xmm6
  mulsd  %xmm7,%xmm1
  mulsd  %xmm5,%xmm7
  addsd  %xmm6,%xmm2
  addsd  %xmm1,%xmm3
  addsd  %xmm7,%xmm4
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm6
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  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    -0x88(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  movapd %xmm5,%xmm0
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  movapd %xmm7,%xmm11
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  cmp    -0x18(%rbp),%rax
  jne    L153
  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
L359:
  mov    -0xc0(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L173
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm5
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm7
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L173:
  mov    -0xc0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L208
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L208:
  mov    -0xc0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L339
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm4
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%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
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L339:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm8,%xmm0
  mulsd  -0x100(%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  -0x100(%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  -0x100(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addq   $0x18,-0xa0(%rbp)
  addq   $0x18,-0x80(%rbp)
L249:
  mov    -0x80(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L77
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x98(%rbp)
  addq   $0x8,-0xa8(%rbp)
L191:
  mov    -0x98(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jne    L374
  mov    -0xf8(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    -0xe8(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  jmp    L225
L199:
  mov    -0xbc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x30(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xf0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x80(%rbp)
  mov    -0xb0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L304
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    -0xa0(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  pxor   %xmm3,%xmm3
  movapd %xmm3,%xmm8
  pxor   %xmm2,%xmm2
  movapd %xmm2,%xmm9
  cmpl   $0x4,-0xd8(%rbp)
  jle    L219
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  movapd %xmm3,%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L3:
  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    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm2,%xmm3
  mulsd  %xmm4,%xmm2
  addsd  %xmm3,%xmm5
  addsd  %xmm2,%xmm6
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm3,%xmm2
  mulsd  %xmm4,%xmm3
  addsd  %xmm2,%xmm5
  addsd  %xmm3,%xmm6
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm4,%xmm1
  mulsd  %xmm3,%xmm4
  addsd  %xmm1,%xmm5
  movapd %xmm5,%xmm8
  addsd  %xmm4,%xmm6
  movapd %xmm6,%xmm9
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  movapd %xmm4,%xmm2
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm7
  movapd %xmm7,%xmm3
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jne    L3
  mulsd  %xmm7,%xmm1
  mulsd  %xmm4,%xmm7
  addsd  %xmm1,%xmm5
  movapd %xmm5,%xmm8
  addsd  %xmm7,%xmm6
  movapd %xmm6,%xmm9
L219:
  mov    -0xc0(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L119
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm7
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L119:
  mov    -0xc0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L80
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm3
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%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    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%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
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L80:
  mov    -0xc0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L334
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm6
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%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
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L334:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm8,%xmm0
  mulsd  -0x100(%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  -0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addq   $0x10,-0xa0(%rbp)
  addq   $0x10,-0x80(%rbp)
L304:
  mov    -0xb0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L313
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    -0xa0(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  pxor   %xmm6,%xmm6
  movapd %xmm6,%xmm8
  cmpl   $0x4,-0xd8(%rbp)
  jle    L200
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm5
  movapd %xmm5,%xmm4
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm6
  movapd %xmm6,%xmm2
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L143:
  movapd %xmm2,%xmm5
  movapd %xmm4,%xmm2
  mulsd  %xmm2,%xmm5
  movapd %xmm8,%xmm7
  addsd  %xmm5,%xmm7
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm7
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm6,%xmm4
  addsd  %xmm4,%xmm7
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm7
  movapd %xmm7,%xmm8
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm6
  movapd %xmm6,%xmm4
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm1,%xmm2
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jne    L143
  mulsd  %xmm6,%xmm1
  addsd  %xmm1,%xmm7
  movapd %xmm7,%xmm8
L200:
  mov    -0xc0(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L33
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  movapd %xmm0,%xmm7
  movapd %xmm8,%xmm3
  addsd  %xmm3,%xmm7
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm7,%xmm3
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm7,%xmm0
  movapd %xmm0,%xmm5
  addsd  %xmm3,%xmm5
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  %xmm5,%xmm0
  movapd %xmm0,%xmm8
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L33:
  mov    -0xc0(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L337
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm5,%xmm0
  movapd %xmm0,%xmm6
  movapd %xmm8,%xmm2
  addsd  %xmm2,%xmm6
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm7,%xmm0
  addsd  %xmm6,%xmm0
  movapd %xmm0,%xmm8
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L337:
  mov    -0xc0(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L328
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm6,%xmm0
  movapd %xmm8,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm8
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x90(%rbp)
L328:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  movapd %xmm8,%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
L313:
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x98(%rbp)
  addq   $0x8,-0xa8(%rbp)
L225:
  mov    -0x98(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jne    L199
  nop
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D19
datatype: f64

tool: D19: 1

assistant: ```c
void mm_double_TN_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;
  const double *bp;
  double *cp;
  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) * Astride;
  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 += 1) {
    const double *const ap_endp = a + k_norm;
    double *const cp_endp = c + n_norm;
    for (b = B, cp = c; cp != cp_endp; b += 3, cp += 3) {
      register double _b0, _b1, _b2;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      c0_0 = 0.0;
      c0_1 = 0.0;
      c0_2 = 0.0;
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        _a0 = ap[0];
        bp += Bstride;
        ap += Astride;
        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];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          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];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          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];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          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];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
        } while (ap != 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];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
      }
      _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 += 1) {
    const double *const ap_endp = a + k_norm;
    b = B + n_norm;
    cp = c + n_norm;
    if (n_marg_el & 0x2) {
      register double _b0, _b1;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      c0_0 = 0.0;
      c0_1 = 0.0;
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap[0];
        bp += Bstride;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
        } while (ap != 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];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      b += 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      c0_0 = 0.0;
      if (K >= 5) {
        _b0 = bp[0];
        _a0 = ap[0];
        bp += Bstride;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
        } while (ap != ap_endp);
        t0_0 = _a0 * _b0;
        c0_0 += t0_0;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
    }
  }
}
```