user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<enc>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x408,%rsp
  mov    0x10(%rsi),%rdi
  lea    D84(%rip),%rsi
  mov    %fs:0x28,%rax
  mov    %rax,0x3f8(%rsp)
  xor    %eax,%eax
  call   <fopen@plt>
  mov    0x18(%rbx),%rdi
  lea    D431(%rip),%rsi
  mov    %rax,%rbp
  call   <fopen@plt>
  test   %rbp,%rbp
  je     L150
  mov    %rax,%r12
  test   %rax,%rax
  je     L56
  nopl   0x0(%rax,%rax,1)
L53:
  mov    %rbp,%rdi
  call   <feof@plt>
  test   %eax,%eax
  jne    L34
  lea    0x370(%rsp),%rax
  lea    0x3f0(%rsp),%r13
  mov    %rax,0x58(%rsp)
  mov    %rax,%rbx
L200:
  mov    %rbp,%rdi
  add    $0x1,%rbx
  call   <fgetc@plt>
  mov    %al,-0x1(%rbx)
  cmp    %rbx,%r13
  jne    L200
  movdqa D103(%rip),%xmm7
  movdqa D103(%rip),%xmm0
  lea    0x70(%rsp),%rsi
  lea    0x170(%rsp),%rdi
  movdqa D103(%rip),%xmm2
  movdqa D103(%rip),%xmm3
  lea    0x270(%rsp),%rbx
  pand   0x380(%rsp),%xmm0
  pand   0x370(%rsp),%xmm7
  movdqa 0x370(%rsp),%xmm6
  pand   0x390(%rsp),%xmm2
  movdqa 0x3a0(%rsp),%xmm1
  packuswb %xmm0,%xmm7
  movdqa 0x380(%rsp),%xmm0
  movdqa D81(%rip),%xmm12
  psrlw  $0x8,%xmm6
  movdqa D81(%rip),%xmm13
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm1
  packuswb %xmm0,%xmm6
  movdqa D103(%rip),%xmm0
  pand   0x3a0(%rsp),%xmm0
  packuswb %xmm0,%xmm2
  movdqa 0x390(%rsp),%xmm0
  pand   %xmm2,%xmm3
  psrlw  $0x8,%xmm2
  psrlw  $0x8,%xmm0
  packuswb %xmm1,%xmm0
  movdqa D103(%rip),%xmm1
  pand   %xmm7,%xmm1
  psrlw  $0x8,%xmm7
  packuswb %xmm3,%xmm1
  packuswb %xmm2,%xmm7
  movdqa D103(%rip),%xmm3
  movdqa D103(%rip),%xmm2
  movdqa %xmm1,%xmm4
  pand   %xmm0,%xmm2
  psrlw  $0x8,%xmm0
  pand   %xmm6,%xmm3
  packuswb %xmm2,%xmm3
  movdqa D193(%rip),%xmm2
  psrlw  $0x8,%xmm6
  packuswb %xmm0,%xmm6
  pxor   %xmm0,%xmm0
  pand   %xmm3,%xmm2
  punpcklbw %xmm0,%xmm4
  movdqa %xmm0,%xmm10
  movdqa %xmm2,%xmm5
  punpckhbw %xmm0,%xmm2
  punpckhbw %xmm0,%xmm1
  punpcklbw %xmm0,%xmm5
  psllw  $0x8,%xmm2
  psllw  $0x8,%xmm5
  paddw  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  paddw  %xmm4,%xmm5
  movdqa %xmm0,%xmm4
  movdqa %xmm2,%xmm8
  pcmpgtb %xmm3,%xmm4
  movdqa %xmm5,%xmm9
  punpckhwd %xmm1,%xmm5
  punpcklwd %xmm1,%xmm9
  punpckhwd %xmm1,%xmm2
  punpcklwd %xmm1,%xmm8
  paddd  %xmm9,%xmm12
  pcmpeqb %xmm0,%xmm4
  pcmpgtb %xmm4,%xmm10
  movdqa %xmm4,%xmm3
  punpcklbw %xmm10,%xmm3
  punpckhbw %xmm10,%xmm4
  movdqa %xmm1,%xmm10
  pcmpgtw %xmm3,%xmm10
  movdqa %xmm3,%xmm11
  punpcklwd %xmm10,%xmm11
  punpckhwd %xmm10,%xmm3
  movdqa %xmm4,%xmm10
  pand   %xmm11,%xmm9
  pandn  %xmm12,%xmm11
  por    %xmm9,%xmm11
  movdqa D81(%rip),%xmm9
  cvtdq2ps %xmm11,%xmm11
  paddd  %xmm5,%xmm9
  pand   %xmm3,%xmm5
  pandn  %xmm9,%xmm3
  movdqa D81(%rip),%xmm9
  por    %xmm5,%xmm3
  movdqa %xmm1,%xmm5
  pcmpgtw %xmm4,%xmm5
  paddd  %xmm8,%xmm9
  cvtdq2ps %xmm3,%xmm3
  punpcklwd %xmm5,%xmm10
  punpckhwd %xmm5,%xmm4
  movdqa D81(%rip),%xmm5
  pand   %xmm10,%xmm8
  pandn  %xmm9,%xmm10
  paddd  %xmm2,%xmm5
  pand   %xmm4,%xmm2
  por    %xmm8,%xmm10
  pandn  %xmm5,%xmm4
  cvtdq2ps %xmm10,%xmm10
  por    %xmm2,%xmm4
  movdqa D193(%rip),%xmm2
  movaps %xmm4,0x10(%rsp)
  pand   %xmm6,%xmm2
  movdqa %xmm2,%xmm5
  punpckhbw %xmm0,%xmm2
  punpcklbw %xmm0,%xmm5
  psllw  $0x8,%xmm2
  movdqa %xmm5,%xmm4
  movdqa %xmm7,%xmm5
  punpckhbw %xmm0,%xmm7
  punpcklbw %xmm0,%xmm5
  psllw  $0x8,%xmm4
  por    %xmm7,%xmm2
  por    %xmm5,%xmm4
  movdqa %xmm0,%xmm5
  movdqa %xmm2,%xmm7
  pcmpgtb %xmm6,%xmm5
  movdqa %xmm4,%xmm9
  movdqa %xmm4,%xmm8
  movdqa %xmm0,%xmm6
  punpckhwd %xmm1,%xmm8
  punpcklwd %xmm1,%xmm7
  punpckhwd %xmm1,%xmm2
  punpcklwd %xmm1,%xmm9
  movdqa %xmm5,%xmm4
  paddd  %xmm9,%xmm13
  pcmpeqb %xmm0,%xmm4
  pcmpgtb %xmm4,%xmm6
  movdqa %xmm4,%xmm5
  punpcklbw %xmm6,%xmm5
  punpckhbw %xmm6,%xmm4
  movdqa %xmm1,%xmm6
  pcmpgtw %xmm5,%xmm6
  movdqa %xmm5,%xmm12
  movdqa %xmm4,%xmm15
  punpcklwd %xmm6,%xmm12
  punpckhwd %xmm6,%xmm5
  movdqa D81(%rip),%xmm6
  pand   %xmm12,%xmm9
  pandn  %xmm13,%xmm12
  paddd  %xmm8,%xmm6
  pand   %xmm5,%xmm8
  por    %xmm9,%xmm12
  pandn  %xmm6,%xmm5
  movdqa %xmm1,%xmm6
  movaps %xmm12,0x20(%rsp)
  pcmpgtw %xmm4,%xmm6
  por    %xmm8,%xmm5
  movdqa D81(%rip),%xmm8
  movaps %xmm5,0x30(%rsp)
  paddd  %xmm7,%xmm8
  punpcklwd %xmm6,%xmm15
  punpckhwd %xmm6,%xmm4
  movdqa D81(%rip),%xmm6
  movdqa %xmm15,%xmm5
  pand   %xmm15,%xmm7
  paddd  %xmm2,%xmm6
  pandn  %xmm8,%xmm5
  pand   %xmm4,%xmm2
  pandn  %xmm6,%xmm4
  movdqa %xmm5,%xmm14
  movdqa %xmm4,%xmm6
  por    %xmm7,%xmm14
  movdqa D103(%rip),%xmm7
  por    %xmm2,%xmm6
  movaps %xmm14,0x40(%rsp)
  movaps %xmm6,0x60(%rsp)
  pand   0x3b0(%rsp),%xmm7
  movdqa D103(%rip),%xmm2
  movdqa 0x3b0(%rsp),%xmm6
  pand   0x3c0(%rsp),%xmm2
  movdqa D103(%rip),%xmm4
  mulps  D67(%rip),%xmm3
  packuswb %xmm2,%xmm7
  psrlw  $0x8,%xmm6
  movdqa 0x3c0(%rsp),%xmm2
  pand   0x3e0(%rsp),%xmm4
  movdqa 0x3e0(%rsp),%xmm15
  mulps  D67(%rip),%xmm11
  movdqa D103(%rip),%xmm8
  psrlw  $0x8,%xmm2
  packuswb %xmm2,%xmm6
  movdqa D103(%rip),%xmm2
  pand   0x3d0(%rsp),%xmm2
  psrlw  $0x8,%xmm15
  movaps %xmm3,0x180(%rsp)
  mulps  D67(%rip),%xmm10
  packuswb %xmm4,%xmm2
  movdqa 0x3d0(%rsp),%xmm4
  movaps %xmm11,0x170(%rsp)
  pand   %xmm2,%xmm8
  psrlw  $0x8,%xmm2
  psrlw  $0x8,%xmm4
  packuswb %xmm15,%xmm4
  movdqa D103(%rip),%xmm15
  movaps %xmm10,0x190(%rsp)
  pand   %xmm7,%xmm15
  psrlw  $0x8,%xmm7
  movdqa %xmm15,%xmm5
  packuswb %xmm2,%xmm7
  movdqa D103(%rip),%xmm2
  packuswb %xmm8,%xmm5
  movdqa D103(%rip),%xmm8
  pand   %xmm6,%xmm2
  psrlw  $0x8,%xmm6
  movdqa %xmm5,%xmm9
  pand   %xmm4,%xmm8
  psrlw  $0x8,%xmm4
  punpckhbw %xmm0,%xmm5
  packuswb %xmm4,%xmm6
  packuswb %xmm8,%xmm2
  punpcklbw %xmm0,%xmm9
  movdqa D193(%rip),%xmm4
  pand   %xmm2,%xmm4
  movdqa %xmm4,%xmm8
  punpckhbw %xmm0,%xmm4
  psllw  $0x8,%xmm4
  punpcklbw %xmm0,%xmm8
  paddw  %xmm5,%xmm4
  psllw  $0x8,%xmm8
  movdqa %xmm4,%xmm15
  paddw  %xmm9,%xmm8
  movdqa %xmm0,%xmm9
  punpcklwd %xmm1,%xmm15
  movdqa %xmm8,%xmm13
  punpckhwd %xmm1,%xmm8
  movdqa %xmm15,%xmm12
  movdqa %xmm0,%xmm15
  punpcklwd %xmm1,%xmm13
  pcmpgtb %xmm2,%xmm15
  punpckhwd %xmm1,%xmm4
  movdqa %xmm15,%xmm5
  movdqa %xmm1,%xmm15
  pcmpeqb %xmm0,%xmm5
  pcmpgtb %xmm5,%xmm9
  movdqa %xmm5,%xmm2
  punpcklbw %xmm9,%xmm2
  punpckhbw %xmm9,%xmm5
  pcmpgtw %xmm2,%xmm15
  movdqa %xmm2,%xmm9
  movdqa %xmm15,%xmm14
  punpcklwd %xmm15,%xmm9
  movdqa D81(%rip),%xmm15
  punpckhwd %xmm14,%xmm2
  movdqa D81(%rip),%xmm14
  paddd  %xmm13,%xmm15
  pand   %xmm9,%xmm13
  pandn  %xmm15,%xmm9
  movdqa %xmm8,%xmm15
  por    %xmm13,%xmm9
  pand   %xmm2,%xmm15
  movdqa D81(%rip),%xmm13
  cvtdq2ps %xmm9,%xmm9
  paddd  %xmm8,%xmm13
  pandn  %xmm13,%xmm2
  movdqa %xmm1,%xmm13
  pcmpgtw %xmm5,%xmm13
  por    %xmm15,%xmm2
  movdqa D81(%rip),%xmm15
  movdqa %xmm2,%xmm8
  movdqa %xmm5,%xmm2
  paddd  %xmm12,%xmm15
  cvtdq2ps %xmm8,%xmm8
  punpcklwd %xmm13,%xmm2
  punpckhwd %xmm13,%xmm5
  movdqa %xmm7,%xmm13
  pand   %xmm2,%xmm12
  pandn  %xmm15,%xmm2
  punpckhbw %xmm0,%xmm7
  por    %xmm12,%xmm2
  punpcklbw %xmm0,%xmm13
  movdqa %xmm2,%xmm15
  movdqa D81(%rip),%xmm2
  cvtdq2ps %xmm15,%xmm15
  paddd  %xmm4,%xmm2
  pand   %xmm5,%xmm4
  pandn  %xmm2,%xmm5
  movdqa %xmm5,%xmm2
  por    %xmm4,%xmm2
  movdqa D193(%rip),%xmm4
  movaps %xmm2,(%rsp)
  pand   %xmm6,%xmm4
  movdqa %xmm4,%xmm2
  punpckhbw %xmm0,%xmm4
  psllw  $0x8,%xmm4
  punpcklbw %xmm0,%xmm2
  por    %xmm4,%xmm7
  psllw  $0x8,%xmm2
  movdqa %xmm7,%xmm4
  por    %xmm13,%xmm2
  punpckhwd %xmm1,%xmm7
  punpcklwd %xmm1,%xmm4
  movdqa %xmm2,%xmm13
  punpckhwd %xmm1,%xmm2
  movdqa %xmm4,%xmm12
  movdqa %xmm0,%xmm4
  punpcklwd %xmm1,%xmm13
  pcmpgtb %xmm6,%xmm4
  paddd  %xmm13,%xmm14
  pcmpeqb %xmm0,%xmm4
  pcmpgtb %xmm4,%xmm0
  movdqa %xmm4,%xmm6
  punpcklbw %xmm0,%xmm6
  punpckhbw %xmm0,%xmm4
  movdqa %xmm6,%xmm5
  movdqa %xmm1,%xmm6
  pcmpgtw %xmm5,%xmm6
  pcmpgtw %xmm4,%xmm1
  movdqa %xmm5,%xmm0
  punpcklwd %xmm6,%xmm0
  punpckhwd %xmm6,%xmm5
  movdqa D81(%rip),%xmm6
  pand   %xmm0,%xmm13
  pandn  %xmm14,%xmm0
  paddd  %xmm2,%xmm6
  por    %xmm13,%xmm0
  movdqa %xmm2,%xmm13
  pand   %xmm5,%xmm13
  pandn  %xmm6,%xmm5
  movdqa %xmm4,%xmm6
  cvtdq2ps %xmm0,%xmm0
  punpcklwd %xmm1,%xmm6
  punpckhwd %xmm1,%xmm4
  movdqa D81(%rip),%xmm1
  movdqa %xmm5,%xmm2
  por    %xmm13,%xmm2
  movdqa D81(%rip),%xmm13
  paddd  %xmm7,%xmm1
  pand   %xmm4,%xmm7
  cvtdq2ps %xmm2,%xmm2
  pandn  %xmm1,%xmm4
  cvtdq2ps 0x10(%rsp),%xmm1
  paddd  %xmm12,%xmm13
  pand   %xmm6,%xmm12
  mulps  D67(%rip),%xmm1
  pandn  %xmm13,%xmm6
  por    %xmm7,%xmm4
  mulps  D67(%rip),%xmm0
  por    %xmm12,%xmm6
  mulps  D67(%rip),%xmm2
  cvtdq2ps %xmm6,%xmm6
  mulps  D67(%rip),%xmm9
  mulps  D67(%rip),%xmm8
  movaps %xmm1,0x1a0(%rsp)
  cvtdq2ps (%rsp),%xmm1
  mulps  D67(%rip),%xmm1
  mulps  D67(%rip),%xmm15
  movaps %xmm0,0x230(%rsp)
  cvtdq2ps %xmm4,%xmm0
  mulps  D67(%rip),%xmm6
  movaps %xmm2,0x240(%rsp)
  movaps %xmm9,0x1b0(%rsp)
  mulps  D67(%rip),%xmm0
  movaps %xmm8,0x1c0(%rsp)
  movaps %xmm1,0x1e0(%rsp)
  cvtdq2ps 0x20(%rsp),%xmm1
  mulps  D67(%rip),%xmm1
  movaps %xmm15,0x1d0(%rsp)
  movaps %xmm6,0x250(%rsp)
  movaps %xmm0,0x260(%rsp)
  movaps %xmm1,0x1f0(%rsp)
  cvtdq2ps 0x30(%rsp),%xmm1
  mulps  D67(%rip),%xmm1
  movaps %xmm1,0x200(%rsp)
  cvtdq2ps 0x40(%rsp),%xmm1
  mulps  D67(%rip),%xmm1
  movaps %xmm1,0x210(%rsp)
  cvtdq2ps 0x60(%rsp),%xmm1
  mulps  D67(%rip),%xmm1
  movaps %xmm1,0x220(%rsp)
  call   <edct@plt>
  lea    0xf0(%rsp),%rsi
  lea    0x1f0(%rsp),%rdi
  call   <edct@plt>
  movaps D294(%rip),%xmm0
  movaps 0x70(%rsp),%xmm1
  movaps 0xf0(%rsp),%xmm2
  mulps  %xmm0,%xmm1
  mulps  %xmm0,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  cvttps2dq %xmm2,%xmm2
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps 0x100(%rsp),%xmm2
  movaps %xmm1,0x280(%rsp)
  movaps 0x80(%rsp),%xmm1
  mulps  %xmm0,%xmm2
  movaps %xmm3,0x270(%rsp)
  mulps  %xmm0,%xmm1
  cvttps2dq %xmm2,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps %xmm1,0x2a0(%rsp)
  movaps 0x110(%rsp),%xmm2
  movaps 0x90(%rsp),%xmm1
  movaps %xmm3,0x290(%rsp)
  mulps  %xmm0,%xmm1
  mulps  %xmm0,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  cvttps2dq %xmm2,%xmm2
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps 0x120(%rsp),%xmm2
  movaps %xmm1,0x2c0(%rsp)
  movaps 0xa0(%rsp),%xmm1
  mulps  %xmm0,%xmm2
  movaps %xmm3,0x2b0(%rsp)
  mulps  %xmm0,%xmm1
  cvttps2dq %xmm2,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps %xmm1,0x2e0(%rsp)
  movaps 0x130(%rsp),%xmm2
  movaps 0xb0(%rsp),%xmm1
  movaps %xmm3,0x2d0(%rsp)
  mulps  %xmm0,%xmm1
  mulps  %xmm0,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  cvttps2dq %xmm2,%xmm2
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps 0x140(%rsp),%xmm2
  movaps %xmm1,0x300(%rsp)
  movaps 0xc0(%rsp),%xmm1
  mulps  %xmm0,%xmm2
  movaps %xmm3,0x2f0(%rsp)
  mulps  %xmm0,%xmm1
  cvttps2dq %xmm2,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps %xmm1,0x320(%rsp)
  movaps 0x150(%rsp),%xmm2
  movaps 0xd0(%rsp),%xmm1
  movaps %xmm3,0x310(%rsp)
  mulps  %xmm0,%xmm1
  mulps  %xmm0,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm3
  cvttps2dq %xmm2,%xmm2
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm3
  movaps %xmm1,0x340(%rsp)
  movaps 0xe0(%rsp),%xmm1
  movaps %xmm3,0x330(%rsp)
  mulps  %xmm0,%xmm1
  mulps  0x160(%rsp),%xmm0
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm2
  cvttps2dq %xmm0,%xmm0
  punpckldq %xmm0,%xmm2
  punpckhdq %xmm0,%xmm1
  movaps %xmm2,0x350(%rsp)
  movaps %xmm1,0x360(%rsp)
  jmp    L66
