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

```asm
<PDJPG_TransIRDCT_Vert>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x38(%rbp),%rax
  add    $0x60,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%rax
  add    $0x70,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x2c(%rbp)
  mov    -0x38(%rbp),%rax
  add    $0x30,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x28(%rbp)
  mov    -0x38(%rbp),%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x24(%rbp)
  mov    -0x38(%rbp),%rax
  add    $0x20,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x20(%rbp)
  mov    -0x38(%rbp),%rax
  add    $0x40,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x1c(%rbp)
  mov    -0x38(%rbp),%rax
  add    $0x10,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x18(%rbp)
  mov    -0x38(%rbp),%rax
  add    $0x50,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  mov    -0x30(%rbp),%edx
  imul   $0x2344,%edx,%ecx
  mov    -0x2c(%rbp),%edx
  imul   $0xffffbf06,%edx,%edx
  add    %edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0xfffff396,%edx,%edx
  add    %edx,%ecx
  mov    -0x24(%rbp),%edx
  imul   $0x14ff,%edx,%edx
  add    %edx,%ecx
  mov    -0x20(%rbp),%edx
  imul   $0x27b2,%edx,%edx
  add    %edx,%ecx
  mov    -0x1c(%rbp),%edx
  imul   $0x350c,%edx,%edx
  add    %edx,%ecx
  mov    -0x18(%rbp),%edx
  imul   $0xffffd9e1,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x18(%rbp),%eax
  mov    -0x30(%rbp),%edx
  imul   $0x2014,%edx,%ecx
  mov    -0x2c(%rbp),%edx
  imul   $0xffffe907,%edx,%edx
  add    %edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0xfffffd09,%edx,%edx
  add    %edx,%ecx
  mov    -0x24(%rbp),%edx
  imul   $0xfffffefc,%edx,%edx
  add    %edx,%ecx
  mov    -0x20(%rbp),%edx
  imul   $0xd58,%edx,%edx
  add    %edx,%ecx
  mov    -0x1c(%rbp),%edx
  imul   $0x2554,%edx,%edx
  add    %edx,%ecx
  mov    -0x14(%rbp),%edx
  imul   $0xfb1,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    -0x30(%rbp),%edx
  imul   $0xffffeaf8,%edx,%ecx
  mov    -0x2c(%rbp),%edx
  imul   $0x1298,%edx,%edx
  add    %edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0xfffff6a0,%edx,%edx
  add    %edx,%ecx
  mov    -0x24(%rbp),%edx
  imul   $0xffffef06,%edx,%edx
  add    %edx,%ecx
  mov    -0x20(%rbp),%edx
  imul   $0xffffe411,%edx,%edx
  add    %edx,%ecx
  mov    -0x18(%rbp),%edx
  imul   $0xfffffae7,%edx,%edx
  add    %edx,%ecx
  mov    -0x14(%rbp),%edx
  imul   $0xfffff49d,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x20(%rbp),%eax
  mov    -0x30(%rbp),%edx
  imul   $0xeb1,%edx,%ecx
  mov    -0x2c(%rbp),%edx
  imul   $0xd25,%edx,%edx
  add    %edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0xfffff95f,%edx,%edx
  add    %edx,%ecx
  mov    -0x24(%rbp),%edx
  imul   $0xffffdd5e,%edx,%edx
  add    %edx,%ecx
  mov    -0x1c(%rbp),%edx
  imul   $0x16a1,%edx,%edx
  add    %edx,%ecx
  mov    -0x18(%rbp),%edx
  imul   $0x1c65,%edx,%edx
  add    %edx,%ecx
  mov    -0x14(%rbp),%edx
  imul   $0xfffff7f3,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  mov    -0x30(%rbp),%edx
  imul   $0x1976,%edx,%ecx
  mov    -0x2c(%rbp),%edx
  imul   $0x1eed,%edx,%edx
  add    %edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0xe34,%edx,%edx
  add    %edx,%ecx
  mov    -0x20(%rbp),%edx
  imul   $0x13c1,%edx,%edx
  add    %edx,%ecx
  mov    -0x1c(%rbp),%edx
  imul   $0xfffffb74,%edx,%edx
  add    %edx,%ecx
  mov    -0x18(%rbp),%edx
  imul   $0x2136,%edx,%edx
  add    %edx,%ecx
  mov    -0x14(%rbp),%edx
  imul   $0xfffffa90,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x30(%rbp),%eax
  imul   $0xfffffed7,%eax,%ecx
  mov    -0x2c(%rbp),%eax
  imul   $0xffffc945,%eax,%eax
  add    %eax,%ecx
  mov    -0x24(%rbp),%eax
  mov    %eax,%edi
  shl    $0xd,%eax
  mov    %eax,%esi
  mov    %edi,%eax
  sub    %esi,%eax
  add    %eax,%ecx
  mov    -0x20(%rbp),%eax
  imul   $0x9d0,%eax,%eax
  add    %eax,%ecx
  mov    -0x1c(%rbp),%eax
  imul   $0x1559,%eax,%eax
  add    %eax,%ecx
  mov    -0x18(%rbp),%eax
  imul   $0xffffecf4,%eax,%eax
  add    %eax,%ecx
  mov    -0x14(%rbp),%eax
  imul   $0x686,%eax,%eax
  add    %ecx,%eax
  add    $0x1000,%eax
  sar    $0xd,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    -0x30(%rbp),%edx
  imul   $0xfffffdd0,%edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0x8aa,%edx,%edx
  add    %edx,%ecx
  mov    -0x24(%rbp),%edx
  imul   $0xfffff757,%edx,%edx
  add    %edx,%ecx
  mov    -0x20(%rbp),%edx
  imul   $0xfffff8da,%edx,%edx
  add    %edx,%ecx
  mov    -0x1c(%rbp),%edx
  imul   $0x838,%edx,%edx
  add    %edx,%ecx
  mov    -0x18(%rbp),%edx
  imul   $0xfffff5bf,%edx,%edx
  add    %edx,%ecx
  mov    -0x14(%rbp),%edx
  imul   $0xc4b,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x30(%rbp),%eax
  mov    -0x2c(%rbp),%edx
  imul   $0xffffdc64,%edx,%ecx
  mov    -0x28(%rbp),%edx
  imul   $0x1d3,%edx,%edx
  add    %edx,%ecx
  mov    -0x24(%rbp),%edx
  imul   $0xfffff0ed,%edx,%edx
  add    %edx,%ecx
  mov    -0x20(%rbp),%edx
  imul   $0x34b,%edx,%edx
  add    %edx,%ecx
  mov    -0x1c(%rbp),%edx
  shl    $0x7,%edx
  add    %edx,%ecx
  mov    -0x18(%rbp),%edx
  imul   $0xfffff1a6,%edx,%edx
  add    %edx,%ecx
  mov    -0x14(%rbp),%edx
  imul   $0xfffff139,%edx,%edx
  add    %ecx,%edx
  add    $0x1000,%edx
  sar    $0xd,%edx
  sub    %edx,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  imul   $0x2546,%eax,%edx
  mov    -0x2c(%rbp),%eax
  imul   $0xffffa5a8,%eax,%eax
  add    %eax,%edx
  mov    -0x28(%rbp),%eax
  imul   $0x1133,%eax,%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  imul   $0xffffec9e,%eax,%eax
  add    %eax,%edx
  mov    -0x20(%rbp),%eax
  imul   $0x2721,%eax,%eax
  add    %eax,%edx
  mov    -0x1c(%rbp),%eax
  imul   $0xfffff3d4,%eax,%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  imul   $0xec,%eax,%eax
  add    %edx,%eax
  add    $0x1000,%eax
  sar    $0xd,%eax
  mov    -0x14(%rbp),%edx
  sub    %edx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x40(%rbp),%rax
  lea    0x20(%rax),%rdx
  mov    -0x18(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x40(%rbp),%rax
  lea    0x40(%rax),%rdx
  mov    -0x30(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x40(%rbp),%rax
  lea    0x60(%rax),%rdx
  mov    -0x24(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x40(%rbp),%rax
  lea    0x80(%rax),%rdx
  mov    -0x28(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x40(%rbp),%rax
  lea    0xa0(%rax),%rdx
  mov    -0x14(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x40(%rbp),%rax
  lea    0xc0(%rax),%rdx
  mov    -0x20(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x40(%rbp),%rax
  lea    0xe0(%rax),%rdx
  mov    -0x2c(%rbp),%eax
  mov    %eax,(%rdx)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L6
  call   <__stack_chk_fail@plt>
L6:
  leave
  ret
```

