user: What would the C source look like for the assembly code provided here?

```asm
<transform_1d_odd_l1>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edx,%eax
  mov    %r8,-0x10(%rsp)
  sar    %edx
  test   %edx,%edx
  jle    L2
  mov    %rdi,%r9
  mov    %rsi,%rbp
  lea    (%rax,%rcx,1),%esi
  movslq %esi,%rsi
  lea    (%rdi,%rsi,4),%rbx
  mov    %rbx,-0x38(%rsp)
  lea    (%rax,%rax,2),%edi
  lea    (%rdi,%rcx,1),%esi
  movslq %esi,%rsi
  lea    (%r9,%rsi,4),%rbx
  mov    %rbx,-0x30(%rsp)
  lea    (%rax,%rax,4),%esi
  lea    (%rsi,%rcx,1),%r8d
  movslq %r8d,%r8
  lea    (%r9,%r8,4),%rbx
  mov    %rbx,-0x28(%rsp)
  lea    0x0(,%rax,8),%r11d
  mov    %r11d,%ebx
  sub    %eax,%ebx
  lea    (%rbx,%rcx,1),%r8d
  movslq %r8d,%r8
  lea    (%r9,%r8,4),%r14
  mov    %r14,-0x20(%rsp)
  add    %eax,%r11d
  lea    (%r11,%rcx,1),%r8d
  movslq %r8d,%r8
  lea    (%r9,%r8,4),%r14
  mov    %r14,-0x18(%rsp)
  lea    (%rax,%rsi,2),%r10d
  lea    (%r10,%rcx,1),%r8d
  movslq %r8d,%r8
  lea    (%r9,%r8,4),%r14
  lea    (%rax,%rdi,4),%r15d
  mov    %r15d,-0x4(%rsp)
  lea    (%r15,%rcx,1),%r8d
  movslq %r8d,%r8
  lea    (%r9,%r8,4),%r13
  mov    %eax,%r12d
  shl    $0x4,%r12d
  mov    %r12d,%r8d
  sub    %eax,%r8d
  add    %r8d,%ecx
  movslq %ecx,%rcx
  lea    (%r9,%rcx,4),%r12
  movslq %eax,%r15
  lea    0x0(%rbp,%r15,4),%rax
  mov    -0x10(%rsp),%rcx
  lea    -0x1(%rdx),%edx
  add    %r15,%rdx
  lea    0x4(%rbp,%rdx,4),%rbp
  movslq %edi,%rdi
  sub    %r15,%rdi
  movslq %esi,%rsi
  sub    %r15,%rsi
  movslq %ebx,%rbx
  sub    %r15,%rbx
  movslq %r11d,%r11
  sub    %r15,%r11
  movslq %r10d,%r10
  sub    %r15,%r10
  movslq -0x4(%rsp),%r9
  sub    %r15,%r9
  movslq %r8d,%r8
  sub    %r15,%r8
  mov    %rsi,-0x10(%rsp)
L1:
  mov    (%rax,%rdi,4),%edx
  mov    -0x30(%rsp),%r15
  imul   (%r15),%edx
  mov    (%rax),%r15d
  mov    -0x38(%rsp),%rsi
  imul   (%rsi),%r15d
  add    %edx,%r15d
  mov    -0x10(%rsp),%rsi
  mov    (%rax,%rsi,4),%edx
  mov    -0x28(%rsp),%rsi
  imul   (%rsi),%edx
  add    %r15d,%edx
  mov    (%rax,%rbx,4),%r15d
  mov    -0x20(%rsp),%rsi
  imul   (%rsi),%r15d
  add    %edx,%r15d
  mov    (%rax,%r11,4),%edx
  mov    -0x18(%rsp),%rsi
  imul   (%rsi),%edx
  add    %r15d,%edx
  mov    (%rax,%r10,4),%r15d
  imul   (%r14),%r15d
  add    %edx,%r15d
  mov    (%rax,%r9,4),%edx
  imul   0x0(%r13),%edx
  add    %r15d,%edx
  mov    (%rax,%r8,4),%r15d
  imul   (%r12),%r15d
  add    %r15d,%edx
  mov    %edx,(%rcx)
  add    $0x4,%rax
  add    $0x4,%rcx
  cmp    %rbp,%rax
  jne    L1
L2:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void transform_1d_odd_l1(const int16_t *coeff, const int16_t *tr_matrix, int size, int j, int *o) {
  int i;
  int length = size >> 1;
  for (i = 0; i < length; i++) {
    o[i] = tr_matrix[1 * size + i] * coeff[1 * size + j] + tr_matrix[3 * size + i] * coeff[3 * size + j] + tr_matrix[5 * size + i] * coeff[5 * size + j] + tr_matrix[7 * size + i] * coeff[7 * size + j] + tr_matrix[9 * size + i] * coeff[9 * size + j] + tr_matrix[11 * size + i] * coeff[11 * size + j] + tr_matrix[13 * size + i] * coeff[13 * size + j] + tr_matrix[15 * size + i] * coeff[15 * size + j];
  }
}
```