L102:
  test   %r9d,%r9d
  jne    L89
L128:
  test   %r8d,%r8d
  jne    L18
L177:
  mov    (%rsp),%edx
  test   %edx,%edx
  jne    L106
L117:
  test   %r15d,%r15d
  jne    L214
L163:
  test   %r14d,%r14d
  jne    L212
L67:
  test   %r13d,%r13d
  jne    L191
L147:
  mov    0x10(%rsp),%eax
  test   %eax,%eax
  jne    L222
L37:
  add    $0x20,%rbx
  cmp    0x58(%rsp),%rbx
  je     L53
L66:
  movzbl (%rbx),%r10d
  movzbl 0x4(%rbx),%r9d
  movzbl 0x8(%rbx),%r8d
  movzbl 0xc(%rbx),%edx
  test   %r10d,%r10d
  movzbl 0x10(%rbx),%r15d
  movzbl 0x14(%rbx),%r14d
  mov    %r10d,0x40(%rsp)
  setne  %al
  movzbl 0x18(%rbx),%r13d
  movzbl 0x1c(%rbx),%esi
  mov    %edx,(%rsp)
  shl    $0x7,%eax
  mov    %r9d,0x30(%rsp)
  mov    %eax,%ecx
  mov    %esi,0x10(%rsp)
  or     $0x40,%ecx
  test   %r9d,%r9d
  mov    %r8d,0x20(%rsp)
  cmovne %ecx,%eax
  mov    %eax,%ecx
  or     $0x20,%ecx
  test   %r8d,%r8d
  cmovne %ecx,%eax
  mov    %eax,%ecx
  or     $0x10,%ecx
  test   %edx,%edx
  cmovne %ecx,%eax
  mov    %eax,%ecx
  or     $0x8,%ecx
  test   %r15d,%r15d
  cmovne %ecx,%eax
  mov    %eax,%ecx
  or     $0x4,%ecx
  test   %r14d,%r14d
  cmovne %ecx,%eax
  mov    %eax,%ecx
  or     $0x2,%ecx
  test   %r13d,%r13d
  cmovne %ecx,%eax
  mov    %eax,%ecx
  or     $0x1,%ecx
  test   %esi,%esi
  mov    %r12,%rsi
  cmovne %ecx,%eax
  movsbl %al,%edi
  call   <fputc@plt>
  mov    0x40(%rsp),%r10d
  mov    0x20(%rsp),%r8d
  mov    0x30(%rsp),%r9d
  test   %r10d,%r10d
  je     L102
  mov    %r12,%rsi
  mov    %r10d,%edi
  mov    %r8d,0x30(%rsp)
  mov    %r9d,0x20(%rsp)
  call   <fputc@plt>
  mov    0x20(%rsp),%r9d
  mov    0x30(%rsp),%r8d
  test   %r9d,%r9d
  je     L128
