user: What would the C source look like for the assembly code provided here?

```asm
<PDJPG_TransIRDCT>:
  endbr64
  push   %r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  mov    %edx,%ebx
  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    0x2(%r12),%rdi
  lea    0x4(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x4(%r12),%rdi
  lea    0x8(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x6(%r12),%rdi
  lea    0xc(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x8(%r12),%rdi
  lea    0x10(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0xa(%r12),%rdi
  lea    0x14(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0xc(%r12),%rdi
  lea    0x18(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0xe(%r12),%rdi
  lea    0x1c(%rsp),%rsi
  xor    %eax,%eax
  call   <PDJPG_TransIRDCT_Vert@plt>
  lea    0x100(%rsp),%r12
  mov    %r13,%rdi
  xor    %eax,%eax
  mov    %r12,%rsi
  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>
  xor    %eax,%eax
  nopl   (%rax)
L5:
  mov    (%r12,%rax,4),%edx
  add    %ebx,%edx
  mov    %dx,0x0(%rbp,%rax,2)
  add    $0x1,%rax
  cmp    $0x40,%rax
  jne    L5
  mov    0x208(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L16
  add    $0x218,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L16:
  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;
  }
}
```