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

```asm
<pencil_sgemv_t_nn>:
  endbr64
  push   %r15
  movslq %esi,%rax
  push   %r14
  mov    %rax,%r15
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x20,%rsp
  mov    0x60(%rsp),%r14
  movslq 0x58(%rsp),%rsi
  mov    %rax,-0x68(%rsp)
  movslq %r8d,%rax
  mov    %rcx,-0x58(%rsp)
  mov    %r9,-0x50(%rsp)
  mov    %rax,-0x70(%rsp)
  test   %edi,%edi
  jle    L81
  mov    %edi,%r10d
  movaps %xmm0,%xmm3
  lea    0x0(,%rsi,4),%rcx
  xor    %edx,%edx
  mov    %r14,%rax
  nopl   0x0(%rax)
L128:
  movss  (%rax),%xmm0
  add    $0x1,%edx
  mulss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  add    %rcx,%rax
  cmp    %edx,%r10d
  jne    L128
  test   %r15d,%r15d
  jle    L81
  lea    -0x1(%r15),%eax
  mov    %eax,-0x48(%rsp)
  cmp    $0x2,%r15d
  jle    L181
  lea    -0x1(%r10),%eax
  lea    0x0(,%rsi,4),%rcx
  cmp    $0x4,%eax
  mov    %eax,-0x28(%rsp)
  mov    -0x70(%rsp),%rax
  jbe    L69
  test   %rcx,%rcx
  je     L69
  mov    %r10d,%ebp
  mov    %r10d,%r8d
  mov    %rsi,%rdi
  mov    -0x58(%rsp),%r9
  and    $0xfffffffc,%ebp
  shr    $0x2,%r8d
  movaps %xmm3,%xmm4
  mov    $0x1,%r13d
  lea    0x0(,%rax,8),%rbx
  shl    $0x2,%rax
  shl    $0x4,%rdi
  shufps $0x0,%xmm4,%xmm4
  mov    %rbx,-0x30(%rsp)
  mov    -0x50(%rsp),%rbx
  shl    $0x4,%r8
  lea    (%rbx,%rax,1),%r12
  neg    %rax
  mov    %rax,-0x40(%rsp)
  mov    -0x68(%rsp),%rax
  shl    $0x2,%rax
  mov    %rax,-0x60(%rsp)
  lea    (%r14,%rsi,8),%rax
  mov    %rax,-0x38(%rsp)
  mov    %ebp,%eax
  imul   %rcx,%rax
  add    %r14,%rax
  mov    %rax,-0x18(%rsp)
  lea    0x1(%rbp),%eax
  mov    %rax,%rbx
  mov    %eax,-0x20(%rsp)
  imul   %rcx,%rax
  add    %r14,%rax
  mov    %rax,-0x10(%rsp)
  lea    0x2(%rbp),%eax
  mov    %rax,%rdx
  mov    %eax,-0x1c(%rsp)
  imul   %rcx,%rax
  add    %r14,%rax
  mov    %rax,0x8(%rsp)
  movslq %ebp,%rax
  mov    %rax,-0x8(%rsp)
  movslq %ebx,%rax
  mov    %rax,(%rsp)
  movslq %edx,%rax
  mov    %rax,0x10(%rsp)
L239:
  mov    -0x40(%rsp),%rax
  movss  (%r12),%xmm2
  xor    %r11d,%r11d
  mov    -0x38(%rsp),%rdx
  movss  (%r12,%rax,1),%xmm6
  mov    -0x60(%rsp),%rax
  shufps $0x0,%xmm2,%xmm2
  movaps %xmm6,%xmm5
  lea    (%r9,%rax,1),%rbx
  mov    %r14,%rax
  shufps $0x0,%xmm5,%xmm5
  nopl   (%rax)
L184:
  movss  (%rdx,%rcx,1),%xmm0
  movss  (%rdx),%xmm1
  movss  (%rax,%rcx,1),%xmm7
  unpcklps %xmm0,%xmm1
  movss  (%rax),%xmm0
  unpcklps %xmm7,%xmm0
  movlhps %xmm1,%xmm0
  movups (%r9,%r11,1),%xmm1
  mulps  %xmm4,%xmm1
  mulps  %xmm5,%xmm1
  addps  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  movss  %xmm0,(%rax)
  shufps $0x55,%xmm0,%xmm1
  movss  %xmm1,(%rax,%rcx,1)
  movaps %xmm0,%xmm1
  unpckhps %xmm0,%xmm1
  shufps $0xff,%xmm0,%xmm0
  movss  %xmm1,(%rdx)
  movss  %xmm0,(%rdx,%rcx,1)
  movss  (%rdx),%xmm1
  movss  (%rax,%rcx,1),%xmm7
  unpcklps %xmm0,%xmm1
  movss  (%rax),%xmm0
  unpcklps %xmm7,%xmm0
  movlhps %xmm1,%xmm0
  movups (%rbx,%r11,1),%xmm1
  add    $0x10,%r11
  mulps  %xmm4,%xmm1
  mulps  %xmm2,%xmm1
  addps  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  movss  %xmm0,(%rax)
  shufps $0x55,%xmm0,%xmm1
  movss  %xmm1,(%rax,%rcx,1)
  movaps %xmm0,%xmm1
  add    %rdi,%rax
  unpckhps %xmm0,%xmm1
  shufps $0xff,%xmm0,%xmm0
  movss  %xmm1,(%rdx)
  movss  %xmm0,(%rdx,%rcx,1)
  add    %rdi,%rdx
  cmp    %r8,%r11
  jne    L184
  cmp    %ebp,%r10d
  je     L51
  mov    -0x8(%rsp),%rax
  movss  (%r12),%xmm2
  mov    -0x18(%rsp),%rdx
  movss  (%rbx,%rax,4),%xmm1
  movss  (%r9,%rax,4),%xmm0
  mulss  %xmm3,%xmm1
  mulss  %xmm3,%xmm0
  mulss  %xmm2,%xmm1
  mulss  %xmm6,%xmm0
  addss  (%rdx),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rdx)
  cmp    -0x20(%rsp),%r10d
  jle    L51
  mov    (%rsp),%rax
  mov    -0x10(%rsp),%rdx
  movss  (%rbx,%rax,4),%xmm1
  movss  (%r9,%rax,4),%xmm0
  mulss  %xmm3,%xmm1
  mulss  %xmm3,%xmm0
  mulss  %xmm2,%xmm1
  mulss  %xmm6,%xmm0
  addss  (%rdx),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rdx)
  cmp    -0x1c(%rsp),%r10d
  jle    L51
  mov    0x10(%rsp),%rax
  mov    0x8(%rsp),%rdx
  movss  (%rbx,%rax,4),%xmm1
  movss  (%r9,%rax,4),%xmm0
  mulss  %xmm3,%xmm1
  mulss  %xmm3,%xmm0
  mulss  %xmm2,%xmm1
  mulss  %xmm6,%xmm0
  addss  (%rdx),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rdx)
L51:
  mov    -0x60(%rsp),%rax
  lea    0x1(%r13),%r11d
  add    -0x30(%rsp),%r12
  add    $0x2,%r13d
  lea    (%rax,%rbx,1),%r9
  cmp    %r13d,-0x48(%rsp)
  jg     L239
L168:
  mov    %rsi,%rcx
  shl    $0x2,%rcx
  je     L185
  cmpl   $0x13,-0x28(%rsp)
  jbe    L185
  mov    %rsi,%rdi
  lea    (%r14,%rsi,8),%rsi
  mov    -0x70(%rsp),%rax
  movslq %r11d,%r9
  mov    %rsi,-0x70(%rsp)
  mov    %r10d,%esi
  mov    -0x68(%rsp),%rdx
  movaps %xmm3,%xmm4
  and    $0xfffffffc,%esi
  shl    $0x2,%rax
  mov    %r14,0x60(%rsp)
  shufps $0x0,%xmm4,%xmm4
  lea    0x1(%rsi),%r12d
  lea    0x2(%rsi),%r13d
  mov    %esi,%ebp
  mov    %esi,-0x68(%rsp)
  mov    %r12,%r8
  movslq %esi,%rsi
  mov    %rax,%rbx
  mov    %rax,-0x60(%rsp)
  mov    %rsi,-0x48(%rsp)
  mov    %r10d,%eax
  movslq %r8d,%rsi
  shl    $0x2,%rdx
  mov    %r13d,-0x40(%rsp)
  shr    $0x2,%eax
  imul   %r9,%rbx
  shl    $0x4,%rdi
  mov    %rsi,-0x38(%rsp)
  movslq -0x40(%rsp),%rsi
  shl    $0x4,%rax
  imul   %rcx,%rbp
  imul   %rcx,%r13
  add    -0x50(%rsp),%rbx
  mov    %r12d,-0x50(%rsp)
  imul   %rcx,%r12
  mov    %rax,-0x28(%rsp)
  mov    %rsi,-0x30(%rsp)
  imul   %rdx,%r9
  add    %r14,%rbp
  add    -0x58(%rsp),%r9
  add    %r14,%r13
  mov    %r15d,-0x58(%rsp)
  mov    %rax,%r15
  add    %r14,%r12
  mov    %rdx,%r14
  nopl   0x0(%rax,%rax,1)
L188:
  movss  (%rbx),%xmm6
  mov    0x60(%rsp),%rdx
  lea    (%r15,%r9,1),%r8
  mov    %r9,%rsi
  mov    -0x70(%rsp),%rax
  movaps %xmm6,%xmm5
  shufps $0x0,%xmm5,%xmm5
  nopl   0x0(%rax)
L11:
  movss  (%rax,%rcx,1),%xmm0
  movss  (%rax),%xmm1
  add    $0x10,%rsi
  movss  (%rdx,%rcx,1),%xmm2
  unpcklps %xmm0,%xmm1
  movss  (%rdx),%xmm0
  unpcklps %xmm2,%xmm0
  movlhps %xmm1,%xmm0
  movups -0x10(%rsi),%xmm1
  mulps  %xmm4,%xmm1
  mulps  %xmm5,%xmm1
  addps  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  movss  %xmm0,(%rdx)
  shufps $0x55,%xmm0,%xmm1
  movss  %xmm1,(%rdx,%rcx,1)
  movaps %xmm0,%xmm1
  add    %rdi,%rdx
  unpckhps %xmm0,%xmm1
  shufps $0xff,%xmm0,%xmm0
  movss  %xmm1,(%rax)
  movss  %xmm0,(%rax,%rcx,1)
  add    %rdi,%rax
  cmp    %r8,%rsi
  jne    L11
  cmp    -0x68(%rsp),%r10d
  je     L103
  mov    -0x48(%rsp),%rax
  movss  (%r9,%rax,4),%xmm0
  mulss  %xmm3,%xmm0
  mulss  %xmm6,%xmm0
  addss  0x0(%rbp),%xmm0
  movss  %xmm0,0x0(%rbp)
  cmp    -0x50(%rsp),%r10d
  jle    L103
  mov    -0x38(%rsp),%rax
  movss  (%r9,%rax,4),%xmm0
  mulss  %xmm3,%xmm0
  mulss  %xmm6,%xmm0
  addss  (%r12),%xmm0
  movss  %xmm0,(%r12)
  cmp    -0x40(%rsp),%r10d
  jle    L103
  mov    -0x30(%rsp),%rax
  movss  (%r9,%rax,4),%xmm0
  mulss  %xmm3,%xmm0
  mulss  %xmm6,%xmm0
  addss  0x0(%r13),%xmm0
  movss  %xmm0,0x0(%r13)
L103:
  add    $0x1,%r11d
  add    -0x60(%rsp),%rbx
  add    %r14,%r9
  cmp    %r11d,-0x58(%rsp)
  jg     L188
L81:
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L69:
  mov    -0x58(%rsp),%rdx
  lea    0x0(,%rax,8),%r13
  mov    -0x68(%rsp),%rax
  mov    %r10d,%r8d
  mov    -0x50(%rsp),%rbx
  mov    $0x1,%ebp
  mov    %rdx,%rdi
  lea    0x0(,%rax,8),%r12
  lea    (%rdx,%rax,4),%rdx
L115:
  mov    -0x70(%rsp),%rax
  movss  (%rbx),%xmm4
  mov    %r14,%r9
  movss  (%rbx,%rax,4),%xmm2
  xor    %eax,%eax
  nopl   0x0(%rax)
L237:
  movss  (%rdx,%rax,4),%xmm1
  movss  (%rdi,%rax,4),%xmm0
  add    $0x1,%rax
  mulss  %xmm3,%xmm1
  mulss  %xmm3,%xmm0
  mulss  %xmm2,%xmm1
  mulss  %xmm4,%xmm0
  addss  (%r9),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%r9)
  add    %rcx,%r9
  cmp    %r8,%rax
  jne    L237
  lea    0x1(%rbp),%r11d
  add    %r13,%rbx
  add    $0x2,%ebp
  add    %r12,%rdi
  add    %r12,%rdx
  cmp    %ebp,-0x48(%rsp)
  jg     L115
  jmp    L168
L181:
  lea    -0x1(%r10),%eax
  xor    %r11d,%r11d
  mov    %eax,-0x28(%rsp)
  jmp    L168
L185:
  mov    -0x68(%rsp),%r8
  mov    -0x70(%rsp),%rsi
  movslq %r11d,%rax
  mov    $0xfffffffffffffffc,%r10
  mov    -0x28(%rsp),%edx
  mov    %rax,%rdi
  shl    $0x2,%r8
  shl    $0x2,%rsi
  shl    $0x2,%rdx
  imul   %r8,%rax
  add    -0x58(%rsp),%rax
  imul   %rsi,%rdi
  lea    0x4(%rdx,%rax,1),%r9
  add    -0x50(%rsp),%rdi
  sub    %rdx,%r10
  nopl   0x0(%rax,%rax,1)
L177:
  movss  (%rdi),%xmm1
  mov    %r14,%rdx
  lea    (%r10,%r9,1),%rax
  nopl   0x0(%rax,%rax,1)
L34:
  movss  (%rax),%xmm0
  add    $0x4,%rax
  mulss  %xmm3,%xmm0
  mulss  %xmm1,%xmm0
  addss  (%rdx),%xmm0
  movss  %xmm0,(%rdx)
  add    %rcx,%rdx
  cmp    %r9,%rax
  jne    L34
  add    $0x1,%r11d
  add    %rsi,%rdi
  add    %r8,%r9
  cmp    %r11d,%r15d
  jg     L177
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void pencil_sgemv_t_nn(int m_9793_10025, int n_9794_10026, float alpha_9795_10027, int ldA_9796_10028, float A_9797_10029[restrict const m_9793_10025][n_9794_10026], int incX_9798_10030, float X_9799_10031[restrict const n_9794_10026][incX_9798_10030], float beta_9800_10032, int incY_9801_10033, float Y_9802_10034[restrict const m_9793_10025][incY_9801_10033]) {
#pragma scop
  {
#pragma pencil independent
    for (int i_2515_2299_5268_12053 = 0; i_2515_2299_5268_12053 <= (m_9793_10025 - 1); i_2515_2299_5268_12053 += 1) {
      Y_9802_10034[i_2515_2299_5268_12053][0] = (Y_9802_10034[i_2515_2299_5268_12053][0] * beta_9800_10032);
    }
    for (int i_2517_2300_5269_12055 = 0; i_2517_2300_5269_12055 <= (n_9794_10026 - 1); i_2517_2300_5269_12055 += 1) {
      for (int i_2516_2301_5270_12054 = 0; i_2516_2301_5270_12054 <= (m_9793_10025 - 1); i_2516_2301_5270_12054 += 1) {
        Y_9802_10034[i_2516_2301_5270_12054][0] = (Y_9802_10034[i_2516_2301_5270_12054][0] + ((alpha_9795_10027 * A_9797_10029[i_2517_2300_5269_12055][i_2516_2301_5270_12054]) * X_9799_10031[i_2517_2300_5269_12055][0]));
      }
    }
  }
#pragma endscop
}
```