L89:
  mov    %r12,%rsi
  mov    %r9d,%edi
  mov    %r8d,0x20(%rsp)
  call   <fputc@plt>
  mov    0x20(%rsp),%r8d
  test   %r8d,%r8d
  je     L177
L18:
  mov    %r12,%rsi
  mov    %r8d,%edi
  call   <fputc@plt>
  mov    (%rsp),%edx
  test   %edx,%edx
  je     L117
L106:
  mov    (%rsp),%edi
  mov    %r12,%rsi
  call   <fputc@plt>
  test   %r15d,%r15d
  je     L163
L214:
  mov    %r12,%rsi
  mov    %r15d,%edi
  call   <fputc@plt>
  test   %r14d,%r14d
  je     L67
L212:
  mov    %r12,%rsi
  mov    %r14d,%edi
  call   <fputc@plt>
  test   %r13d,%r13d
  je     L147
L191:
  mov    %r12,%rsi
  mov    %r13d,%edi
  call   <fputc@plt>
  mov    0x10(%rsp),%eax
  test   %eax,%eax
  je     L37
L222:
  mov    0x10(%rsp),%edi
  mov    %r12,%rsi
  call   <fputc@plt>
  jmp    L37
L34:
  mov    %rbp,%rdi
  call   <fclose@plt>
  mov    %r12,%rdi
  call   <fclose@plt>
  mov    0x3f8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L134
  add    $0x408,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L150:
  mov    0x3f8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L134
  lea    D462(%rip),%rdi
