user: 请从给定的汇编指令推导出C源代码：

```asm
<pencil_dsyr2k_nn_u>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  movslq %edi,%rbx
  test   %ebx,%ebx
  jle    L33
  movslq %esi,%rbp
  mov    0x40(%rsp),%r15
  mov    %r9,%rdi
  mov    %rbx,%r13
  mov    %rbp,%r10
  movapd %xmm0,%xmm4
  mov    %rcx,%rsi
  sub    $0x1,%r13d
  mov    %r15,-0x18(%rsp)
  mov    %r10d,%r11d
  shl    $0x3,%rbp
  xor    %r14d,%r14d
  lea    0x8(,%rbx,8),%rax
  and    $0xfffffffe,%r11d
  shl    $0x3,%rbx
  pxor   %xmm5,%xmm5
  mov    %rax,-0x10(%rsp)
  mov    %r10d,%eax
  shr    %eax
  lea    -0x1(%rax),%r9d
  add    $0x1,%r9
  shl    $0x4,%r9
  xchg   %ax,%ax
L54:
  mov    %r13d,%eax
  mov    -0x18(%rsp),%r8
  mov    %rsi,%rcx
  mov    %rdi,%rdx
  add    %r14,%rax
  lea    0x8(%r15,%rax,8),%r12
  cs nopw 0x0(%rax,%rax,1)
L30:
  movapd %xmm5,%xmm0
  test   %r10d,%r10d
  jle    L49
  xor    %eax,%eax
  movapd %xmm5,%xmm0
  cmp    $0x1,%r10d
  je     L4
  nopl   (%rax)
L60:
  movupd (%rcx,%rax,1),%xmm3
  movupd (%rdi,%rax,1),%xmm6
  movupd (%rdx,%rax,1),%xmm2
  movupd (%rsi,%rax,1),%xmm7
  add    $0x10,%rax
  mulpd  %xmm6,%xmm3
  mulpd  %xmm7,%xmm2
  addpd  %xmm2,%xmm3
  addsd  %xmm3,%xmm0
  unpckhpd %xmm3,%xmm3
  addsd  %xmm3,%xmm0
  cmp    %rax,%r9
  jne    L60
  cmp    %r11d,%r10d
  je     L49
  movslq %r11d,%rax
L4:
  movsd  (%rcx,%rax,8),%xmm2
  movsd  (%rdx,%rax,8),%xmm3
  mulsd  (%rdi,%rax,8),%xmm2
  mulsd  (%rsi,%rax,8),%xmm3
  addsd  %xmm3,%xmm2
  addsd  %xmm2,%xmm0
L49:
  movsd  (%r8),%xmm2
  mulsd  %xmm4,%xmm0
  add    $0x8,%r8
  add    %rbx,%rdx
  add    %rbp,%rcx
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  movsd  %xmm0,-0x8(%r8)
  cmp    %r12,%r8
  jne    L30
  sub    $0x1,%r13d
  mov    -0x10(%rsp),%rdx
  add    $0x1,%r14
  add    %rbx,%rdi
  add    %rdx,-0x18(%rsp)
  add    %rbp,%rsi
  add    %rbx,%r15
  cmp    $0xffffffff,%r13d
  jne    L54
L33:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void pencil_dsyr2k_nn_u(int n_255_607, int k_256_608, double alpha_257_609, int ldA_258_610, double A_259_611[restrict const n_255_607][k_256_608], int ldB_260_612, double B_261_613[restrict const k_256_608][n_255_607], double beta_262_614, int ldCT_263_615, double CT_264_616[restrict const n_255_607][n_255_607]) {
#pragma scop
  {
#pragma pencil independent
    for (int i_323_273_1243_2069 = 0; i_323_273_1243_2069 <= (n_255_607 - 1); i_323_273_1243_2069 += 1) {
#pragma pencil independent
      for (int i_325_275_1244_2071 = 0; i_325_275_1244_2071 <= ((((n_255_607 - 1) - i_323_273_1243_2069) + 1) - 1); i_325_275_1244_2071 += 1) {
        double accum_326_276_1245_2068;
        accum_326_276_1245_2068 = 0.0;
        for (int i_327_277_1246_2070 = 0; i_327_277_1246_2070 <= (k_256_608 - 1); i_327_277_1246_2070 += 1) {
          accum_326_276_1245_2068 = (accum_326_276_1245_2068 + ((A_259_611[i_323_273_1243_2069][i_327_277_1246_2070] * B_261_613[(i_325_275_1244_2071 + i_323_273_1243_2069)][i_327_277_1246_2070]) + (B_261_613[i_323_273_1243_2069][i_327_277_1246_2070] * A_259_611[(i_325_275_1244_2071 + i_323_273_1243_2069)][i_327_277_1246_2070])));
        }
        CT_264_616[i_323_273_1243_2069][(i_323_273_1243_2069 + i_325_275_1244_2071)] = ((beta_262_614 * CT_264_616[i_323_273_1243_2069][(i_323_273_1243_2069 + i_325_275_1244_2071)]) + (alpha_257_609 * accum_326_276_1245_2068));
      }
    }
  }
#pragma endscop
}
```