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

```asm
<apply_mask>:
  endbr64
  push   %r14
  cmp    $0x3,%edi
  mov    %r8d,%r14d
  push   %r13
  mov    %edi,%r13d
  setbe  %dil
  push   %r12
  movzbl %dil,%edi
  mov    %rdx,%r12
  push   %rbp
  mov    %rcx,%rbp
  push   %rbx
  mov    %esi,%ebx
  call   <assert@plt>
  cmp    $0x2,%r13d
  je     L444
  jg     L649
  test   %r13d,%r13d
  je     L366
  cmp    $0x1,%r13d
  jne    L144
  movb   $0x1,(%r12)
  test   %ebx,%ebx
  jle    L144
  lea    -0x1(%rbx),%eax
  cmp    $0xe,%eax
  jbe    L780
  mov    %r12,%rax
  sub    %rbp,%rax
  cmp    $0xe,%rax
  jbe    L780
  movdqa D123(%rip),%xmm0
  pxor   %xmm6,%xmm6
  mov    %ebx,%edx
  xor    %eax,%eax
  movdqa %xmm6,%xmm7
  shr    $0x4,%edx
  movdqa D183(%rip),%xmm12
  movdqa D164(%rip),%xmm14
  pcmpgtd %xmm0,%xmm7
  shl    $0x4,%rdx
  pxor   %xmm13,%xmm13
  movdqa D75(%rip),%xmm10
  pxor   %xmm11,%xmm11
  nopw   0x0(%rax,%rax,1)
L560:
  movdqu 0x0(%rbp,%rax,1),%xmm4
  movdqa %xmm12,%xmm5
  movdqa %xmm7,%xmm9
  movdqa D21(%rip),%xmm3
  movdqa %xmm7,%xmm15
  paddd  %xmm14,%xmm12
  movdqa %xmm4,%xmm2
  paddd  %xmm5,%xmm3
  punpckhbw %xmm13,%xmm4
  punpcklbw %xmm13,%xmm2
  movdqa %xmm4,%xmm8
  punpckhwd %xmm11,%xmm4
  movdqa %xmm2,%xmm1
  punpckhwd %xmm11,%xmm2
  punpcklwd %xmm11,%xmm8
  paddd  %xmm2,%xmm3
  movdqa D124(%rip),%xmm2
  punpcklwd %xmm11,%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm5,%xmm2
  paddd  D115(%rip),%xmm5
  paddd  %xmm8,%xmm2
  movdqa %xmm1,%xmm8
  paddd  %xmm4,%xmm5
  punpckldq %xmm1,%xmm8
  movdqa %xmm6,%xmm4
  pcmpgtd %xmm8,%xmm4
  pmuludq %xmm8,%xmm9
  pmuludq %xmm0,%xmm8
  pmuludq %xmm0,%xmm4
  paddq  %xmm9,%xmm4
  movdqa %xmm6,%xmm9
  psllq  $0x20,%xmm4
  paddq  %xmm4,%xmm8
  movdqa %xmm1,%xmm4
  punpckhdq %xmm1,%xmm4
  pcmpgtd %xmm4,%xmm9
  pmuludq %xmm4,%xmm15
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm9
  paddq  %xmm15,%xmm9
  movdqa %xmm7,%xmm15
  psllq  $0x20,%xmm9
  paddq  %xmm9,%xmm4
  movdqa %xmm7,%xmm9
  shufps $0xdd,%xmm4,%xmm8
  psrad  $0x5,%xmm8
  movdqa %xmm8,%xmm4
  pslld  $0x3,%xmm4
  psubd  %xmm8,%xmm4
  pslld  $0x4,%xmm4
  paddd  %xmm8,%xmm4
  movdqa %xmm6,%xmm8
  psubd  %xmm4,%xmm1
  movdqa %xmm3,%xmm4
  punpckldq %xmm3,%xmm4
  pcmpgtd %xmm4,%xmm8
  pmuludq %xmm4,%xmm9
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  movdqa %xmm6,%xmm9
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm4
  movdqa %xmm3,%xmm8
  punpckhdq %xmm3,%xmm8
  pcmpgtd %xmm8,%xmm9
  pmuludq %xmm8,%xmm15
  pmuludq %xmm0,%xmm8
  pmuludq %xmm0,%xmm9
  paddq  %xmm15,%xmm9
  psllq  $0x20,%xmm9
  paddq  %xmm9,%xmm8
  movdqa %xmm7,%xmm9
  shufps $0xdd,%xmm8,%xmm4
  psrad  $0x5,%xmm4
  movdqa %xmm4,%xmm8
  pslld  $0x3,%xmm8
  psubd  %xmm4,%xmm8
  pslld  $0x4,%xmm8
  paddd  %xmm4,%xmm8
  psubd  %xmm8,%xmm3
  movdqa %xmm7,%xmm8
  movdqa %xmm3,%xmm4
  movdqa %xmm1,%xmm3
  punpcklwd %xmm4,%xmm1
  punpckhwd %xmm4,%xmm3
  movdqa %xmm1,%xmm4
  punpcklwd %xmm3,%xmm1
  punpckhwd %xmm3,%xmm4
  movdqa %xmm6,%xmm3
  punpcklwd %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm2,%xmm4
  pand   %xmm10,%xmm1
  pcmpgtd %xmm4,%xmm3
  pmuludq %xmm4,%xmm8
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm3
  paddq  %xmm8,%xmm3
  movdqa %xmm6,%xmm8
  psllq  $0x20,%xmm3
  paddq  %xmm3,%xmm4
  movdqa %xmm2,%xmm3
  punpckhdq %xmm2,%xmm3
  pcmpgtd %xmm3,%xmm8
  pmuludq %xmm3,%xmm9
  pmuludq %xmm0,%xmm3
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  movdqa %xmm7,%xmm9
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm3
  movdqa %xmm7,%xmm8
  shufps $0xdd,%xmm3,%xmm4
  psrad  $0x5,%xmm4
  movdqa %xmm4,%xmm3
  pslld  $0x3,%xmm3
  psubd  %xmm4,%xmm3
  pslld  $0x4,%xmm3
  paddd  %xmm4,%xmm3
  movdqa %xmm6,%xmm4
  psubd  %xmm3,%xmm2
  movdqa %xmm5,%xmm3
  punpckldq %xmm5,%xmm3
  pcmpgtd %xmm3,%xmm4
  pmuludq %xmm3,%xmm8
  pmuludq %xmm0,%xmm3
  pmuludq %xmm0,%xmm4
  paddq  %xmm8,%xmm4
  movdqa %xmm6,%xmm8
  psllq  $0x20,%xmm4
  paddq  %xmm4,%xmm3
  movdqa %xmm5,%xmm4
  punpckhdq %xmm5,%xmm4
  pcmpgtd %xmm4,%xmm8
  pmuludq %xmm4,%xmm9
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm4
  shufps $0xdd,%xmm4,%xmm3
  psrad  $0x5,%xmm3
  movdqa %xmm3,%xmm4
  pslld  $0x3,%xmm4
  psubd  %xmm3,%xmm4
  pslld  $0x4,%xmm4
  paddd  %xmm3,%xmm4
  psubd  %xmm4,%xmm5
  movdqa %xmm2,%xmm4
  punpcklwd %xmm5,%xmm2
  punpckhwd %xmm5,%xmm4
  movdqa %xmm2,%xmm3
  punpcklwd %xmm4,%xmm2
  punpckhwd %xmm4,%xmm3
  punpcklwd %xmm3,%xmm2
  pand   %xmm10,%xmm2
  packuswb %xmm2,%xmm1
  movups %xmm1,0x1(%r12,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L560
  mov    %ebx,%edx
  and    $0xfffffff0,%edx
  lea    (%rdx,%rdx,2),%esi
  cmp    %edx,%ebx
  je     L144
  mov    %edx,%eax
  movzbl 0x0(%rbp,%rax,1),%edi
  add    %esi,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x3(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x1(%rdx),%ecx
  mov    %dil,0x1(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x1(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x6(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x2(%rdx),%ecx
  mov    %dil,0x2(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x2(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x9(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x3(%rdx),%ecx
  mov    %dil,0x3(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x3(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0xc(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x4(%rdx),%ecx
  mov    %dil,0x4(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x4(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0xf(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x5(%rdx),%ecx
  mov    %dil,0x5(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x5(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x12(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x6(%rdx),%ecx
  mov    %dil,0x6(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x6(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x15(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x7(%rdx),%ecx
  mov    %dil,0x7(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x7(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x18(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x8(%rdx),%ecx
  mov    %dil,0x8(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x8(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x1b(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0x9(%rdx),%ecx
  mov    %dil,0x9(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0x9(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x1e(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0xa(%rdx),%ecx
  mov    %dil,0xa(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0xa(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x21(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0xb(%rdx),%ecx
  mov    %dil,0xb(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0xb(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x24(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0xc(%rdx),%ecx
  mov    %dil,0xc(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0xc(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  lea    0x27(%rsi),%r8d
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  lea    0xd(%rdx),%ecx
  mov    %dil,0xd(%r12,%rax,1)
  cmp    %ecx,%ebx
  jle    L144
  movzbl 0xd(%rbp,%rax,1),%edi
  add    $0xe,%edx
  add    $0x2a,%esi
  add    %r8d,%edi
  movslq %edi,%rcx
  mov    %edi,%r8d
  imul   $0x487ede05,%rcx,%rcx
  sar    $0x1f,%r8d
  sar    $0x25,%rcx
  sub    %r8d,%ecx
  imul   $0x71,%ecx,%ecx
  sub    %ecx,%edi
  mov    %dil,0xe(%r12,%rax,1)
  cmp    %edx,%ebx
  jle    L144
  movzbl 0xe(%rbp,%rax,1),%ecx
  add    %esi,%ecx
L61:
  movslq %ecx,%rdx
  mov    %ecx,%esi
  imul   $0x487ede05,%rdx,%rdx
  sar    $0x1f,%esi
  sar    $0x25,%rdx
  sub    %esi,%edx
  imul   $0x71,%edx,%edx
  sub    %edx,%ecx
  mov    %cl,0xf(%r12,%rax,1)
L144:
  lea    0x1(%rbx),%edi
  mov    %r12,%rdx
  pop    %rbx
  mov    %r14d,%esi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  jmp    1070 <rsencode@plt>
  nopl   0x0(%rax)
L649:
  cmp    $0x3,%r13d
  jne    L144
  movb   $0x3,(%r12)
  test   %ebx,%ebx
  jle    L144
  lea    -0x1(%rbx),%eax
  cmp    $0xe,%eax
  jbe    L180
  mov    %r12,%rax
  sub    %rbp,%rax
  cmp    $0xe,%rax
  jbe    L180
  movdqa D123(%rip),%xmm0
  pxor   %xmm6,%xmm6
  mov    %ebx,%edx
  xor    %eax,%eax
  movdqa %xmm6,%xmm7
  shr    $0x4,%edx
  movdqa D22(%rip),%xmm12
  movdqa D75(%rip),%xmm10
  pcmpgtd %xmm0,%xmm7
  shl    $0x4,%rdx
  pxor   %xmm13,%xmm13
  movdqa D139(%rip),%xmm14
  pxor   %xmm11,%xmm11
  nopw   0x0(%rax,%rax,1)
L268:
  movdqu 0x0(%rbp,%rax,1),%xmm4
  movdqa %xmm12,%xmm5
  movdqa %xmm7,%xmm9
  movdqa D209(%rip),%xmm3
  movdqa %xmm7,%xmm15
  paddd  %xmm14,%xmm12
  movdqa %xmm4,%xmm2
  paddd  %xmm5,%xmm3
  punpckhbw %xmm13,%xmm4
  punpcklbw %xmm13,%xmm2
  movdqa %xmm4,%xmm8
  punpckhwd %xmm11,%xmm4
  movdqa %xmm2,%xmm1
  punpckhwd %xmm11,%xmm2
  punpcklwd %xmm11,%xmm8
  paddd  %xmm2,%xmm3
  movdqa D111(%rip),%xmm2
  punpcklwd %xmm11,%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm5,%xmm2
  paddd  D90(%rip),%xmm5
  paddd  %xmm8,%xmm2
  movdqa %xmm1,%xmm8
  paddd  %xmm4,%xmm5
  punpckldq %xmm1,%xmm8
  movdqa %xmm6,%xmm4
  pcmpgtd %xmm8,%xmm4
  pmuludq %xmm8,%xmm9
  pmuludq %xmm0,%xmm8
  pmuludq %xmm0,%xmm4
  paddq  %xmm9,%xmm4
  movdqa %xmm6,%xmm9
  psllq  $0x20,%xmm4
  paddq  %xmm4,%xmm8
  movdqa %xmm1,%xmm4
  punpckhdq %xmm1,%xmm4
  pcmpgtd %xmm4,%xmm9
  pmuludq %xmm4,%xmm15
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm9
  paddq  %xmm15,%xmm9
  movdqa %xmm7,%xmm15
  psllq  $0x20,%xmm9
  paddq  %xmm9,%xmm4
  movdqa %xmm7,%xmm9
  shufps $0xdd,%xmm4,%xmm8
  psrad  $0x5,%xmm8
  movdqa %xmm8,%xmm4
  pslld  $0x3,%xmm4
  psubd  %xmm8,%xmm4
  pslld  $0x4,%xmm4
  paddd  %xmm8,%xmm4
  movdqa %xmm6,%xmm8
  psubd  %xmm4,%xmm1
  movdqa %xmm3,%xmm4
  punpckldq %xmm3,%xmm4
  pcmpgtd %xmm4,%xmm8
  pmuludq %xmm4,%xmm9
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  movdqa %xmm6,%xmm9
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm4
  movdqa %xmm3,%xmm8
  punpckhdq %xmm3,%xmm8
  pcmpgtd %xmm8,%xmm9
  pmuludq %xmm8,%xmm15
  pmuludq %xmm0,%xmm8
  pmuludq %xmm0,%xmm9
  paddq  %xmm15,%xmm9
  psllq  $0x20,%xmm9
  paddq  %xmm9,%xmm8
  movdqa %xmm7,%xmm9
  shufps $0xdd,%xmm8,%xmm4
  psrad  $0x5,%xmm4
  movdqa %xmm4,%xmm8
  pslld  $0x3,%xmm8
  psubd  %xmm4,%xmm8
  pslld  $0x4,%xmm8
  paddd  %xmm4,%xmm8
  psubd  %xmm8,%xmm3
  movdqa %xmm7,%xmm8
  movdqa %xmm3,%xmm4
  movdqa %xmm1,%xmm3
  punpcklwd %xmm4,%xmm1
  punpckhwd %xmm4,%xmm3
  movdqa %xmm1,%xmm4
  punpcklwd %xmm3,%xmm1
  punpckhwd %xmm3,%xmm4
  movdqa %xmm6,%xmm3
  punpcklwd %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm2,%xmm4
  pand   %xmm10,%xmm1
  pcmpgtd %xmm4,%xmm3
  pmuludq %xmm4,%xmm8
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm3
  paddq  %xmm8,%xmm3
  movdqa %xmm6,%xmm8
  psllq  $0x20,%xmm3
  paddq  %xmm3,%xmm4
  movdqa %xmm2,%xmm3
  punpckhdq %xmm2,%xmm3
  pcmpgtd %xmm3,%xmm8
  pmuludq %xmm3,%xmm9
  pmuludq %xmm0,%xmm3
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  movdqa %xmm7,%xmm9
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm3
  movdqa %xmm7,%xmm8
  shufps $0xdd,%xmm3,%xmm4
  psrad  $0x5,%xmm4
  movdqa %xmm4,%xmm3
  pslld  $0x3,%xmm3
  psubd  %xmm4,%xmm3
  pslld  $0x4,%xmm3
  paddd  %xmm4,%xmm3
  movdqa %xmm6,%xmm4
  psubd  %xmm3,%xmm2
  movdqa %xmm5,%xmm3
  punpckldq %xmm5,%xmm3
  pcmpgtd %xmm3,%xmm4
  pmuludq %xmm3,%xmm8
  pmuludq %xmm0,%xmm3
  pmuludq %xmm0,%xmm4
  paddq  %xmm8,%xmm4
  movdqa %xmm6,%xmm8
  psllq  $0x20,%xmm4
  paddq  %xmm4,%xmm3
  movdqa %xmm5,%xmm4
  punpckhdq %xmm5,%xmm4
  pcmpgtd %xmm4,%xmm8
  pmuludq %xmm4,%xmm9
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm4
  shufps $0xdd,%xmm4,%xmm3
  psrad  $0x5,%xmm3
  movdqa %xmm3,%xmm4
  pslld  $0x3,%xmm4
  psubd  %xmm3,%xmm4
  pslld  $0x4,%xmm4
  paddd  %xmm3,%xmm4
  psubd  %xmm4,%xmm5
  movdqa %xmm2,%xmm4
  punpcklwd %xmm5,%xmm2
  punpckhwd %xmm5,%xmm4
  movdqa %xmm2,%xmm3
  punpcklwd %xmm4,%xmm2
  punpckhwd %xmm4,%xmm3
  punpcklwd %xmm3,%xmm2
  pand   %xmm10,%xmm2
  packuswb %xmm2,%xmm1
  movups %xmm1,0x1(%r12,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L268
  mov    %ebx,%edx
  and    $0xfffffff0,%edx
  mov    %edx,%ecx
  shl    $0x4,%ecx
  add    %edx,%ecx
  cmp    %edx,%ebx
  je     L144
  mov    %edx,%eax
  movzbl 0x0(%rbp,%rax,1),%edi
  add    %ecx,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x11(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x1(%rdx),%esi
  mov    %dil,0x1(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x1(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x22(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x2(%rdx),%esi
  mov    %dil,0x2(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x2(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x33(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x3(%rdx),%esi
  mov    %dil,0x3(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x3(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x44(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x4(%rdx),%esi
  mov    %dil,0x4(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x4(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x55(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x5(%rdx),%esi
  mov    %dil,0x5(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x5(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x66(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x6(%rdx),%esi
  mov    %dil,0x6(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x6(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x77(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x7(%rdx),%esi
  mov    %dil,0x7(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x7(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x88(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x8(%rdx),%esi
  mov    %dil,0x8(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x8(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x99(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x9(%rdx),%esi
  mov    %dil,0x9(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x9(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0xaa(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xa(%rdx),%esi
  mov    %dil,0xa(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xa(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0xbb(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xb(%rdx),%esi
  mov    %dil,0xb(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xb(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0xcc(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xc(%rdx),%esi
  mov    %dil,0xc(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xc(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0xdd(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xd(%rdx),%esi
  mov    %dil,0xd(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xd(%rbp,%rax,1),%edi
  add    $0xe,%edx
  add    $0xee,%ecx
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  mov    %dil,0xe(%r12,%rax,1)
  cmp    %edx,%ebx
  jg     L168
  jmp    L144
  xchg   %ax,%ax
L366:
  movb   $0x0,(%r12)
  test   %ebx,%ebx
  jle    L144
  mov    %r12,%rcx
  mov    %ebx,%edx
  lea    -0x1(%rbx),%eax
  sub    %rbp,%rcx
  cmp    $0xe,%rcx
  jbe    L587
  cmp    $0x6,%eax
  jbe    L587
  cmp    $0xe,%eax
  jbe    L664
  shr    $0x4,%edx
  xor    %eax,%eax
  shl    $0x4,%rdx
  nopl   (%rax)
L67:
  movdqu 0x0(%rbp,%rax,1),%xmm6
  movups %xmm6,0x1(%r12,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L67
  mov    %ebx,%eax
  and    $0xfffffff0,%eax
  mov    %eax,%r13d
  cmp    %ebx,%eax
  je     L144
  mov    %ebx,%edx
  sub    %eax,%edx
  lea    -0x1(%rdx),%ecx
  cmp    $0x6,%ecx
  jbe    L756
L571:
  mov    0x0(%rbp,%rax,1),%rcx
  mov    %rcx,0x1(%r12,%rax,1)
  mov    %edx,%eax
  and    $0xfffffff8,%eax
  add    %eax,%r13d
  cmp    %edx,%eax
  je     L144
L756:
  movslq %r13d,%rax
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    %dl,0x1(%r12,%rax,1)
  lea    0x1(%r13),%edx
  cmp    %ebx,%edx
  jge    L144
  movzbl 0x1(%rbp,%rax,1),%edx
  mov    %dl,0x2(%r12,%rax,1)
  lea    0x2(%r13),%edx
  cmp    %ebx,%edx
  jge    L144
  movzbl 0x2(%rbp,%rax,1),%edx
  mov    %dl,0x3(%r12,%rax,1)
  lea    0x3(%r13),%edx
  cmp    %edx,%ebx
  jle    L144
  movzbl 0x3(%rbp,%rax,1),%edx
  mov    %dl,0x4(%r12,%rax,1)
  lea    0x4(%r13),%edx
  cmp    %ebx,%edx
  jge    L144
  movzbl 0x4(%rbp,%rax,1),%edx
  mov    %dl,0x5(%r12,%rax,1)
  lea    0x5(%r13),%edx
  cmp    %ebx,%edx
  jge    L144
  movzbl 0x5(%rbp,%rax,1),%edx
  add    $0x6,%r13d
  mov    %dl,0x6(%r12,%rax,1)
  cmp    %r13d,%ebx
  jle    L144
  movzbl 0x6(%rbp,%rax,1),%edx
  mov    %dl,0x7(%r12,%rax,1)
  jmp    L144
  nopw   0x0(%rax,%rax,1)
L444:
  movb   $0x2,(%r12)
  test   %ebx,%ebx
  jle    L144
  lea    -0x1(%rbx),%eax
  cmp    $0xe,%eax
  jbe    L730
  mov    %r12,%rax
  sub    %rbp,%rax
  cmp    $0xe,%rax
  jbe    L730
  movdqa D123(%rip),%xmm0
  pxor   %xmm6,%xmm6
  mov    %ebx,%edx
  xor    %eax,%eax
  movdqa %xmm6,%xmm7
  shr    $0x4,%edx
  movdqa D136(%rip),%xmm12
  movdqa D75(%rip),%xmm10
  pcmpgtd %xmm0,%xmm7
  shl    $0x4,%rdx
  pxor   %xmm13,%xmm13
  movdqa D50(%rip),%xmm14
  pxor   %xmm11,%xmm11
  nopl   (%rax)
L34:
  movdqu 0x0(%rbp,%rax,1),%xmm4
  movdqa %xmm12,%xmm5
  movdqa %xmm7,%xmm9
  movdqa D187(%rip),%xmm3
  movdqa %xmm7,%xmm15
  paddd  %xmm14,%xmm12
  movdqa %xmm4,%xmm2
  paddd  %xmm5,%xmm3
  punpckhbw %xmm13,%xmm4
  punpcklbw %xmm13,%xmm2
  movdqa %xmm4,%xmm8
  punpckhwd %xmm11,%xmm4
  movdqa %xmm2,%xmm1
  punpckhwd %xmm11,%xmm2
  punpcklwd %xmm11,%xmm8
  paddd  %xmm2,%xmm3
  movdqa D24(%rip),%xmm2
  punpcklwd %xmm11,%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm5,%xmm2
  paddd  D161(%rip),%xmm5
  paddd  %xmm8,%xmm2
  movdqa %xmm1,%xmm8
  paddd  %xmm4,%xmm5
  punpckldq %xmm1,%xmm8
  movdqa %xmm6,%xmm4
  pcmpgtd %xmm8,%xmm4
  pmuludq %xmm8,%xmm9
  pmuludq %xmm0,%xmm8
  pmuludq %xmm0,%xmm4
  paddq  %xmm9,%xmm4
  movdqa %xmm6,%xmm9
  psllq  $0x20,%xmm4
  paddq  %xmm4,%xmm8
  movdqa %xmm1,%xmm4
  punpckhdq %xmm1,%xmm4
  pcmpgtd %xmm4,%xmm9
  pmuludq %xmm4,%xmm15
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm9
  paddq  %xmm15,%xmm9
  movdqa %xmm7,%xmm15
  psllq  $0x20,%xmm9
  paddq  %xmm9,%xmm4
  movdqa %xmm7,%xmm9
  shufps $0xdd,%xmm4,%xmm8
  psrad  $0x5,%xmm8
  movdqa %xmm8,%xmm4
  pslld  $0x3,%xmm4
  psubd  %xmm8,%xmm4
  pslld  $0x4,%xmm4
  paddd  %xmm8,%xmm4
  movdqa %xmm6,%xmm8
  psubd  %xmm4,%xmm1
  movdqa %xmm3,%xmm4
  punpckldq %xmm3,%xmm4
  pcmpgtd %xmm4,%xmm8
  pmuludq %xmm4,%xmm9
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  movdqa %xmm6,%xmm9
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm4
  movdqa %xmm3,%xmm8
  punpckhdq %xmm3,%xmm8
  pcmpgtd %xmm8,%xmm9
  pmuludq %xmm8,%xmm15
  pmuludq %xmm0,%xmm8
  pmuludq %xmm0,%xmm9
  paddq  %xmm15,%xmm9
  psllq  $0x20,%xmm9
  paddq  %xmm9,%xmm8
  movdqa %xmm7,%xmm9
  shufps $0xdd,%xmm8,%xmm4
  psrad  $0x5,%xmm4
  movdqa %xmm4,%xmm8
  pslld  $0x3,%xmm8
  psubd  %xmm4,%xmm8
  pslld  $0x4,%xmm8
  paddd  %xmm4,%xmm8
  psubd  %xmm8,%xmm3
  movdqa %xmm7,%xmm8
  movdqa %xmm3,%xmm4
  movdqa %xmm1,%xmm3
  punpcklwd %xmm4,%xmm1
  punpckhwd %xmm4,%xmm3
  movdqa %xmm1,%xmm4
  punpcklwd %xmm3,%xmm1
  punpckhwd %xmm3,%xmm4
  movdqa %xmm6,%xmm3
  punpcklwd %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm2,%xmm4
  pand   %xmm10,%xmm1
  pcmpgtd %xmm4,%xmm3
  pmuludq %xmm4,%xmm8
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm3
  paddq  %xmm8,%xmm3
  movdqa %xmm6,%xmm8
  psllq  $0x20,%xmm3
  paddq  %xmm3,%xmm4
  movdqa %xmm2,%xmm3
  punpckhdq %xmm2,%xmm3
  pcmpgtd %xmm3,%xmm8
  pmuludq %xmm3,%xmm9
  pmuludq %xmm0,%xmm3
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  movdqa %xmm7,%xmm9
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm3
  movdqa %xmm7,%xmm8
  shufps $0xdd,%xmm3,%xmm4
  psrad  $0x5,%xmm4
  movdqa %xmm4,%xmm3
  pslld  $0x3,%xmm3
  psubd  %xmm4,%xmm3
  pslld  $0x4,%xmm3
  paddd  %xmm4,%xmm3
  movdqa %xmm6,%xmm4
  psubd  %xmm3,%xmm2
  movdqa %xmm5,%xmm3
  punpckldq %xmm5,%xmm3
  pcmpgtd %xmm3,%xmm4
  pmuludq %xmm3,%xmm8
  pmuludq %xmm0,%xmm3
  pmuludq %xmm0,%xmm4
  paddq  %xmm8,%xmm4
  movdqa %xmm6,%xmm8
  psllq  $0x20,%xmm4
  paddq  %xmm4,%xmm3
  movdqa %xmm5,%xmm4
  punpckhdq %xmm5,%xmm4
  pcmpgtd %xmm4,%xmm8
  pmuludq %xmm4,%xmm9
  pmuludq %xmm0,%xmm4
  pmuludq %xmm0,%xmm8
  paddq  %xmm9,%xmm8
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm4
  shufps $0xdd,%xmm4,%xmm3
  psrad  $0x5,%xmm3
  movdqa %xmm3,%xmm4
  pslld  $0x3,%xmm4
  psubd  %xmm3,%xmm4
  pslld  $0x4,%xmm4
  paddd  %xmm3,%xmm4
  psubd  %xmm4,%xmm5
  movdqa %xmm2,%xmm4
  punpcklwd %xmm5,%xmm2
  punpckhwd %xmm5,%xmm4
  movdqa %xmm2,%xmm3
  punpcklwd %xmm4,%xmm2
  punpckhwd %xmm4,%xmm3
  punpcklwd %xmm3,%xmm2
  pand   %xmm10,%xmm2
  packuswb %xmm2,%xmm1
  movups %xmm1,0x1(%r12,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rdx
  jne    L34
  mov    %ebx,%edx
  and    $0xfffffff0,%edx
  lea    0x0(,%rdx,8),%ecx
  sub    %edx,%ecx
  cmp    %edx,%ebx
  je     L144
  mov    %edx,%eax
  movzbl 0x0(%rbp,%rax,1),%edi
  add    %ecx,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x7(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x1(%rdx),%esi
  mov    %dil,0x1(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x1(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0xe(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x2(%rdx),%esi
  mov    %dil,0x2(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x2(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x15(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x3(%rdx),%esi
  mov    %dil,0x3(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x3(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x1c(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x4(%rdx),%esi
  mov    %dil,0x4(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x4(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x23(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x5(%rdx),%esi
  mov    %dil,0x5(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x5(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x2a(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x6(%rdx),%esi
  mov    %dil,0x6(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x6(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x31(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x7(%rdx),%esi
  mov    %dil,0x7(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x7(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x38(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x8(%rdx),%esi
  mov    %dil,0x8(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x8(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x3f(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0x9(%rdx),%esi
  mov    %dil,0x9(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0x9(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x46(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xa(%rdx),%esi
  mov    %dil,0xa(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xa(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x4d(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xb(%rdx),%esi
  mov    %dil,0xb(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xb(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x54(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xc(%rdx),%esi
  mov    %dil,0xc(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xc(%rbp,%rax,1),%edi
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  lea    0x5b(%rcx),%r8d
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  lea    0xd(%rdx),%esi
  mov    %dil,0xd(%r12,%rax,1)
  cmp    %esi,%ebx
  jle    L144
  movzbl 0xd(%rbp,%rax,1),%edi
  add    $0xe,%edx
  add    $0x62,%ecx
  add    %r8d,%edi
  movslq %edi,%rsi
  mov    %edi,%r8d
  imul   $0x487ede05,%rsi,%rsi
  sar    $0x1f,%r8d
  sar    $0x25,%rsi
  sub    %r8d,%esi
  imul   $0x71,%esi,%esi
  sub    %esi,%edi
  mov    %dil,0xe(%r12,%rax,1)
  cmp    %edx,%ebx
  jle    L144
L168:
  movzbl 0xe(%rbp,%rax,1),%edx
  add    %edx,%ecx
  jmp    L61
  nopw   0x0(%rax,%rax,1)
L180:
  mov    %ebx,%edi
  xor    %esi,%esi
  xor    %ecx,%ecx
  shl    $0x4,%edi
  add    %ebx,%edi
  nopl   0x0(%rax,%rax,1)
L255:
  movzbl 0x0(%rbp,%rsi,1),%edx
  add    %ecx,%edx
  add    $0x11,%ecx
  movslq %edx,%rax
  mov    %edx,%r8d
  imul   $0x487ede05,%rax,%rax
  sar    $0x1f,%r8d
  sar    $0x25,%rax
  sub    %r8d,%eax
  imul   $0x71,%eax,%eax
  sub    %eax,%edx
  mov    %dl,0x1(%r12,%rsi,1)
  add    $0x1,%rsi
  cmp    %ecx,%edi
  jne    L255
  jmp    L144
  nopl   0x0(%rax)
L780:
  mov    %ebx,%edi
  xor    %ecx,%ecx
  nopl   0x0(%rax)
L530:
  movzbl 0x0(%rbp,%rcx,1),%eax
  lea    (%rcx,%rcx,2),%edx
  add    %eax,%edx
  movslq %edx,%rax
  mov    %edx,%esi
  imul   $0x487ede05,%rax,%rax
  sar    $0x1f,%esi
  sar    $0x25,%rax
  sub    %esi,%eax
  imul   $0x71,%eax,%eax
  sub    %eax,%edx
  mov    %dl,0x1(%r12,%rcx,1)
  add    $0x1,%rcx
  cmp    %rdi,%rcx
  jne    L530
  jmp    L144
  nop
L587:
  mov    %ebx,%ecx
  xor    %eax,%eax
  nopl   0x0(%rax)
L422:
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    %dl,0x1(%r12,%rax,1)
  add    $0x1,%rax
  cmp    %rax,%rcx
  jne    L422
  jmp    L144
L730:
  lea    0x0(,%rbx,8),%edi
  xor    %esi,%esi
  xor    %ecx,%ecx
  sub    %ebx,%edi
  nopl   (%rax)
L750:
  movzbl 0x0(%rbp,%rsi,1),%edx
  add    %ecx,%edx
  add    $0x7,%ecx
  movslq %edx,%rax
  mov    %edx,%r8d
  imul   $0x487ede05,%rax,%rax
  sar    $0x1f,%r8d
  sar    $0x25,%rax
  sub    %r8d,%eax
  imul   $0x71,%eax,%eax
  sub    %eax,%edx
  mov    %dl,0x1(%r12,%rsi,1)
  add    $0x1,%rsi
  cmp    %edi,%ecx
  jne    L750
  jmp    L144
L664:
  xor    %eax,%eax
  jmp    L571
```