L204:
  add    $0x408,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1120 <error@plt>
L56:
  mov    0x3f8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L134
  lea    D19(%rip),%rdi
  jmp    L204
L134:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D84
data_type: string
name: disassemble_data
arguments: data_label: D431
data_type: string
name: disassemble_data
arguments: data_label: D103
data_type: byte[16]
name: disassemble_data
arguments: data_label: D81
data_type: byte[16]
name: disassemble_data
arguments: data_label: D193
data_type: byte[16]
name: disassemble_data
arguments: data_label: D67
data_type: byte[16]
name: disassemble_data
arguments: data_label: D294
data_type: byte[16]
name: disassemble_data
arguments: data_label: D462
data_type: string
name: disassemble_data
arguments: data_label: D19
data_type: string

tool: D84: r

tool: D431: w

tool: {"D103": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

tool: {"D81": [0x00,0x80,0xff,0xff,0x00,0x80,0xff,0xff,0x00,0x80,0xff,0xff,0x00,0x80,0xff,0xff]}

tool: {"D193": [0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f]}

tool: {"D67": [0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38]}

tool: {"D294": [0x00,0x00,0x80,0x41,0x00,0x00,0x80,0x41,0x00,0x00,0x80,0x41,0x00,0x00,0x80,0x41]}

tool: D462: Could not open input file

tool: D19: Could not open output file

assistant: ```c
int enc(int argc, char *argv[]) {
  FILE *in;
  FILE *out;
  in = fopen(argv[2], "r");
  out = fopen(argv[3], "w");
  if (in == NULL)
    return error("Could not open input file");
  if (out == NULL)
    return error("Could not open output file");
  unsigned char buf[32 * 4];
  int iarr[32 * 2];
  float darr[32 * 2];
  float doutl[32];
  float doutr[32];
  int iout[32 * 2];
  while (!feof(in)) {
    for (int i = 0; i < 32 * 4; ++i) {
      buf[i] = fgetc(in);
    }
    for (int i = 0; i < 32; ++i) {
      int l = buf[i * 4];
      l += (buf[i * 4 + 1] & 0x7F) * 256;
      if (buf[i * 4 + 1] & 0x80)
        l = (0x8000 - l) * -1;
      iarr[i] = l;
      int r;
      r = 0;
      r |= buf[i * 4 + 2];
      r |= (buf[i * 4 + 3] & 0x7F) * 256;
      if (buf[i * 4 + 3] & 0x80) {
        r = (0x8000 - r) * -1;
      }
      iarr[i + 32] = r;
    }
    for (int i = 0; i < 32 * 2; ++i) {
      darr[i] = ((float)iarr[i]) / 32768.;
    }
    edct(darr, doutl);
    float *darrr = darr + 32;
    edct(darrr, doutr);
    for (int i = 0; i < 32; ++i) {
      iout[i * 2] = doutl[i] * 16;
      iout[i * 2 + 1] = doutr[i] * 16;
    }
    for (int i = 0; i < 32 * 2; i += 8) {
      char control = 0;
      if (iout[i] & 0xFF)
        control |= 128;
      if (iout[i + 1] & 0xFF)
        control |= 64;
      if (iout[i + 2] & 0xFF)
        control |= 32;
      if (iout[i + 3] & 0xFF)
        control |= 16;
      if (iout[i + 4] & 0xFF)
        control |= 8;
      if (iout[i + 5] & 0xFF)
        control |= 4;
      if (iout[i + 6] & 0xFF)
        control |= 2;
      if (iout[i + 7] & 0xFF)
        control |= 1;
      fputc(control, out);
      for (int j = 0; j < 8; ++j) {
        if (iout[i + j] & 0xFF)
          fputc(iout[i + j] & 0xFF, out);
      }
    }
  }
  fclose(in);
  fclose(out);
}
```