user: 这段汇编代码用C语言表示是什么样的?

```asm
<vp8_filter_block2d_second_pass>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x24(%rbp)
  mov    %ecx,-0x28(%rbp)
  mov    %r8d,-0x2c(%rbp)
  mov    %r9d,-0x30(%rbp)
  movl   $0x0,-0xc(%rbp)
  jmp    L40
L57:
  movl   $0x0,-0x8(%rbp)
  jmp    L15
L52:
  mov    -0x2c(%rbp),%edx
  mov    $0x0,%eax
  sub    %edx,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    0x18(%rbp),%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x2c(%rbp),%eax
  neg    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    0x18(%rbp),%rax
  add    $0x2,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    0x18(%rbp),%rax
  add    $0x4,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x2c(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    0x18(%rbp),%rax
  add    $0x6,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x2c(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    0x18(%rbp),%rax
  add    $0x8,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x2c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    0x18(%rbp),%rax
  add    $0xa,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  add    %ecx,%eax
  add    $0x40,%eax
  mov    %eax,-0x4(%rbp)
  sarl   $0x7,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jns    L17
  movl   $0x0,-0x4(%rbp)
  jmp    L45
L17:
  cmpl   $0xff,-0x4(%rbp)
  jle    L45
  movl   $0xff,-0x4(%rbp)
L45:
  mov    -0x8(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    -0x4(%rbp),%edx
  mov    %dl,(%rax)
  addq   $0x4,-0x18(%rbp)
  addl   $0x1,-0x8(%rbp)
L15:
  mov    -0x8(%rbp),%eax
  cmp    0x10(%rbp),%eax
  jb     L52
  mov    -0x28(%rbp),%eax
  sub    0x10(%rbp),%eax
  mov    %eax,%eax
  shl    $0x2,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  add    %rax,-0x20(%rbp)
  addl   $0x1,-0xc(%rbp)
L40:
  mov    -0xc(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jb     L57
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void vp8_filter_block2d_second_pass(int *src_ptr, unsigned char *output_ptr, int output_pitch, unsigned int src_pixels_per_line, unsigned int pixel_step, unsigned int output_height, unsigned int output_width, const short *vp8_filter) {
  unsigned int i, j;
  int Temp;
  for (i = 0; i < output_height; i++) {
    for (j = 0; j < output_width; j++) {
      Temp = ((int)src_ptr[-2 * (int)pixel_step] * vp8_filter[0]) + ((int)src_ptr[-1 * (int)pixel_step] * vp8_filter[1]) + ((int)src_ptr[0] * vp8_filter[2]) + ((int)src_ptr[pixel_step] * vp8_filter[3]) + ((int)src_ptr[2 * pixel_step] * vp8_filter[4]) + ((int)src_ptr[3 * pixel_step] * vp8_filter[5]) + (128 >> 1);
      Temp = Temp >> 7;
      if (Temp < 0)
        Temp = 0;
      else if (Temp > 255)
        Temp = 255;
      output_ptr[j] = (unsigned char)Temp;
      src_ptr++;
    }
    src_ptr += src_pixels_per_line - output_width;
    output_ptr += output_pitch;
  }
}
```