tool_calls: name: parse_data
arguments: data_label: D123
type: byte[16]
name: parse_data
arguments: data_label: D183
type: byte[16]
name: parse_data
arguments: data_label: D164
type: byte[16]
name: parse_data
arguments: data_label: D75
type: byte[16]
name: parse_data
arguments: data_label: D21
type: byte[16]
name: parse_data
arguments: data_label: D124
type: byte[16]
name: parse_data
arguments: data_label: D115
type: byte[16]
name: parse_data
arguments: data_label: D22
type: byte[16]
name: parse_data
arguments: data_label: D139
type: byte[16]
name: parse_data
arguments: data_label: D209
type: byte[16]
name: parse_data
arguments: data_label: D111
type: byte[16]
name: parse_data
arguments: data_label: D90
type: byte[16]
name: parse_data
arguments: data_label: D136
type: byte[16]
name: parse_data
arguments: data_label: D50
type: byte[16]
name: parse_data
arguments: data_label: D187
type: byte[16]
name: parse_data
arguments: data_label: D24
type: byte[16]
name: parse_data
arguments: data_label: D161
type: byte[16]

tool: {"D123": [0x05,0xde,0x7e,0x48,0x05,0xde,0x7e,0x48,0x05,0xde,0x7e,0x48,0x05,0xde,0x7e,0x48]}

