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

```asm
<s_copy_pmat_lo>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,-0xc(%rsp)
  mov    %esi,-0x34(%rsp)
  test   %edi,%edi
  jle    L57
  mov    %rdx,%r11
  mov    %r9d,%eax
  mov    %ecx,%edx
  mov    %edi,-0x1c(%rsp)
  imul   %esi,%edx
  mov    %r8,%rbx
  xor    %r15d,%r15d
  xor    %r14d,%r14d
  imul   %esi,%eax
  movl   $0x0,-0x18(%rsp)
  movl   $0x0,-0x20(%rsp)
  mov    %edx,-0x14(%rsp)
  mov    %eax,-0x10(%rsp)
  nopl   0x0(%rax)
L35:
  mov    -0x1c(%rsp),%eax
  mov    -0x34(%rsp),%esi
  movslq %r15d,%rcx
  mov    %rcx,-0x30(%rsp)
  movslq %r14d,%rcx
  mov    -0x18(%rsp),%edi
  cmp    %esi,%eax
  mov    %rcx,-0x28(%rsp)
  cmovle %eax,%esi
  mov    -0x20(%rsp),%eax
  xor    %r8d,%r8d
  add    %esi,%eax
  test   %eax,%eax
  jle    L84
  nopw   0x0(%rax,%rax,1)
L127:
  xor    %eax,%eax
  test   %edi,%edi
  cmovns %edi,%eax
  cmp    %esi,%eax
  jge    L76
  mov    -0x28(%rsp),%r13
  mov    -0x30(%rsp),%rcx
  movslq %r8d,%rbp
  movslq %eax,%rdx
  lea    (%rdx,%rbp,1),%r9
  mov    %esi,%r10d
  add    %r9,%rcx
  lea    0x1(%r9,%r13,1),%r9
  sub    %eax,%r10d
  lea    (%rbx,%rcx,4),%rcx
  shl    $0x2,%r9
  lea    (%r11,%r9,1),%r13
  mov    %rcx,%r12
  sub    %r13,%r12
  cmp    $0x8,%r12
  jbe    L110
  lea    -0x1(%r10),%r12d
  cmp    $0x2,%r12d
  jbe    L110
  lea    -0x4(%r11,%r9,1),%rbp
  mov    %r10d,%r9d
  xor    %edx,%edx
  shr    $0x2,%r9d
  shl    $0x4,%r9
  nopl   (%rax)
L16:
  movups 0x0(%rbp,%rdx,1),%xmm1
  movups %xmm1,(%rcx,%rdx,1)
  add    $0x10,%rdx
  cmp    %r9,%rdx
  jne    L16
  mov    %r10d,%edx
  and    $0xfffffffc,%edx
  add    %edx,%eax
  cmp    %edx,%r10d
  je     L76
  lea    (%r8,%rax,1),%edx
  lea    (%r14,%rdx,1),%ecx
  add    %r15d,%edx
  movslq %ecx,%rcx
  movslq %edx,%rdx
  movss  (%r11,%rcx,4),%xmm0
  movss  %xmm0,(%rbx,%rdx,4)
  lea    0x1(%rax),%edx
  cmp    %edx,%esi
  jle    L76
  add    %r8d,%edx
  add    $0x2,%eax
  lea    (%r14,%rdx,1),%ecx
  add    %r15d,%edx
  movslq %ecx,%rcx
  movslq %edx,%rdx
  movss  (%r11,%rcx,4),%xmm0
  movss  %xmm0,(%rbx,%rdx,4)
  cmp    %eax,%esi
  jle    L76
  add    %r8d,%eax
  lea    (%r14,%rax,1),%edx
  add    %r15d,%eax
  movslq %edx,%rdx
  cltq
  movss  (%r11,%rdx,4),%xmm0
  movss  %xmm0,(%rbx,%rax,4)
L76:
  add    $0x1,%edi
  add    -0x34(%rsp),%r8d
  cmp    %esi,%edi
  jne    L127
L84:
  mov    -0x34(%rsp),%edi
  add    -0x14(%rsp),%r14d
  add    %edi,-0x20(%rsp)
  add    -0x10(%rsp),%r15d
  sub    %edi,-0x1c(%rsp)
  mov    -0x20(%rsp),%eax
  sub    %edi,-0x18(%rsp)
  cmp    %eax,-0xc(%rsp)
  jg     L35
L57:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L110:
  mov    -0x28(%rsp),%rax
  add    %rbp,%rax
  add    -0x30(%rsp),%rbp
  lea    (%r11,%rax,4),%rcx
  lea    (%rbx,%rbp,4),%rax
  nopl   (%rax)
L99:
  movss  (%rcx,%rdx,4),%xmm0
  movss  %xmm0,(%rax,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%esi
  jg     L99
  jmp    L76
```

assistant: ```c
void s_copy_pmat_lo(int row, int bs, float *A, int sda, float *B, int sdb) {
  int i, ii, j, row2, row0;
  for (ii = 0; ii < row; ii += bs) {
    row2 = row - ii;
    if (bs < row2)
      row2 = bs;
    for (j = 0; j < ii + row2; j++) {
      row0 = j - ii;
      if (row0 < 0)
        row0 = 0;
      for (i = row0; i < row2; i++) {
        B[i + j * bs + ii * sdb] = A[i + j * bs + ii * sda];
      }
    }
  }
}
```