user: 请将以下的汇编代码转换成C语言代码:

```asm
<pixel_satd_wxh>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0xe8,%rsp
  mov    %rdi,-0xd8(%rbp)
  mov    %esi,-0xdc(%rbp)
  mov    %rdx,-0xe8(%rbp)
  mov    %ecx,-0xe0(%rbp)
  mov    %r8d,-0xec(%rbp)
  mov    %r9d,-0xf0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xc8(%rbp)
  movl   $0x0,-0xcc(%rbp)
  jmp    L58
L10:
  movl   $0x0,-0xd0(%rbp)
  jmp    L1
L33:
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xe8(%rbp),%rax
  lea    (%rdx,%rax,1),%rdi
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xd8(%rbp),%rax
  lea    (%rdx,%rax,1),%rsi
  mov    -0xe0(%rbp),%ecx
  mov    -0xdc(%rbp),%edx
  lea    -0x60(%rbp),%rax
  mov    %ecx,%r9d
  mov    %rdi,%r8
  mov    %edx,%ecx
  mov    %rsi,%rdx
  mov    $0x4,%esi
  mov    %rax,%rdi
  call   <pixel_sub_wxh@plt>
  movl   $0x0,-0xc4(%rbp)
  jmp    L57
L44:
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x50,%rax
  mov    (%rax),%edx
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x4c,%rax
  mov    (%rax),%eax
  add    %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x48,%rax
  mov    (%rax),%edx
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x44,%rax
  mov    (%rax),%eax
  add    %edx,%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x50,%rax
  mov    (%rax),%eax
  mov    -0xc4(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x4,%rdx
  lea    -0x10(%rdx),%rcx
  lea    (%rcx,%rbp,1),%rdx
  sub    $0x4c,%rdx
  mov    (%rdx),%edx
  sub    %edx,%eax
  mov    %eax,-0xa8(%rbp)
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x48,%rax
  mov    (%rax),%eax
  mov    -0xc4(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x4,%rdx
  lea    -0x10(%rdx),%rsi
  lea    (%rsi,%rbp,1),%rdx
  sub    $0x44,%rdx
  mov    (%rdx),%edx
  sub    %edx,%eax
  mov    %eax,-0xa4(%rbp)
  mov    -0xb0(%rbp),%edx
  mov    -0xac(%rbp),%eax
  add    %eax,%edx
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x90,%rax
  mov    %edx,(%rax)
  mov    -0xb0(%rbp),%eax
  sub    -0xac(%rbp),%eax
  mov    -0xc4(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x4,%rdx
  lea    -0x10(%rdx),%rcx
  lea    (%rcx,%rbp,1),%rdx
  sub    $0x8c,%rdx
  mov    %eax,(%rdx)
  mov    -0xa8(%rbp),%eax
  sub    -0xa4(%rbp),%eax
  mov    -0xc4(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x4,%rdx
  lea    -0x10(%rdx),%rsi
  lea    (%rsi,%rbp,1),%rdx
  sub    $0x88,%rdx
  mov    %eax,(%rdx)
  mov    -0xa8(%rbp),%edx
  mov    -0xa4(%rbp),%eax
  add    %eax,%edx
  mov    -0xc4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  lea    -0x10(%rax),%rax
  add    %rbp,%rax
  sub    $0x84,%rax
  mov    %edx,(%rax)
  addl   $0x1,-0xc4(%rbp)
L57:
  cmpl   $0x3,-0xc4(%rbp)
  jle    L44
  movl   $0x0,-0xc4(%rbp)
  jmp    L75
L34:
  mov    -0xc4(%rbp),%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%edx
  mov    -0xc4(%rbp),%eax
  cltq
  add    $0x4,%rax
  mov    -0xa0(%rbp,%rax,4),%eax
  add    %edx,%eax
  mov    %eax,-0xc0(%rbp)
  mov    -0xc4(%rbp),%eax
  cltq
  add    $0x8,%rax
  mov    -0xa0(%rbp,%rax,4),%edx
  mov    -0xc4(%rbp),%eax
  cltq
  add    $0xc,%rax
  mov    -0xa0(%rbp,%rax,4),%eax
  add    %edx,%eax
  mov    %eax,-0xbc(%rbp)
  mov    -0xc4(%rbp),%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%eax
  mov    -0xc4(%rbp),%edx
  movslq %edx,%rdx
  add    $0x4,%rdx
  mov    -0xa0(%rbp,%rdx,4),%edx
  sub    %edx,%eax
  mov    %eax,-0xb8(%rbp)
  mov    -0xc4(%rbp),%eax
  cltq
  add    $0x8,%rax
  mov    -0xa0(%rbp,%rax,4),%eax
  mov    -0xc4(%rbp),%edx
  movslq %edx,%rdx
  add    $0xc,%rdx
  mov    -0xa0(%rbp,%rdx,4),%edx
  sub    %edx,%eax
  mov    %eax,-0xb4(%rbp)
  mov    -0xc0(%rbp),%edx
  mov    -0xbc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edi
  call   <abs@plt>
  mov    %rax,%rbx
  mov    -0xc0(%rbp),%eax
  sub    -0xbc(%rbp),%eax
  mov    %eax,%edi
  call   <abs@plt>
  add    %rax,%rbx
  mov    -0xb8(%rbp),%eax
  sub    -0xb4(%rbp),%eax
  mov    %eax,%edi
  call   <abs@plt>
  add    %rax,%rbx
  mov    -0xb8(%rbp),%edx
  mov    -0xb4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edi
  call   <abs@plt>
  add    %rbx,%rax
  mov    %eax,%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc8(%rbp)
  addl   $0x1,-0xc4(%rbp)
L75:
  cmpl   $0x3,-0xc4(%rbp)
  jle    L34
  addl   $0x4,-0xd0(%rbp)
L1:
  mov    -0xd0(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L33
  mov    -0xdc(%rbp),%eax
  shl    $0x2,%eax
  cltq
  shl    $0x2,%rax
  add    %rax,-0xd8(%rbp)
  mov    -0xe0(%rbp),%eax
  shl    $0x2,%eax
  cltq
  shl    $0x2,%rax
  add    %rax,-0xe8(%rbp)
  addl   $0x4,-0xcc(%rbp)
L58:
  mov    -0xcc(%rbp),%eax
  cmp    -0xf0(%rbp),%eax
  jl     L10
  mov    -0xc8(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L25
  call   <__stack_chk_fail@plt>
L25:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
int pixel_satd_wxh(uint8_t *pix1, int i_pix1, uint8_t *pix2, int i_pix2, int i_width, int i_height) {
  int16_t tmp[4][4];
  int16_t diff[4][4];
  int x, y;
  int i_satd = 0;
  for (y = 0; y < i_height; y += 4) {
    for (x = 0; x < i_width; x += 4) {
      int d;
      pixel_sub_wxh((int16_t *)diff, 4, &pix1[x], i_pix1, &pix2[x], i_pix2);
      for (d = 0; d < 4; d++) {
        int s01, s23;
        int d01, d23;
        s01 = diff[d][0] + diff[d][1];
        s23 = diff[d][2] + diff[d][3];
        d01 = diff[d][0] - diff[d][1];
        d23 = diff[d][2] - diff[d][3];
        tmp[d][0] = s01 + s23;
        tmp[d][1] = s01 - s23;
        tmp[d][2] = d01 - d23;
        tmp[d][3] = d01 + d23;
      }
      for (d = 0; d < 4; d++) {
        int s01, s23;
        int d01, d23;
        s01 = tmp[0][d] + tmp[1][d];
        s23 = tmp[2][d] + tmp[3][d];
        d01 = tmp[0][d] - tmp[1][d];
        d23 = tmp[2][d] - tmp[3][d];
        i_satd += abs(s01 + s23) + abs(s01 - s23) + abs(d01 - d23) + abs(d01 + d23);
      }
    }
    pix1 += 4 * i_pix1;
    pix2 += 4 * i_pix2;
  }
  return i_satd / 2;
}
```