user: 下面的汇编指令对应的C源代码是什么：

```asm
<fdct>:
  endbr64
  sub    $0x208,%rsp
  movdqu (%rdi),%xmm1
  pxor   %xmm0,%xmm0
  movdqa D15(%rip),%xmm10
  mov    %fs:0x28,%rax
  mov    %rax,0x1f8(%rsp)
  xor    %eax,%eax
  lea    0x1f0(%rsp),%rdx
  pxor   %xmm6,%xmm6
  lea    0xf0(%rsp),%rax
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x100(%rsp)
  movdqu 0x10(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0xf0(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x120(%rsp)
  movdqu 0x20(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0x110(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x140(%rsp)
  movdqu 0x30(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0x130(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x160(%rsp)
  movdqu 0x40(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0x150(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x180(%rsp)
  movdqu 0x50(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0x170(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x1a0(%rsp)
  movdqu 0x60(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0x190(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  movaps %xmm1,0x1c0(%rsp)
  movdqu 0x70(%rdi),%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm2,0x1b0(%rsp)
  movdqa %xmm1,%xmm2
  punpckhwd %xmm0,%xmm1
  punpcklwd %xmm0,%xmm2
  movaps %xmm1,0x1e0(%rsp)
  movaps %xmm2,0x1d0(%rsp)
L14:
  movdqa 0x40(%rax),%xmm0
  movdqa (%rax),%xmm1
  sub    $0xffffffffffffff80,%rax
  movdqa -0x20(%rax),%xmm2
  movdqa -0x60(%rax),%xmm4
  movdqa %xmm0,%xmm9
  shufps $0x88,-0x30(%rax),%xmm9
  movdqa %xmm9,%xmm8
  movdqa %xmm1,%xmm3
  movdqa %xmm2,%xmm5
  shufps $0x88,-0x70(%rax),%xmm3
  shufps $0x88,-0x10(%rax),%xmm5
  shufps $0xdd,-0x70(%rax),%xmm1
  shufps $0x88,%xmm5,%xmm8
  shufps $0xdd,%xmm5,%xmm9
  movdqa %xmm3,%xmm12
  movdqa %xmm1,%xmm5
  shufps $0xdd,-0x30(%rax),%xmm0
  movdqa %xmm4,%xmm7
  movdqa %xmm0,%xmm11
  shufps $0x88,-0x50(%rax),%xmm7
  shufps $0xdd,-0x50(%rax),%xmm4
  shufps $0x88,%xmm7,%xmm12
  shufps $0xdd,%xmm7,%xmm3
  shufps $0x88,%xmm4,%xmm5
  shufps $0xdd,%xmm4,%xmm1
  movdqa %xmm12,%xmm7
  movdqa %xmm12,%xmm4
  shufps $0xdd,-0x10(%rax),%xmm2
  shufps $0xdd,%xmm8,%xmm4
  shufps $0x88,%xmm2,%xmm11
  shufps $0xdd,%xmm2,%xmm0
  shufps $0x88,%xmm8,%xmm7
  movdqa %xmm3,%xmm14
  movdqa %xmm5,%xmm8
  movdqa %xmm1,%xmm2
  shufps $0xdd,%xmm0,%xmm1
  movdqa %xmm1,%xmm12
  shufps $0xdd,%xmm11,%xmm5
  shufps $0xdd,%xmm9,%xmm3
  shufps $0x88,%xmm11,%xmm8
  paddd  %xmm7,%xmm12
  shufps $0x88,%xmm9,%xmm14
  psubd  %xmm1,%xmm7
  shufps $0x88,%xmm0,%xmm2
  movdqa %xmm14,%xmm11
  movdqa %xmm3,%xmm0
  movdqa %xmm2,%xmm1
  paddd  %xmm5,%xmm11
  paddd  %xmm4,%xmm1
  paddd  %xmm8,%xmm0
  psubd  %xmm3,%xmm8
  movdqa %xmm12,%xmm3
  psubd  %xmm1,%xmm3
  movdqa %xmm1,%xmm9
  movdqa %xmm11,%xmm1
  paddd  %xmm0,%xmm1
  psubd  %xmm11,%xmm0
  psubd  %xmm5,%xmm14
  movdqa %xmm0,%xmm5
  psubd  %xmm4,%xmm2
  paddd  %xmm3,%xmm5
  paddd  %xmm12,%xmm9
  movdqa %xmm1,%xmm4
  paddd  %xmm9,%xmm4
  psubd  %xmm1,%xmm9
  movdqa %xmm5,%xmm1
  pslld  $0x3,%xmm1
  movdqa %xmm14,%xmm15
  movdqa %xmm2,%xmm12
  paddd  %xmm5,%xmm1
  paddd  %xmm7,%xmm15
  movdqa %xmm14,%xmm13
  pslld  $0x4,%xmm1
  paddd  %xmm8,%xmm12
  paddd  %xmm8,%xmm13
  pslld  $0x1,%xmm4
  pslld  $0x1,%xmm9
  psubd  %xmm5,%xmm1
  movdqa %xmm1,%xmm5
  pslld  $0x5,%xmm5
  psubd  %xmm1,%xmm5
  movdqa %xmm3,%xmm1
  pslld  $0x1,%xmm1
  paddd  %xmm3,%xmm1
  pslld  $0x4,%xmm1
  paddd  %xmm3,%xmm1
  pslld  $0x6,%xmm1
  psubd  %xmm3,%xmm1
  movdqa %xmm0,%xmm3
  pslld  $0x4,%xmm3
  pslld  $0x1,%xmm1
  psubd  %xmm0,%xmm3
  paddd  %xmm5,%xmm1
  pslld  $0x2,%xmm3
  paddd  %xmm10,%xmm1
  psubd  %xmm0,%xmm3
  psrad  $0xc,%xmm1
  pslld  $0x3,%xmm3
  paddd  %xmm0,%xmm3
  pslld  $0x5,%xmm3
  paddd  %xmm3,%xmm0
  psubd  %xmm0,%xmm5
  movdqa %xmm15,%xmm0
  paddd  %xmm12,%xmm0
  paddd  %xmm10,%xmm5
  movdqa %xmm0,%xmm11
  psrad  $0xc,%xmm5
  pslld  $0x2,%xmm11
  paddd  %xmm0,%xmm11
  movdqa %xmm11,%xmm3
  pslld  $0x4,%xmm3
  psubd  %xmm11,%xmm3
  movdqa %xmm2,%xmm11
  pslld  $0x2,%xmm3
  paddd  %xmm7,%xmm11
  paddd  %xmm0,%xmm3
  pslld  $0x5,%xmm3
  paddd  %xmm0,%xmm3
  movdqa %xmm11,%xmm0
  pslld  $0x3,%xmm0
  psubd  %xmm11,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm11,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm11,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm11,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm11,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm11,%xmm0
  movdqa %xmm6,%xmm11
  psubd  %xmm0,%xmm11
  movdqa %xmm13,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x7,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm13,%xmm0
  movdqa %xmm6,%xmm13
  psubd  %xmm0,%xmm13
  movdqa %xmm12,%xmm0
  pslld  $0x6,%xmm0
  psubd  %xmm12,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm12,%xmm0
  pslld  $0x4,%xmm0
  paddd  %xmm12,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm12,%xmm0
  movdqa %xmm3,%xmm12
  psubd  %xmm0,%xmm12
  movdqa %xmm15,%xmm0
  pslld  $0x1,%xmm0
  paddd  %xmm15,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm15,%xmm0
  pslld  $0x5,%xmm0
  psubd  %xmm15,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm0,%xmm3
  movdqa %xmm2,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm2,%xmm0
  movdqa %xmm0,%xmm15
  pslld  $0x4,%xmm15
  paddd  %xmm15,%xmm0
  pslld  $0x3,%xmm0
  psubd  %xmm2,%xmm0
  movdqa %xmm0,%xmm2
  movdqa %xmm14,%xmm0
  pslld  $0x5,%xmm0
  pslld  $0x1,%xmm2
  paddd  %xmm14,%xmm0
  paddd  %xmm11,%xmm2
  pslld  $0x3,%xmm0
  paddd  %xmm12,%xmm2
  psubd  %xmm14,%xmm0
  paddd  %xmm10,%xmm2
  pslld  $0x2,%xmm0
  psrad  $0xc,%xmm2
  psubd  %xmm14,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm14,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm14,%xmm0
  movdqa %xmm8,%xmm14
  pslld  $0x1,%xmm14
  paddd  %xmm13,%xmm0
  paddd  %xmm8,%xmm14
  paddd  %xmm3,%xmm0
  movdqa %xmm14,%xmm15
  paddd  %xmm10,%xmm0
  pslld  $0x4,%xmm15
  psrad  $0xc,%xmm0
  paddd  %xmm15,%xmm14
  pslld  $0x2,%xmm14
  psubd  %xmm8,%xmm14
  movdqa %xmm14,%xmm8
  pslld  $0x5,%xmm8
  psubd  %xmm14,%xmm8
  pslld  $0x2,%xmm8
  paddd  %xmm13,%xmm8
  paddd  %xmm8,%xmm12
  movdqa %xmm7,%xmm8
  pslld  $0x1,%xmm8
  paddd  %xmm10,%xmm12
  paddd  %xmm7,%xmm8
  psrad  $0xc,%xmm12
  movdqa %xmm8,%xmm13
  pslld  $0xa,%xmm13
  paddd  %xmm13,%xmm8
  pslld  $0x2,%xmm8
  psubd  %xmm7,%xmm8
  movdqa %xmm8,%xmm7
  paddd  %xmm11,%xmm7
  movdqa %xmm12,%xmm11
  punpckhdq %xmm2,%xmm12
  paddd  %xmm7,%xmm3
  movdqa %xmm4,%xmm7
  punpckldq %xmm2,%xmm11
  paddd  %xmm10,%xmm3
  punpckldq %xmm9,%xmm7
  punpckhdq %xmm9,%xmm4
  psrad  $0xc,%xmm3
  movdqa %xmm3,%xmm8
  punpckhdq %xmm0,%xmm3
  punpckldq %xmm0,%xmm8
  movdqa %xmm1,%xmm0
  punpckhdq %xmm5,%xmm1
  punpckldq %xmm5,%xmm0
  movdqa %xmm8,%xmm9
  movdqa %xmm7,%xmm5
  punpckhdq %xmm0,%xmm7
  punpckldq %xmm0,%xmm5
  punpckldq %xmm11,%xmm9
  movdqa %xmm7,%xmm2
  movdqa %xmm4,%xmm0
  movdqa %xmm8,%xmm7
  punpckldq %xmm1,%xmm0
  punpckhdq %xmm1,%xmm4
  punpckhdq %xmm11,%xmm7
  movdqa %xmm3,%xmm1
  movdqa %xmm5,%xmm8
  punpckhdq %xmm9,%xmm5
  punpckldq %xmm12,%xmm1
  movaps %xmm5,-0x70(%rax)
  movdqa %xmm2,%xmm5
  punpckhdq %xmm7,%xmm2
  movaps %xmm2,-0x50(%rax)
  movdqa %xmm0,%xmm2
  punpckhdq %xmm1,%xmm0
  punpckldq %xmm7,%xmm5
  punpckhdq %xmm12,%xmm3
  movaps %xmm0,-0x30(%rax)
  movdqa %xmm4,%xmm0
  punpckldq %xmm1,%xmm2
  punpckldq %xmm9,%xmm8
  punpckldq %xmm3,%xmm0
  punpckhdq %xmm3,%xmm4
  movaps %xmm5,-0x60(%rax)
  movaps %xmm8,-0x80(%rax)
  movaps %xmm2,-0x40(%rax)
  movaps %xmm0,-0x20(%rax)
  movaps %xmm4,-0x10(%rax)
  cmp    %rdx,%rax
  jne    L14
  movdqa 0x150(%rsp),%xmm1
  movdqa %xmm6,%xmm9
  paddd  0x170(%rsp),%xmm1
  movdqa 0xf0(%rsp),%xmm10
  paddd  0x1d0(%rsp),%xmm10
  movdqa 0x1b0(%rsp),%xmm5
  movdqa %xmm1,%xmm15
  paddd  0x110(%rsp),%xmm5
  movdqa 0x130(%rsp),%xmm0
  paddd  %xmm10,%xmm15
  paddd  0x190(%rsp),%xmm0
  psubd  %xmm1,%xmm10
  movdqa %xmm5,%xmm7
  movdqa 0x110(%rsp),%xmm8
  movdqa 0x130(%rsp),%xmm3
  psubd  %xmm0,%xmm5
  movdqa %xmm10,%xmm1
  paddd  %xmm0,%xmm7
  movdqa 0x150(%rsp),%xmm4
  paddd  %xmm5,%xmm1
  movaps %xmm7,(%rsp)
  psubd  0x190(%rsp),%xmm3
  movdqa 0xf0(%rsp),%xmm12
  psubd  0x1b0(%rsp),%xmm8
  movdqa %xmm1,%xmm0
  psubd  0x170(%rsp),%xmm4
  movaps %xmm15,0x90(%rsp)
  pslld  $0x3,%xmm0
  movdqa %xmm3,%xmm2
  psubd  0x1d0(%rsp),%xmm12
  movdqa 0x100(%rsp),%xmm11
  paddd  %xmm1,%xmm0
  movdqa %xmm4,%xmm15
  paddd  %xmm8,%xmm4
  pslld  $0x4,%xmm0
  paddd  %xmm12,%xmm2
  movdqa %xmm8,%xmm14
  movaps %xmm15,0x80(%rsp)
  psubd  %xmm1,%xmm0
  paddd  %xmm3,%xmm14
  psubd  0x1e0(%rsp),%xmm11
  movdqa %xmm0,%xmm1
  pslld  $0x5,%xmm1
  psubd  %xmm0,%xmm1
  movdqa %xmm4,%xmm0
  paddd  %xmm2,%xmm0
  movaps %xmm1,0xd0(%rsp)
  movdqa %xmm0,%xmm7
  pslld  $0x2,%xmm7
  paddd  %xmm0,%xmm7
  movdqa %xmm7,%xmm1
  pslld  $0x4,%xmm1
  psubd  %xmm7,%xmm1
  movdqa %xmm15,%xmm7
  pslld  $0x2,%xmm1
  paddd  %xmm12,%xmm7
  paddd  %xmm0,%xmm1
  pslld  $0x5,%xmm1
  paddd  %xmm0,%xmm1
  movdqa %xmm7,%xmm0
  pslld  $0x3,%xmm0
  psubd  %xmm7,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm7,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm7,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm7,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm7,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm7,%xmm0
  psubd  %xmm0,%xmm9
  movdqa %xmm14,%xmm0
  pslld  $0x2,%xmm0
  movaps %xmm9,0x10(%rsp)
  movdqa %xmm6,%xmm9
  paddd  %xmm14,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm14,%xmm0
  pslld  $0x7,%xmm0
  paddd  %xmm14,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm14,%xmm0
  movdqa 0x1e0(%rsp),%xmm14
  paddd  0x100(%rsp),%xmm14
  psubd  %xmm0,%xmm9
  movdqa %xmm4,%xmm0
  movaps %xmm9,0xa0(%rsp)
  pslld  $0x6,%xmm0
  movdqa %xmm14,%xmm9
  movdqa 0x120(%rsp),%xmm14
  psubd  0x1c0(%rsp),%xmm14
  psubd  %xmm4,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm4,%xmm0
  movdqa %xmm14,%xmm7
  pslld  $0x4,%xmm0
  paddd  %xmm4,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm4,%xmm0
  movdqa %xmm1,%xmm4
  psubd  %xmm0,%xmm4
  movdqa %xmm2,%xmm0
  pslld  $0x1,%xmm0
  movaps %xmm4,0x30(%rsp)
  movdqa 0x1c0(%rsp),%xmm4
  paddd  0x120(%rsp),%xmm4
  paddd  %xmm2,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm2,%xmm0
  pslld  $0x5,%xmm0
  psubd  %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  pslld  $0x2,%xmm0
  psubd  %xmm0,%xmm2
  movaps %xmm2,0x20(%rsp)
  movdqa 0x1a0(%rsp),%xmm0
  movdqa 0x180(%rsp),%xmm1
  paddd  0x160(%rsp),%xmm1
  paddd  0x140(%rsp),%xmm0
  movdqa 0x140(%rsp),%xmm2
  movdqa 0x160(%rsp),%xmm13
  psubd  0x1a0(%rsp),%xmm2
  movdqa %xmm1,%xmm14
  psubd  0x180(%rsp),%xmm13
  paddd  %xmm9,%xmm14
  psubd  %xmm1,%xmm9
  movaps %xmm14,0x60(%rsp)
  movdqa %xmm0,%xmm14
  paddd  %xmm4,%xmm14
  psubd  %xmm0,%xmm4
  movaps %xmm13,0x70(%rsp)
  movdqa %xmm4,%xmm0
  movaps %xmm14,0x50(%rsp)
  movdqa %xmm13,%xmm14
  paddd  %xmm9,%xmm0
  paddd  %xmm7,%xmm14
  movdqa %xmm0,%xmm1
  pslld  $0x3,%xmm0
  paddd  %xmm1,%xmm0
  pslld  $0x4,%xmm0
  psubd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  pslld  $0x5,%xmm1
  psubd  %xmm0,%xmm1
  movdqa %xmm2,%xmm0
  paddd  %xmm11,%xmm0
  movaps %xmm1,0xe0(%rsp)
  movdqa %xmm0,%xmm15
  paddd  %xmm14,%xmm0
  movdqa %xmm0,%xmm13
  pslld  $0x2,%xmm0
  movdqa %xmm0,%xmm1
  paddd  %xmm13,%xmm1
  movdqa %xmm1,%xmm0
  pslld  $0x4,%xmm0
  psubd  %xmm1,%xmm0
  pslld  $0x2,%xmm0
  movdqa %xmm0,%xmm1
  movdqa 0x70(%rsp),%xmm0
  paddd  %xmm13,%xmm1
  paddd  %xmm11,%xmm0
  pslld  $0x5,%xmm1
  paddd  %xmm13,%xmm1
  movdqa %xmm0,%xmm13
  pslld  $0x3,%xmm0
  psubd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm13,%xmm0
  movdqa %xmm6,%xmm13
  psubd  %xmm0,%xmm13
  movdqa %xmm2,%xmm0
  paddd  %xmm7,%xmm0
  movaps %xmm13,0x40(%rsp)
  movdqa %xmm0,%xmm13
  pslld  $0x2,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x7,%xmm0
  paddd  %xmm13,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm13,%xmm0
  movdqa 0x50(%rsp),%xmm13
  paddd  0x60(%rsp),%xmm13
  psubd  %xmm0,%xmm6
  movdqa %xmm14,%xmm0
  pslld  $0x6,%xmm0
  movaps %xmm6,0xc0(%rsp)
  movdqa %xmm1,%xmm6
  psubd  %xmm14,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm14,%xmm0
  pslld  $0x4,%xmm0
  paddd  %xmm14,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm14,%xmm0
  movdqa %xmm1,%xmm14
  movdqa %xmm13,%xmm1
  psubd  %xmm0,%xmm6
  movdqa %xmm15,%xmm0
  pslld  $0x1,%xmm0
  movaps %xmm6,0xb0(%rsp)
  movdqa (%rsp),%xmm6
  paddd  %xmm15,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm15,%xmm0
  pslld  $0x5,%xmm0
  psubd  %xmm15,%xmm0
  movdqa 0x90(%rsp),%xmm15
  pslld  $0x2,%xmm0
  paddd  %xmm15,%xmm6
  psubd  %xmm0,%xmm14
  movdqa %xmm6,%xmm0
  movdqa D29(%rip),%xmm6
  paddd  %xmm6,%xmm0
  paddd  %xmm6,%xmm1
  psrad  $0x4,%xmm1
  psrad  $0x4,%xmm0
  movdqa %xmm0,%xmm13
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm13
  movdqa %xmm0,%xmm1
  punpckhwd %xmm13,%xmm1
  punpcklwd %xmm13,%xmm0
  punpcklwd %xmm1,%xmm0
  movups %xmm0,(%rsi)
  movdqa %xmm12,%xmm0
  pslld  $0x1,%xmm0
  paddd  %xmm12,%xmm0
  movdqa %xmm0,%xmm1
  pslld  $0xa,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm11,%xmm1
  pslld  $0x1,%xmm1
  pslld  $0x2,%xmm0
  paddd  %xmm11,%xmm1
  psubd  %xmm12,%xmm0
  movdqa D8(%rip),%xmm12
  movdqa %xmm1,%xmm13
  paddd  0x10(%rsp),%xmm0
  paddd  0x20(%rsp),%xmm0
  pslld  $0xa,%xmm13
  paddd  %xmm13,%xmm1
  paddd  %xmm12,%xmm0
  movdqa 0xe0(%rsp),%xmm13
  pslld  $0x2,%xmm1
  psrad  $0x11,%xmm0
  psubd  %xmm11,%xmm1
  paddd  0x40(%rsp),%xmm1
  movdqa %xmm0,%xmm11
  paddd  %xmm14,%xmm1
  paddd  %xmm12,%xmm1
  psrad  $0x11,%xmm1
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm11
  movdqa %xmm0,%xmm1
  punpcklwd %xmm11,%xmm0
  punpckhwd %xmm11,%xmm1
  punpcklwd %xmm1,%xmm0
  movdqa %xmm9,%xmm1
  movups %xmm0,0x10(%rsi)
  movdqa %xmm10,%xmm0
  pslld  $0x1,%xmm1
  pslld  $0x1,%xmm0
  paddd  %xmm9,%xmm1
  paddd  %xmm10,%xmm0
  pslld  $0x4,%xmm1
  pslld  $0x4,%xmm0
  paddd  %xmm9,%xmm1
  paddd  %xmm10,%xmm0
  pslld  $0x6,%xmm1
  pslld  $0x6,%xmm0
  psubd  %xmm9,%xmm1
  psubd  %xmm10,%xmm0
  pslld  $0x1,%xmm1
  movdqa 0xd0(%rsp),%xmm10
  pslld  $0x1,%xmm0
  paddd  %xmm13,%xmm1
  paddd  %xmm10,%xmm0
  paddd  %xmm12,%xmm1
  paddd  %xmm12,%xmm0
  psrad  $0x11,%xmm1
  psrad  $0x11,%xmm0
  movdqa %xmm0,%xmm9
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm9
  movdqa %xmm0,%xmm1
  punpckhwd %xmm9,%xmm1
  punpcklwd %xmm9,%xmm0
  movdqa 0xa0(%rsp),%xmm9
  punpcklwd %xmm1,%xmm0
  movups %xmm0,0x20(%rsi)
  movdqa %xmm8,%xmm0
  pslld  $0x1,%xmm0
  paddd  %xmm8,%xmm0
  movdqa %xmm0,%xmm1
  pslld  $0x4,%xmm1
  paddd  %xmm1,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm8,%xmm0
  movdqa %xmm0,%xmm1
  pslld  $0x5,%xmm1
  psubd  %xmm0,%xmm1
  pslld  $0x2,%xmm1
  movdqa %xmm1,%xmm0
  movdqa %xmm7,%xmm1
  pslld  $0x1,%xmm1
  paddd  %xmm9,%xmm0
  paddd  0x30(%rsp),%xmm0
  paddd  %xmm7,%xmm1
  movdqa %xmm1,%xmm8
  paddd  %xmm12,%xmm0
  pslld  $0x4,%xmm8
  psrad  $0x11,%xmm0
  paddd  %xmm8,%xmm1
  movdqa 0xc0(%rsp),%xmm8
  movdqa 0xb0(%rsp),%xmm11
  pslld  $0x2,%xmm1
  psubd  %xmm7,%xmm1
  movdqa %xmm1,%xmm7
  pslld  $0x5,%xmm7
  psubd  %xmm1,%xmm7
  pslld  $0x2,%xmm7
  movdqa %xmm7,%xmm1
  movdqa %xmm0,%xmm7
  paddd  %xmm8,%xmm1
  paddd  %xmm11,%xmm1
  paddd  %xmm12,%xmm1
  psrad  $0x11,%xmm1
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm7
  movdqa %xmm0,%xmm1
  punpcklwd %xmm7,%xmm0
  punpckhwd %xmm7,%xmm1
  punpcklwd %xmm1,%xmm0
  movdqa %xmm15,%xmm1
  psubd  (%rsp),%xmm1
  movdqa 0x80(%rsp),%xmm15
  movups %xmm0,0x30(%rsi)
  movdqa %xmm1,%xmm0
  movdqa 0x60(%rsp),%xmm1
  psubd  0x50(%rsp),%xmm1
  paddd  %xmm6,%xmm0
  paddd  %xmm6,%xmm1
  psrad  $0x4,%xmm0
  psrad  $0x4,%xmm1
  movdqa %xmm0,%xmm6
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm6
  movdqa %xmm0,%xmm1
  punpcklwd %xmm6,%xmm0
  punpckhwd %xmm6,%xmm1
  punpcklwd %xmm1,%xmm0
  movdqa %xmm3,%xmm1
  pslld  $0x5,%xmm1
  movups %xmm0,0x40(%rsi)
  movdqa %xmm1,%xmm0
  movdqa %xmm9,%xmm1
  paddd  %xmm3,%xmm0
  pslld  $0x3,%xmm0
  psubd  %xmm3,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm3,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm3,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm3,%xmm0
  movdqa %xmm2,%xmm3
  pslld  $0x5,%xmm3
  paddd  %xmm0,%xmm1
  paddd  0x20(%rsp),%xmm1
  movdqa %xmm3,%xmm0
  paddd  %xmm2,%xmm0
  paddd  %xmm12,%xmm1
  pslld  $0x3,%xmm0
  psrad  $0x11,%xmm1
  psubd  %xmm2,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm2,%xmm0
  pslld  $0x2,%xmm0
  paddd  %xmm2,%xmm0
  pslld  $0x2,%xmm0
  psubd  %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  paddd  %xmm8,%xmm0
  paddd  %xmm14,%xmm0
  paddd  %xmm12,%xmm0
  psrad  $0x11,%xmm0
  punpcklwd %xmm0,%xmm1
  punpckhwd %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm3
  movdqa %xmm13,%xmm2
  movdqa 0x70(%rsp),%xmm13
  punpcklwd %xmm3,%xmm1
  movups %xmm1,0x50(%rsi)
  movdqa %xmm5,%xmm1
  pslld  $0x4,%xmm1
  psubd  %xmm5,%xmm1
  pslld  $0x2,%xmm1
  psubd  %xmm5,%xmm1
  pslld  $0x3,%xmm1
  paddd  %xmm5,%xmm1
  pslld  $0x5,%xmm1
  paddd  %xmm5,%xmm1
  psubd  %xmm1,%xmm10
  movdqa %xmm4,%xmm1
  pslld  $0x4,%xmm1
  movdqa %xmm10,%xmm0
  psubd  %xmm4,%xmm1
  paddd  %xmm12,%xmm0
  pslld  $0x2,%xmm1
  psrad  $0x11,%xmm0
  psubd  %xmm4,%xmm1
  pslld  $0x3,%xmm1
  paddd  %xmm4,%xmm1
  pslld  $0x5,%xmm1
  paddd  %xmm4,%xmm1
  psubd  %xmm1,%xmm2
  paddd  %xmm12,%xmm2
  movdqa %xmm2,%xmm1
  movdqa %xmm0,%xmm2
  psrad  $0x11,%xmm1
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm2
  movdqa %xmm0,%xmm1
  punpcklwd %xmm2,%xmm0
  punpckhwd %xmm2,%xmm1
  punpcklwd %xmm1,%xmm0
  movups %xmm0,0x60(%rsi)
  movdqa %xmm15,%xmm0
  pslld  $0x3,%xmm0
  paddd  %xmm15,%xmm0
  movdqa %xmm0,%xmm1
  pslld  $0x4,%xmm1
  paddd  %xmm1,%xmm0
  pslld  $0x3,%xmm0
  psubd  %xmm15,%xmm0
  pslld  $0x1,%xmm0
  paddd  0x10(%rsp),%xmm0
  paddd  0x30(%rsp),%xmm0
  paddd  %xmm12,%xmm0
  movdqa %xmm0,%xmm1
  movdqa %xmm13,%xmm0
  pslld  $0x3,%xmm0
  psrad  $0x11,%xmm1
  paddd  %xmm13,%xmm0
  movdqa %xmm0,%xmm2
  pslld  $0x4,%xmm2
  paddd  %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  pslld  $0x3,%xmm0
  psubd  %xmm13,%xmm0
  pslld  $0x1,%xmm0
  paddd  0x40(%rsp),%xmm0
  paddd  %xmm11,%xmm0
  paddd  %xmm12,%xmm0
  psrad  $0x11,%xmm0
  punpcklwd %xmm0,%xmm1
  punpckhwd %xmm0,%xmm2
  movdqa %xmm1,%xmm0
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm0
  punpcklwd %xmm0,%xmm1
  movups %xmm1,0x70(%rsi)
  mov    0x1f8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  add    $0x208,%rsp
  ret
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: label: D15
datatype: byte[16]
name: retrieve_data
arguments: label: D29
datatype: byte[16]
name: retrieve_data
arguments: label: D8
datatype: byte[16]

tool: {"D15": [0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00]}

tool: {"D29": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

tool: {"D8": [0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00]}

assistant: ```c
void fdct(const unsigned short *in, short *out) {
  int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  int tmp10, tmp11, tmp12, tmp13;
  int z1, z2, z3, z4, z5;
  int ctr;
  int data[8 * 8];
  int i, j;
  int *dataptr = data;
  for (i = 0; i < 8; i++) {
    for (j = 0; j < 8; j++) {
      int temp;
      temp = in[i * 8 + j];
      dataptr[i * 8 + j] = temp;
    }
  }
  dataptr = data;
  for (ctr = 8 - 1; ctr >= 0; ctr--) {
    tmp0 = dataptr[0] + dataptr[7];
    tmp7 = dataptr[0] - dataptr[7];
    tmp1 = dataptr[1] + dataptr[6];
    tmp6 = dataptr[1] - dataptr[6];
    tmp2 = dataptr[2] + dataptr[5];
    tmp5 = dataptr[2] - dataptr[5];
    tmp3 = dataptr[3] + dataptr[4];
    tmp4 = dataptr[3] - dataptr[4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[0] = (int)((tmp10 + tmp11) << 1);
    dataptr[4] = (int)((tmp10 - tmp11) << 1);
    z1 = ((tmp12 + tmp13) * (((int)4433)));
    dataptr[2] = (int)(((z1 + ((tmp13) * (((int)6270)))) + (((int)1) << ((13 - 1) - 1))) >> (13 - 1));
    dataptr[6] = (int)(((z1 + ((tmp12) * (-((int)15137)))) + (((int)1) << ((13 - 1) - 1))) >> (13 - 1));
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = ((z3 + z4) * (((int)9633)));
    tmp4 = ((tmp4) * (((int)2446)));
    tmp5 = ((tmp5) * (((int)16819)));
    tmp6 = ((tmp6) * (((int)25172)));
    tmp7 = ((tmp7) * (((int)12299)));
    z1 = ((z1) * (-((int)7373)));
    z2 = ((z2) * (-((int)20995)));
    z3 = ((z3) * (-((int)16069)));
    z4 = ((z4) * (-((int)3196)));
    z3 += z5;
    z4 += z5;
    dataptr[7] = (int)(((tmp4 + z1 + z3) + (((int)1) << ((13 - 1) - 1))) >> (13 - 1));
    dataptr[5] = (int)(((tmp5 + z2 + z4) + (((int)1) << ((13 - 1) - 1))) >> (13 - 1));
    dataptr[3] = (int)(((tmp6 + z2 + z3) + (((int)1) << ((13 - 1) - 1))) >> (13 - 1));
    dataptr[1] = (int)(((tmp7 + z1 + z4) + (((int)1) << ((13 - 1) - 1))) >> (13 - 1));
    dataptr += 8;
  }
  dataptr = data;
  for (ctr = 8 - 1; ctr >= 0; ctr--) {
    tmp0 = dataptr[8 * 0] + dataptr[8 * 7];
    tmp7 = dataptr[8 * 0] - dataptr[8 * 7];
    tmp1 = dataptr[8 * 1] + dataptr[8 * 6];
    tmp6 = dataptr[8 * 1] - dataptr[8 * 6];
    tmp2 = dataptr[8 * 2] + dataptr[8 * 5];
    tmp5 = dataptr[8 * 2] - dataptr[8 * 5];
    tmp3 = dataptr[8 * 3] + dataptr[8 * 4];
    tmp4 = dataptr[8 * 3] - dataptr[8 * 4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[8 * 0] = (int)(((tmp10 + tmp11) + (((int)1) << ((1) - 1))) >> (1));
    dataptr[8 * 4] = (int)(((tmp10 - tmp11) + (((int)1) << ((1) - 1))) >> (1));
    z1 = ((tmp12 + tmp13) * (((int)4433)));
    dataptr[8 * 2] = (int)(((z1 + ((tmp13) * (((int)6270)))) + (((int)1) << ((13 + 1) - 1))) >> (13 + 1));
    dataptr[8 * 6] = (int)(((z1 + ((tmp12) * (-((int)15137)))) + (((int)1) << ((13 + 1) - 1))) >> (13 + 1));
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = ((z3 + z4) * (((int)9633)));
    tmp4 = ((tmp4) * (((int)2446)));
    tmp5 = ((tmp5) * (((int)16819)));
    tmp6 = ((tmp6) * (((int)25172)));
    tmp7 = ((tmp7) * (((int)12299)));
    z1 = ((z1) * (-((int)7373)));
    z2 = ((z2) * (-((int)20995)));
    z3 = ((z3) * (-((int)16069)));
    z4 = ((z4) * (-((int)3196)));
    z3 += z5;
    z4 += z5;
    dataptr[8 * 7] = (int)(((tmp4 + z1 + z3) + (((int)1) << ((13 + 1) - 1))) >> (13 + 1));
    dataptr[8 * 5] = (int)(((tmp5 + z2 + z4) + (((int)1) << ((13 + 1) - 1))) >> (13 + 1));
    dataptr[8 * 3] = (int)(((tmp6 + z2 + z3) + (((int)1) << ((13 + 1) - 1))) >> (13 + 1));
    dataptr[8 * 1] = (int)(((tmp7 + z1 + z4) + (((int)1) << ((13 + 1) - 1))) >> (13 + 1));
    dataptr++;
  }
  for (i = 0; i < 8; i++)
    for (j = 0; j < 8; j++)
      out[i * 8 + j] = data[i * 8 + j] >> 3;
}
```