user: What is the c source code of the assembly code below:

```asm
<p3dZeroPadding3D_16>:
  endbr64
  lea    (%r9,%r9,1),%eax
  push   %r15
  mov    %rsi,%r10
  xor    %esi,%esi
  push   %r14
  mov    %r9d,%r15d
  mov    %ecx,%r14d
  push   %r13
  lea    (%rax,%rdx,1),%r13d
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  mov    %r10,%rdi
  push   %rbx
  mov    %edx,%ebx
  lea    (%rax,%rcx,1),%edx
  mov    %edx,%r12d
  lea    (%rax,%r8,1),%edx
  imul   %r13d,%r12d
  sub    $0x68,%rsp
  mov    %ecx,0x28(%rsp)
  imul   %r12d,%edx
  mov    %r9d,0x38(%rsp)
  mov    %r13d,0xc(%rsp)
  mov    %r12d,0x5c(%rsp)
  movslq %edx,%rdx
  mov    %r8d,0x48(%rsp)
  add    %rdx,%rdx
  call   <memset@plt>
  mov    0x48(%rsp),%edx
  test   %edx,%edx
  jle    L15
  test   %r14d,%r14d
  jle    L15
  test   %ebx,%ebx
  jle    L15
  movslq %ebx,%rsi
  imul   %ebx,%r14d
  mov    %rax,%r10
  movslq %r15d,%rax
  mov    %rsi,0x10(%rsp)
  add    %rsi,%rsi
  imul   %r12d,%r15d
  mov    %rsi,0x18(%rsp)
  mov    %eax,%esi
  imul   %r13d,%esi
  mov    %r14d,0x58(%rsp)
  movl   $0x0,0x8(%rsp)
  movl   $0x0,0x3c(%rsp)
  movslq %esi,%rdx
  mov    %esi,0x4c(%rsp)
  add    %rdx,%rax
  mov    %rax,0x50(%rsp)
  lea    -0x1(%rbx),%eax
  mov    %eax,0x4(%rsp)
  mov    %ebx,%eax
  shr    $0x3,%eax
  lea    -0x1(%rax),%edi
  mov    %ebx,%eax
  and    $0xfffffff8,%eax
  add    $0x1,%rdi
  mov    %eax,0x2c(%rsp)
  movslq %r13d,%rax
  shl    $0x4,%rdi
  mov    %rax,0x20(%rsp)
  mov    %ebx,%eax
  and    $0x7,%eax
  mov    %eax,0x30(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x34(%rsp)
  mov    %ebx,%eax
  mov    %rax,0x40(%rsp)
  cs nopw 0x0(%rax,%rax,1)
L25:
  movslq 0x8(%rsp),%r11
  mov    0x4c(%rsp),%r9d
  movslq %r15d,%rsi
  xor    %r8d,%r8d
  add    0x50(%rsp),%rsi
  xor    %r13d,%r13d
  lea    0x0(%rbp,%r11,2),%rdx
  nopl   (%rax)
L152:
  lea    (%r10,%rsi,2),%rax
  lea    0x2(%rdx),%r12
  mov    %rax,%rcx
  sub    %r12,%rcx
  cmp    $0xc,%rcx
  jbe    L39
  cmpl   $0x2,0x4(%rsp)
  jbe    L39
  cmpl   $0x6,0x4(%rsp)
  jbe    L113
  xor    %ecx,%ecx
L137:
  movdqu (%rdx,%rcx,1),%xmm0
  movups %xmm0,(%rax,%rcx,1)
  add    $0x10,%rcx
  cmp    %rdi,%rcx
  jne    L137
  mov    0x2c(%rsp),%eax
  cmp    %ebx,%eax
  je     L100
  cmpl   $0x2,0x34(%rsp)
  mov    0x30(%rsp),%r12d
  mov    %eax,%ecx
  jbe    L164
L121:
  lea    (%r11,%rcx,1),%r14
  add    %rsi,%rcx
  mov    0x0(%rbp,%r14,2),%r14
  mov    %r14,(%r10,%rcx,2)
  mov    %r12d,%ecx
  and    $0xfffffffc,%ecx
  add    %ecx,%eax
  cmp    %ecx,%r12d
  je     L100
L164:
  mov    0x38(%rsp),%r14d
  lea    (%r8,%rax,1),%ecx
  add    0x8(%rsp),%ecx
  movslq %ecx,%rcx
  movzwl 0x0(%rbp,%rcx,2),%r12d
  lea    (%r14,%rax,1),%ecx
  add    %r9d,%ecx
  add    %r15d,%ecx
  movslq %ecx,%rcx
  mov    %r12w,(%r10,%rcx,2)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%ebx
  jle    L100
  lea    (%r8,%rcx,1),%r12d
  add    %r14d,%ecx
  add    0x8(%rsp),%r12d
  add    $0x2,%eax
  movslq %r12d,%r12
  add    %r9d,%ecx
  movzwl 0x0(%rbp,%r12,2),%r12d
  add    %r15d,%ecx
  movslq %ecx,%rcx
  mov    %r12w,(%r10,%rcx,2)
  cmp    %ebx,%eax
  jge    L100
  lea    (%r8,%rax,1),%ecx
  add    %r14d,%eax
  add    0x8(%rsp),%ecx
  movslq %ecx,%rcx
  add    %r9d,%eax
  movzwl 0x0(%rbp,%rcx,2),%ecx
  add    %r15d,%eax
  cltq
  mov    %cx,(%r10,%rax,2)
L100:
  add    $0x1,%r13d
  add    0x18(%rsp),%rdx
  add    %ebx,%r8d
  add    0xc(%rsp),%r9d
  add    0x10(%rsp),%r11
  add    0x20(%rsp),%rsi
  cmp    %r13d,0x28(%rsp)
  jne    L152
  addl   $0x1,0x3c(%rsp)
  mov    0x58(%rsp),%edx
  mov    0x3c(%rsp),%eax
  add    %edx,0x8(%rsp)
  add    0x5c(%rsp),%r15d
  cmp    %eax,0x48(%rsp)
  jne    L25
L15:
  add    $0x68,%rsp
  mov    $0x2,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L39:
  mov    0x40(%rsp),%r14
  xor    %ecx,%ecx
  nopw   0x0(%rax,%rax,1)
L105:
  movzwl (%rdx,%rcx,2),%r12d
  mov    %r12w,(%rax,%rcx,2)
  add    $0x1,%rcx
  cmp    %r14,%rcx
  jne    L105
  jmp    L100
L113:
  mov    %ebx,%r12d
  xor    %ecx,%ecx
  xor    %eax,%eax
  jmp    L121
```

assistant: ```c
int p3dZeroPadding3D_16(unsigned short *in_rev, unsigned short *out_rev, const int dimx, const int dimy, const int dimz, const int size, int (*wr_log)(const char *, ...), int (*wr_progress)(const int, ...)) {
  int a_dimx, a_dimy, a_dimz;
  int i, j, k;
  a_dimx = dimx + size * 2;
  a_dimy = dimy + size * 2;
  a_dimz = dimz + size * 2;
  memset(out_rev, 0, a_dimx * a_dimy * a_dimz * sizeof(unsigned short));
  for (k = 0; k < dimz; k++)
    for (j = 0; j < dimy; j++)
      for (i = 0; i < dimx; i++)
        out_rev[((j + size) * (a_dimx) + (i + size) + (k + size) * (a_dimx) * (a_dimy))] = in_rev[((j) * (dimx) + (i) + (k) * (dimx) * (dimy))];
  return 2;
}
```