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

```asm
<LeeIDct>:
  endbr64
  push   %r15
  mov    %rsi,%rax
  lea    0x100(%rdi),%r11
  mov    %rsi,%r9
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  nopl   0x0(%rax,%rax,1)
L94:
  mov    (%rdi),%ebx
  mov    0x18(%rdi),%r12d
  add    $0x20,%rdi
  lea    0x0(,%rbx,4),%edx
  mov    -0x1c(%rdi),%ebx
  movslq %edx,%rdx
  imul   $0x16a,%rdx,%rdx
  lea    0x0(,%rbx,4),%r10d
  mov    -0x18(%rdi),%ebx
  lea    0x0(,%rbx,4),%esi
  mov    -0x14(%rdi),%ebx
  lea    (%rsi,%r12,4),%r12d
  sar    $0x9,%rdx
  lea    0x0(,%rbx,4),%ecx
  mov    -0x10(%rdi),%ebx
  movslq %r12d,%r12
  imul   $0x16a,%r12,%r12
  lea    0x0(,%rbx,4),%r8d
  mov    -0xc(%rdi),%ebx
  movslq %r8d,%r8
  imul   $0x16a,%r8,%r8
  sar    $0x9,%r12
  shl    $0x2,%ebx
  sar    $0x9,%r8
  lea    (%r8,%rdx,1),%ebp
  sub    %r8d,%edx
  lea    (%rsi,%r12,1),%r8d
  sub    %r12d,%esi
  movslq %esi,%rsi
  movslq %r8d,%r8
  imul   $0x29d,%rsi,%rsi
  imul   $0x115,%r8,%r8
  sar    $0x9,%rsi
  lea    (%rdx,%rsi,1),%r13d
  sub    %esi,%edx
  lea    (%rcx,%rbx,1),%esi
  sar    $0x9,%r8
  movslq %esi,%rsi
  lea    0x0(%rbp,%r8,1),%r12d
  sub    %r8d,%ebp
  mov    %r10d,%r8d
  imul   $0x16a,%rsi,%rsi
  sar    $0x9,%rsi
  lea    (%r10,%rsi,1),%r14d
  sub    %esi,%r8d
  lea    (%r10,%rcx,1),%esi
  mov    -0x4(%rdi),%ecx
  lea    (%rbx,%rcx,4),%ebx
  add    %esi,%ebx
  movslq %ebx,%rbx
  imul   $0x16a,%rbx,%rbx
  sar    $0x9,%rbx
  lea    (%rsi,%rbx,1),%r10d
  sub    %ebx,%esi
  movslq %r10d,%r10
  movslq %esi,%rsi
  imul   $0x115,%r10,%r10
  imul   $0x29d,%rsi,%rsi
  sar    $0x9,%r10
  lea    (%r14,%r10,1),%ecx
  sar    $0x9,%rsi
  movslq %ecx,%rcx
  mov    %rcx,%rbx
  shl    $0x6,%rbx
  add    %rcx,%rbx
  lea    (%rcx,%rbx,4),%r15
  lea    (%r8,%rsi,1),%ebx
  movslq %ebx,%rbx
  sar    $0x9,%r15
  imul   $0x134,%rbx,%rbx
  sar    $0x9,%rbx
  sub    %r10d,%r14d
  sub    %esi,%r8d
  add    $0x20,%r9
  movslq %r14d,%r14
  lea    (%r12,%r15,1),%esi
  sub    %r15d,%r12d
  lea    (%r14,%r14,4),%rcx
  mov    %esi,-0x20(%r9)
  lea    0x0(%r13,%rbx,1),%esi
  sub    %ebx,%r13d
  lea    (%r14,%rcx,8),%r10
  movslq %r8d,%rcx
  mov    %esi,-0x1c(%r9)
  imul   $0x1cd,%rcx,%rcx
  sar    $0x4,%r10
  mov    %r13d,-0x8(%r9)
  sar    $0x9,%rcx
  lea    (%rdx,%rcx,1),%esi
  sub    %ecx,%edx
  mov    %esi,-0x18(%r9)
  lea    0x0(%rbp,%r10,1),%esi
  sub    %r10d,%ebp
  mov    %esi,-0x14(%r9)
  mov    %ebp,-0x10(%r9)
  mov    %edx,-0xc(%r9)
  mov    %r12d,-0x4(%r9)
  cmp    %r11,%rdi
  jne    L94
  lea    0x20(%rax),%rbx
  nopl   0x0(%rax)
L80:
  movslq (%rax),%rdx
  movslq 0x80(%rax),%rcx
  mov    0xc0(%rax),%edi
  mov    0x20(%rax),%ebp
  imul   $0x16a,%rdx,%rdx
  imul   $0x16a,%rcx,%rcx
  sar    $0x9,%rdx
  sar    $0x9,%rcx
  lea    (%rcx,%rdx,1),%r8d
  sub    %ecx,%edx
  mov    0x40(%rax),%ecx
  add    %ecx,%edi
  movslq %edi,%rdi
  imul   $0x16a,%rdi,%rdi
  sar    $0x9,%rdi
  lea    (%rcx,%rdi,1),%esi
  sub    %edi,%ecx
  mov    %ebp,%edi
  movslq %esi,%rsi
  movslq %ecx,%rcx
  imul   $0x115,%rsi,%rsi
  imul   $0x29d,%rcx,%rcx
  sar    $0x9,%rsi
  sar    $0x9,%rcx
  lea    (%r8,%rsi,1),%r10d
  sub    %esi,%r8d
  mov    0xa0(%rax),%esi
  lea    (%rdx,%rcx,1),%r11d
  sub    %ecx,%edx
  mov    0x60(%rax),%ecx
  add    %esi,%ecx
  add    0xe0(%rax),%esi
  movslq %ecx,%rcx
  imul   $0x16a,%rcx,%rcx
  sar    $0x9,%rcx
  lea    0x0(%rbp,%rcx,1),%r9d
  sub    %ecx,%edi
  mov    0x60(%rax),%ecx
  add    %ebp,%ecx
  add    %ecx,%esi
  movslq %esi,%rsi
  imul   $0x16a,%rsi,%rsi
  sar    $0x9,%rsi
  lea    (%rcx,%rsi,1),%ebp
  sub    %esi,%ecx
  movslq %ebp,%rbp
  movslq %ecx,%rcx
  imul   $0x115,%rbp,%rbp
  imul   $0x29d,%rcx,%rcx
  sar    $0x9,%rbp
  lea    (%r9,%rbp,1),%esi
  sar    $0x9,%rcx
  movslq %esi,%rsi
  mov    %rsi,%r12
  shl    $0x6,%r12
  add    %rsi,%r12
  lea    (%rsi,%r12,4),%r12
  lea    (%rdi,%rcx,1),%esi
  movslq %esi,%rsi
  sar    $0x9,%r12
  imul   $0x134,%rsi,%rsi
  sub    %ebp,%r9d
  sub    %ecx,%edi
  movslq %r9d,%r9
  movslq %edi,%rdi
  imul   $0x1cd,%rdi,%rdi
  lea    (%r9,%r9,4),%rbp
  lea    (%r9,%rbp,8),%r9
  lea    (%r10,%r12,1),%ebp
  sar    $0x9,%rsi
  lea    0x8(%rbp),%ecx
  sar    $0x4,%r9
  sar    $0x9,%rdi
  sar    $0x4,%ecx
  test   %ebp,%ebp
  jns    L99
  lea    0x7(%rbp),%ecx
  sub    $0x8,%ebp
  cmovns %ebp,%ecx
  sar    $0x4,%ecx
L99:
  lea    (%r11,%rsi,1),%ebp
  mov    %ecx,(%rax)
  lea    0x8(%rbp),%ecx
  sar    $0x4,%ecx
  test   %ebp,%ebp
  jns    L21
  lea    0x7(%rbp),%ecx
  sub    $0x8,%ebp
  cmovns %ebp,%ecx
  sar    $0x4,%ecx
L21:
  lea    (%rdx,%rdi,1),%ebp
  mov    %ecx,0x20(%rax)
  lea    0x8(%rbp),%ecx
  sar    $0x4,%ecx
  test   %ebp,%ebp
  jns    L81
  lea    0x7(%rbp),%ecx
  sub    $0x8,%ebp
  cmovns %ebp,%ecx
  sar    $0x4,%ecx
L81:
  lea    (%r8,%r9,1),%ebp
  mov    %ecx,0x40(%rax)
  lea    0x8(%rbp),%ecx
  sar    $0x4,%ecx
  test   %ebp,%ebp
  jns    L68
  lea    0x7(%rbp),%ecx
  sub    $0x8,%ebp
  cmovns %ebp,%ecx
  sar    $0x4,%ecx
L68:
  sub    %r9d,%r8d
  mov    %ecx,0x60(%rax)
  lea    0x8(%r8),%ecx
  sar    $0x4,%ecx
  test   %r8d,%r8d
  jns    L17
  lea    0x7(%r8),%ecx
  sub    $0x8,%r8d
  cmovns %r8d,%ecx
  sar    $0x4,%ecx
L17:
  sub    %edi,%edx
  mov    %ecx,0x80(%rax)
  lea    0x8(%rdx),%ecx
  sar    $0x4,%ecx
  test   %edx,%edx
  jns    L87
  lea    0x7(%rdx),%ecx
  sub    $0x8,%edx
  cmovns %edx,%ecx
  sar    $0x4,%ecx
L87:
  sub    %esi,%r11d
  mov    %ecx,0xa0(%rax)
  lea    0x8(%r11),%edx
  sar    $0x4,%edx
  test   %r11d,%r11d
  jns    L42
  lea    0x7(%r11),%edx
  sub    $0x8,%r11d
  cmovns %r11d,%edx
  sar    $0x4,%edx
L42:
  sub    %r12d,%r10d
  mov    %edx,0xc0(%rax)
  lea    0x8(%r10),%edx
  sar    $0x4,%edx
  test   %r10d,%r10d
  jns    L6
  lea    0x7(%r10),%edx
  sub    $0x8,%r10d
  cmovns %r10d,%edx
  sar    $0x4,%edx
L6:
  mov    %edx,0xe0(%rax)
  add    $0x4,%rax
  cmp    %rax,%rbx
  jne    L80
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void LeeIDct(x, y) int *x;
int *y;
{
  register int ex0, ex1, ex2, ex3, ex4, ex5, ex6, ex7;
  register int tx0, tx1, tx2, tx3;
  register int rx0, rx1, rx2, rx3;
  register int gx0, gx1, gx2;
  register int *iptr, *jptr;
  register int i;
  for (jptr = y, iptr = x, i = 0; i < 8; i++) {
    tx0 = (((362L * ((*(iptr++)) << (2)))) >> (9));
    tx1 = ((*(iptr++)) << (2));
    tx2 = ((*(iptr++)) << (2));
    tx3 = ((*(iptr++)) << (2));
    ex4 = ((*(iptr++)) << (2));
    ex5 = ((*(iptr++)) << (2));
    ex6 = ((*(iptr++)) << (2));
    ex7 = ((*(iptr++)) << (2));
    gx2 = (((362L * ex4)) >> (9));
    rx0 = tx0 + gx2;
    rx1 = tx0 - gx2;
    gx2 = (((362L * (tx2 + ex6))) >> (9));
    rx2 = (((277L * (tx2 + gx2))) >> (9));
    rx3 = (((669L * (tx2 - gx2))) >> (9));
    ex0 = rx0 + rx2;
    ex1 = rx1 + rx3;
    ex2 = rx0 - rx2;
    ex3 = rx1 - rx3;
    gx0 = tx3 + ex5;
    gx2 = (((362L * gx0)) >> (9));
    rx0 = tx1 + gx2;
    rx1 = tx1 - gx2;
    gx0 = tx1 + tx3;
    gx1 = ex5 + ex7;
    gx2 = (((362L * (gx0 + gx1))) >> (9));
    rx2 = (((277L * (gx0 + gx2))) >> (9));
    rx3 = (((669L * (gx0 - gx2))) >> (9));
    ex4 = (((261L * (rx0 + rx2))) >> (9));
    ex5 = (((308L * (rx1 + rx3))) >> (9));
    ex6 = (((1312L * (rx0 - rx2))) >> (9));
    ex7 = (((461L * (rx1 - rx3))) >> (9));
    *(jptr++) = ex0 + ex4;
    *(jptr++) = ex1 + ex5;
    *(jptr++) = ex3 + ex7;
    *(jptr++) = ex2 + ex6;
    *(jptr++) = ex2 - ex6;
    *(jptr++) = ex3 - ex7;
    *(jptr++) = ex1 - ex5;
    *(jptr++) = ex0 - ex4;
  }
  for (i = 0; i < 8; i++) {
    jptr = iptr = y + i;
    tx0 = (((362L * (*iptr))) >> (9));
    gx2 = (((362L * iptr[32])) >> (9));
    rx0 = tx0 + gx2;
    rx1 = tx0 - gx2;
    gx2 = (((362L * (iptr[16] + iptr[48]))) >> (9));
    rx2 = (((277L * (iptr[16] + gx2))) >> (9));
    rx3 = (((669L * (iptr[16] - gx2))) >> (9));
    ex0 = rx0 + rx2;
    ex1 = rx1 + rx3;
    ex2 = rx0 - rx2;
    ex3 = rx1 - rx3;
    gx0 = iptr[24] + iptr[40];
    gx2 = (((362L * gx0)) >> (9));
    rx0 = iptr[8] + gx2;
    rx1 = iptr[8] - gx2;
    gx0 = iptr[8] + iptr[24];
    gx1 = iptr[40] + iptr[56];
    gx2 = (((362L * (gx0 + gx1))) >> (9));
    rx2 = (((277L * (gx0 + gx2))) >> (9));
    rx3 = (((669L * (gx0 - gx2))) >> (9));
    ex4 = (((261L * (rx0 + rx2))) >> (9));
    ex5 = (((308L * (rx1 + rx3))) >> (9));
    ex6 = (((1312L * (rx0 - rx2))) >> (9));
    ex7 = (((461L * (rx1 - rx3))) >> (9));
    gx1 = ex0 + ex4;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex1 + ex5;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex3 + ex7;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex2 + ex6;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex2 - ex6;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex3 - ex7;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex1 - ex5;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
    jptr += 8;
    gx1 = ex0 - ex4;
    (*jptr) = (((gx1 < 0) ? (gx1 - 8) : (gx1 + 8)) / 16);
    ;
  }
}
```