tool: {"D183": [0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x09,0x00,0x00,0x00]}

tool: {"D164": [0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00]}

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

tool: {"D21": [0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00]}

tool: {"D124": [0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00]}

tool: {"D115": [0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00]}

tool: {"D22": [0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x33,0x00,0x00,0x00]}

tool: {"D139": [0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00]}

tool: {"D209": [0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00]}

tool: {"D111": [0x88,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x88,0x00,0x00,0x00]}

tool: {"D90": [0xcc,0x00,0x00,0x00,0xcc,0x00,0x00,0x00,0xcc,0x00,0x00,0x00,0xcc,0x00,0x00,0x00]}

tool: {"D136": [0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x15,0x00,0x00,0x00]}

tool: {"D50": [0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00]}

tool: {"D187": [0x1c,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x1c,0x00,0x00,0x00]}

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

tool: {"D161": [0x54,0x00,0x00,0x00,0x54,0x00,0x00,0x00,0x54,0x00,0x00,0x00,0x54,0x00,0x00,0x00]}

assistant: ```c
void apply_mask(const int mask, const int data_length, unsigned char *masked_codeword_array, const unsigned char *codeword_array, const int ecc_length) {
  int weight = 0;
  int j;
  assert(mask >= 0 && mask <= 3);
  switch (mask) {
  case 0:
    masked_codeword_array[0] = 0;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = codeword_array[j];
    }
    break;
  case 1:
    masked_codeword_array[0] = 1;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = (weight + codeword_array[j]) % 113;
      weight += 3;
    }
    break;
  case 2:
    masked_codeword_array[0] = 2;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = (weight + codeword_array[j]) % 113;
      weight += 7;
    }
    break;
  case 3:
    masked_codeword_array[0] = 3;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = (weight + codeword_array[j]) % 113;
      weight += 17;
    }
    break;
  }
  rsencode(data_length + 1, ecc_length, masked_codeword_array);
}
```