user: Converte this assembly snippet into its equivalent C code:

```asm
<PDJPG_TransIRDCT>:
  endbr64
  push   %r13
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x218,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x208(%rsp)
  xor    %eax,%eax
  mov    %rsp,%r13
  mov    %r13,%rsi
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x4(%rsp),%rsi
  lea    0x2(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x8(%rsp),%rsi
  lea    0x4(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0xc(%rsp),%rsi
  lea    0x6(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x10(%rsp),%rsi
  lea    0x8(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x14(%rsp),%rsi
  lea    0xa(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x18(%rsp),%rsi
  lea    0xc(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x1c(%rsp),%rsi
  lea    0xe(%rbx),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x100(%rsp),%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x120(%rsp),%rsi
  lea    0x20(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x140(%rsp),%rsi
  lea    0x40(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x160(%rsp),%rsi
  lea    0x60(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x180(%rsp),%rsi
  lea    0x80(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x1a0(%rsp),%rsi
  lea    0xa0(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x1c0(%rsp),%rsi
  lea    0xc0(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  lea    0x1e0(%rsp),%rsi
  lea    0xe0(%rsp),%rdi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Horiz@plt>
  movd   %r12d,%xmm0
  movdqa 0x100(%rsp),%xmm1
  punpcklwd %xmm0,%xmm0
  movdqa %xmm1,%xmm2
  pshufd $0x0,%xmm0,%xmm0
  punpcklwd 0x110(%rsp),%xmm1
  punpckhwd 0x110(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm2,%xmm1
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x0(%rbp)
  movdqa 0x120(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x130(%rsp),%xmm1
  punpckhwd 0x130(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x10(%rbp)
  movdqa 0x140(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x150(%rsp),%xmm1
  punpckhwd 0x150(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x20(%rbp)
  movdqa 0x160(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x170(%rsp),%xmm1
  punpckhwd 0x170(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x30(%rbp)
  movdqa 0x180(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x190(%rsp),%xmm1
  punpckhwd 0x190(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x40(%rbp)
  movdqa 0x1a0(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x1b0(%rsp),%xmm1
  punpckhwd 0x1b0(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x50(%rbp)
  movdqa 0x1c0(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x1d0(%rsp),%xmm1
  punpckhwd 0x1d0(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x60(%rbp)
  movdqa 0x1e0(%rsp),%xmm1
  movdqa %xmm1,%xmm2
  punpcklwd 0x1f0(%rsp),%xmm1
  punpckhwd 0x1f0(%rsp),%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  punpcklwd %xmm3,%xmm1
  paddw  %xmm0,%xmm1
  movups %xmm1,0x70(%rbp)
  mov    0x208(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L4
  add    $0x218,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L4:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void PDJPG_TransIRDCT(short *iblk, short *oblk, int dcbias, int rtm) {
  int s[64];
  int t[64];
  int i, j;
  PDJPG_TransIRDCT_Vert(iblk + 0, s + 0);
  PDJPG_TransIRDCT_Vert(iblk + 1, s + 1);
  PDJPG_TransIRDCT_Vert(iblk + 2, s + 2);
  PDJPG_TransIRDCT_Vert(iblk + 3, s + 3);
  PDJPG_TransIRDCT_Vert(iblk + 4, s + 4);
  PDJPG_TransIRDCT_Vert(iblk + 5, s + 5);
  PDJPG_TransIRDCT_Vert(iblk + 6, s + 6);
  PDJPG_TransIRDCT_Vert(iblk + 7, s + 7);
  PDJPG_TransIRDCT_Horiz(s + 0, t + 0);
  PDJPG_TransIRDCT_Horiz(s + 8, t + 8);
  PDJPG_TransIRDCT_Horiz(s + 16, t + 16);
  PDJPG_TransIRDCT_Horiz(s + 24, t + 24);
  PDJPG_TransIRDCT_Horiz(s + 32, t + 32);
  PDJPG_TransIRDCT_Horiz(s + 40, t + 40);
  PDJPG_TransIRDCT_Horiz(s + 48, t + 48);
  PDJPG_TransIRDCT_Horiz(s + 56, t + 56);
  for (i = 0; i < 64; i++) {
    j = (t[i]) + dcbias;
    oblk[i] = j;
  }
}
```