assistant: ```c
void PDJPG_TransIRDCT_Vert(short *iblk, int *oblk) {
  int ib[8];
  ib[0] = iblk[48];
  ib[1] = iblk[56];
  ib[2] = iblk[24];
  ib[3] = iblk[0];
  ib[4] = iblk[16];
  ib[5] = iblk[32];
  ib[6] = iblk[8];
  ib[7] = iblk[40];
  ib[7] = ib[7] - (((ib[0] * ((int)((1.1020) * 8192 + 0.5)) + ib[1] * ((int)((-2.0306) * 8192 + 0.5)) + ib[2] * ((int)((-0.3881) * 8192 + 0.5)) + ib[3] * ((int)((0.6561) * 8192 + 0.5)) + ib[4] * ((int)((1.2405) * 8192 + 0.5)) + ib[5] * ((int)((1.6577) * 8192 + 0.5)) + ib[6] * ((int)((-1.1914) * 8192 + 0.5))) + 4096) >> 13);
  ib[6] = ib[6] - (((ib[0] * ((int)((1.0024) * 8192 + 0.5)) + ib[1] * ((int)((-0.7180) * 8192 + 0.5)) + ib[2] * ((int)((-0.0928) * 8192 + 0.5)) + ib[3] * ((int)((-0.0318) * 8192 + 0.5)) + ib[4] * ((int)((0.4170) * 8192 + 0.5)) + ib[5] * ((int)((1.1665) * 8192 + 0.5)) + ib[7] * ((int)((0.4904) * 8192 + 0.5))) + 4096) >> 13);
  ib[5] = ib[5] - (((ib[0] * ((int)((-0.6573) * 8192 + 0.5)) + ib[1] * ((int)((0.5810) * 8192 + 0.5)) + ib[2] * ((int)((-0.2931) * 8192 + 0.5)) + ib[3] * ((int)((-0.5307) * 8192 + 0.5)) + ib[4] * ((int)((-0.8730) * 8192 + 0.5)) + ib[6] * ((int)((-0.1594) * 8192 + 0.5)) + ib[7] * ((int)((-0.3560) * 8192 + 0.5))) + 4096) >> 13);
  ib[4] = ib[4] - (((ib[0] * ((int)((0.4591) * 8192 + 0.5)) + ib[1] * ((int)((0.4108) * 8192 + 0.5)) + ib[2] * ((int)((-0.2073) * 8192 + 0.5)) + ib[3] * ((int)((-1.0824) * 8192 + 0.5)) + ib[5] * ((int)((0.7071) * 8192 + 0.5)) + ib[6] * ((int)((0.8873) * 8192 + 0.5)) + ib[7] * ((int)((-0.2517) * 8192 + 0.5))) + 4096) >> 13);
  ib[3] = ib[3] - (((ib[0] * ((int)((0.7957) * 8192 + 0.5)) + ib[1] * ((int)((0.9664) * 8192 + 0.5)) + ib[2] * ((int)((0.4439) * 8192 + 0.5)) + ib[4] * ((int)((0.6173) * 8192 + 0.5)) + ib[5] * ((int)((-0.1422) * 8192 + 0.5)) + ib[6] * ((int)((1.0378) * 8192 + 0.5)) + ib[7] * ((int)((-0.1700) * 8192 + 0.5))) + 4096) >> 13);
  ib[2] = ib[2] - (((ib[0] * ((int)((-0.0364) * 8192 + 0.5)) + ib[1] * ((int)((-1.7104) * 8192 + 0.5)) + ib[3] * ((int)((-1.0000) * 8192 + 0.5)) + ib[4] * ((int)((0.3066) * 8192 + 0.5)) + ib[5] * ((int)((0.6671) * 8192 + 0.5)) + ib[6] * ((int)((-0.5953) * 8192 + 0.5)) + ib[7] * ((int)((0.2039) * 8192 + 0.5))) + 4096) >> 13);
  ib[1] = ib[1] - (((ib[0] * ((int)((-0.0685) * 8192 + 0.5)) + ib[2] * ((int)((0.2708) * 8192 + 0.5)) + ib[3] * ((int)((-0.2708) * 8192 + 0.5)) + ib[4] * ((int)((-0.2235) * 8192 + 0.5)) + ib[5] * ((int)((0.2568) * 8192 + 0.5)) + ib[6] * ((int)((-0.3205) * 8192 + 0.5)) + ib[7] * ((int)((0.3841) * 8192 + 0.5))) + 4096) >> 13);
  ib[0] = ib[0] - (((ib[1] * ((int)((-1.1129) * 8192 + 0.5)) + ib[2] * ((int)((0.0570) * 8192 + 0.5)) + ib[3] * ((int)((-0.4712) * 8192 + 0.5)) + ib[4] * ((int)((0.1029) * 8192 + 0.5)) + ib[5] * ((int)((0.0156) * 8192 + 0.5)) + ib[6] * ((int)((-0.4486) * 8192 + 0.5)) + ib[7] * ((int)((-0.4619) * 8192 + 0.5))) + 4096) >> 13);
  ib[7] = -ib[7] + (((ib[0] * ((int)((1.1648) * 8192 + 0.5)) + ib[1] * ((int)((-2.8234) * 8192 + 0.5)) + ib[2] * ((int)((0.5375) * 8192 + 0.5)) + ib[3] * ((int)((-0.6058) * 8192 + 0.5)) + ib[4] * ((int)((1.2228) * 8192 + 0.5)) + ib[5] * ((int)((-0.3805) * 8192 + 0.5)) + ib[6] * ((int)((0.0288) * 8192 + 0.5))) + 4096) >> 13);
  oblk[0] = ib[5];
  oblk[8] = ib[6];
  oblk[16] = ib[0];
  oblk[24] = ib[3];
  oblk[32] = ib[2];
  oblk[40] = ib[7];
  oblk[48] = ib[4];
  oblk[56] = ib[1];
}
```