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

```asm
<string_to_tri>:
  endbr64
  movslq %edi,%r8
  mov    %rdx,%r11
  push   %r14
  mov    %rsi,%r9
  mov    %r8,%r10
  imul   $0x66666667,%r8,%r8
  push   %r13
  mov    %r10d,%eax
  push   %r12
  sar    $0x1f,%eax
  push   %rbp
  sar    $0x21,%r8
  push   %rbx
  sub    %eax,%r8d
  mov    %r10d,%eax
  lea    (%r8,%r8,4),%edx
  sub    %edx,%eax
  cmp    $0x1,%eax
  sbb    $0x0,%r8d
  movslq %r8d,%rbx
  test   %r8d,%r8d
  jle    L124
  movslq %r8d,%rbx
  lea    -0x1(%r8),%eax
  lea    (%rbx,%rbx,4),%rdx
  lea    (%rsi,%rbx,1),%rcx
  lea    (%r11,%rdx,4),%rdx
  cmp    %rdx,%rsi
  setae  %dl
  cmp    %rcx,%r11
  setae  %cl
  or     %cl,%dl
  je     L150
  cmp    $0xe,%eax
  jbe    L150
  mov    %r8d,%ecx
  pxor   %xmm2,%xmm2
  movdqa D15(%rip),%xmm4
  movdqa D13(%rip),%xmm7
  shr    $0x4,%ecx
  lea    0x10(%r11),%rax
  pxor   %xmm5,%xmm5
  mov    %rsi,%rdx
  sub    $0x1,%ecx
  movdqa D0(%rip),%xmm6
  punpcklbw %xmm2,%xmm4
  shl    $0x4,%rcx
  lea    0x10(%rsi,%rcx,1),%rcx
  nopl   (%rax)
L140:
  movdqu (%rdx),%xmm3
  movdqa %xmm2,%xmm8
  movdqa %xmm5,%xmm9
  movdqa %xmm5,%xmm10
  movdqa %xmm5,%xmm13
  add    $0x10,%rdx
  add    $0x140,%rax
  movdqa %xmm3,%xmm1
  movdqa %xmm3,%xmm0
  punpcklbw %xmm2,%xmm1
  punpckhbw %xmm2,%xmm0
  pmullw %xmm4,%xmm1
  pmullw %xmm4,%xmm0
  psrlw  $0x8,%xmm1
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm1
  psrlw  $0x1,%xmm1
  pand   %xmm7,%xmm1
  movdqa %xmm1,%xmm0
  paddb  %xmm1,%xmm0
  paddb  %xmm1,%xmm0
  psubb  %xmm0,%xmm3
  movdqa %xmm3,%xmm0
  pcmpeqb %xmm6,%xmm0
  por    %xmm3,%xmm0
  pcmpgtb %xmm0,%xmm8
  movdqa %xmm0,%xmm3
  punpcklbw %xmm8,%xmm3
  punpckhbw %xmm8,%xmm0
  pcmpgtw %xmm3,%xmm9
  pcmpgtw %xmm0,%xmm10
  movdqa %xmm3,%xmm8
  punpcklwd %xmm9,%xmm8
  punpckhwd %xmm9,%xmm3
  movdqa %xmm0,%xmm9
  punpcklwd %xmm10,%xmm9
  punpckhwd %xmm10,%xmm0
  pshufd $0x55,%xmm8,%xmm10
  movd   %xmm8,-0x140(%rax)
  movd   %xmm10,-0x12c(%rax)
  movdqa %xmm8,%xmm10
  punpckhdq %xmm8,%xmm10
  pshufd $0xff,%xmm8,%xmm8
  movd   %xmm3,-0xf0(%rax)
  movd   %xmm8,-0x104(%rax)
  pshufd $0x55,%xmm3,%xmm8
  movd   %xmm8,-0xdc(%rax)
  movdqa %xmm3,%xmm8
  punpckhdq %xmm3,%xmm8
  pshufd $0xff,%xmm3,%xmm3
  movd   %xmm0,-0x50(%rax)
  movd   %xmm3,-0xb4(%rax)
  pshufd $0x55,%xmm9,%xmm3
  movd   %xmm3,-0x8c(%rax)
  movdqa %xmm9,%xmm3
  movd   %xmm8,-0xc8(%rax)
  punpckhdq %xmm9,%xmm3
  movd   %xmm3,-0x78(%rax)
  pshufd $0xff,%xmm9,%xmm3
  movd   %xmm3,-0x64(%rax)
  pshufd $0x55,%xmm0,%xmm3
  movd   %xmm3,-0x3c(%rax)
  movdqa %xmm0,%xmm3
  movd   %xmm10,-0x118(%rax)
  punpckhdq %xmm0,%xmm3
  pshufd $0xff,%xmm0,%xmm0
  movdqa %xmm5,%xmm10
  movd   %xmm3,-0x28(%rax)
  movdqa %xmm1,%xmm3
  movd   %xmm0,-0x14(%rax)
  movdqa %xmm1,%xmm0
  punpckhbw %xmm2,%xmm3
  punpcklbw %xmm2,%xmm0
  pmullw %xmm4,%xmm3
  movd   %xmm9,-0xa0(%rax)
  pmullw %xmm4,%xmm0
  psrlw  $0x8,%xmm3
  psrlw  $0x8,%xmm0
  packuswb %xmm3,%xmm0
  psrlw  $0x1,%xmm0
  pand   %xmm7,%xmm0
  movdqa %xmm0,%xmm8
  paddb  %xmm0,%xmm8
  paddb  %xmm0,%xmm8
  psubb  %xmm8,%xmm1
  movdqa %xmm1,%xmm3
  pcmpeqb %xmm6,%xmm1
  por    %xmm3,%xmm1
  movdqa %xmm2,%xmm3
  pcmpgtb %xmm1,%xmm3
  movdqa %xmm1,%xmm8
  punpcklbw %xmm3,%xmm8
  punpckhbw %xmm3,%xmm1
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm8,%xmm3
  pcmpgtw %xmm1,%xmm10
  movdqa %xmm8,%xmm9
  punpcklwd %xmm3,%xmm9
  punpckhwd %xmm3,%xmm8
  movdqa %xmm1,%xmm3
  punpcklwd %xmm10,%xmm3
  punpckhwd %xmm10,%xmm1
  pshufd $0x55,%xmm9,%xmm10
  movd   %xmm9,-0x144(%rax)
  movd   %xmm10,-0x130(%rax)
  movdqa %xmm9,%xmm10
  punpckhdq %xmm9,%xmm10
  pshufd $0xff,%xmm9,%xmm9
  movd   %xmm1,-0x54(%rax)
  movd   %xmm9,-0x108(%rax)
  pshufd $0x55,%xmm8,%xmm9
  movd   %xmm9,-0xe0(%rax)
  movdqa %xmm8,%xmm9
  punpckhdq %xmm8,%xmm9
  movd   %xmm8,-0xf4(%rax)
  pshufd $0xff,%xmm8,%xmm8
  movd   %xmm8,-0xb8(%rax)
  pshufd $0x55,%xmm3,%xmm8
  movd   %xmm8,-0x90(%rax)
  movdqa %xmm3,%xmm8
  punpckhdq %xmm3,%xmm8
  movd   %xmm3,-0xa4(%rax)
  pshufd $0xff,%xmm3,%xmm3
  movd   %xmm3,-0x68(%rax)
  pshufd $0x55,%xmm1,%xmm3
  movd   %xmm3,-0x40(%rax)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm1,%xmm3
  pshufd $0xff,%xmm1,%xmm1
  movd   %xmm10,-0x11c(%rax)
  movdqa %xmm5,%xmm10
  movd   %xmm9,-0xcc(%rax)
  movd   %xmm8,-0x7c(%rax)
  movd   %xmm3,-0x2c(%rax)
  movdqa %xmm0,%xmm3
  movd   %xmm1,-0x18(%rax)
  movdqa %xmm0,%xmm1
  punpckhbw %xmm2,%xmm3
  punpcklbw %xmm2,%xmm1
  pmullw %xmm4,%xmm3
  pmullw %xmm4,%xmm1
  psrlw  $0x8,%xmm3
  psrlw  $0x8,%xmm1
  packuswb %xmm3,%xmm1
  psrlw  $0x1,%xmm1
  pand   %xmm7,%xmm1
  movdqa %xmm1,%xmm8
  paddb  %xmm1,%xmm8
  paddb  %xmm1,%xmm8
  psubb  %xmm8,%xmm0
  movdqa %xmm0,%xmm3
  pcmpeqb %xmm6,%xmm0
  por    %xmm3,%xmm0
  movdqa %xmm2,%xmm3
  pcmpgtb %xmm0,%xmm3
  movdqa %xmm0,%xmm8
  punpcklbw %xmm3,%xmm8
  punpckhbw %xmm3,%xmm0
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm8,%xmm3
  pcmpgtw %xmm0,%xmm10
  movdqa %xmm8,%xmm9
  punpcklwd %xmm3,%xmm9
  punpckhwd %xmm3,%xmm8
  movdqa %xmm0,%xmm3
  punpcklwd %xmm10,%xmm3
  punpckhwd %xmm10,%xmm0
  pshufd $0x55,%xmm9,%xmm10
  movd   %xmm9,-0x148(%rax)
  movd   %xmm10,-0x134(%rax)
  movdqa %xmm9,%xmm10
  punpckhdq %xmm9,%xmm10
  pshufd $0xff,%xmm9,%xmm9
  movd   %xmm0,-0x58(%rax)
  movd   %xmm9,-0x10c(%rax)
  pshufd $0x55,%xmm8,%xmm9
  movd   %xmm9,-0xe4(%rax)
  movdqa %xmm8,%xmm9
  punpckhdq %xmm8,%xmm9
  movd   %xmm8,-0xf8(%rax)
  pshufd $0xff,%xmm8,%xmm8
  movd   %xmm8,-0xbc(%rax)
  pshufd $0x55,%xmm3,%xmm8
  movd   %xmm8,-0x94(%rax)
  movdqa %xmm3,%xmm8
  punpckhdq %xmm3,%xmm8
  movd   %xmm3,-0xa8(%rax)
  pshufd $0xff,%xmm3,%xmm3
  movd   %xmm3,-0x6c(%rax)
  pshufd $0x55,%xmm0,%xmm3
  movd   %xmm3,-0x44(%rax)
  movdqa %xmm0,%xmm3
  punpckhdq %xmm0,%xmm3
  pshufd $0xff,%xmm0,%xmm0
  movd   %xmm8,-0x80(%rax)
  movd   %xmm3,-0x30(%rax)
  movdqa %xmm1,%xmm3
  movd   %xmm0,-0x1c(%rax)
  movdqa %xmm1,%xmm0
  punpckhbw %xmm2,%xmm3
  punpcklbw %xmm2,%xmm0
  pmullw %xmm4,%xmm3
  movd   %xmm10,-0x120(%rax)
  movd   %xmm9,-0xd0(%rax)
  pmullw %xmm4,%xmm0
  psrlw  $0x8,%xmm3
  psrlw  $0x8,%xmm0
  packuswb %xmm3,%xmm0
  psrlw  $0x1,%xmm0
  pand   %xmm7,%xmm0
  movdqa %xmm0,%xmm8
  movdqa %xmm0,%xmm11
  paddb  %xmm0,%xmm8
  punpckhbw %xmm2,%xmm11
  paddb  %xmm0,%xmm8
  pmullw %xmm4,%xmm11
  psubb  %xmm8,%xmm1
  movdqa %xmm1,%xmm3
  pcmpeqb %xmm6,%xmm1
  por    %xmm3,%xmm1
  psrlw  $0x8,%xmm11
  movdqa %xmm2,%xmm3
  pcmpgtb %xmm1,%xmm3
  movdqa %xmm1,%xmm8
  punpcklbw %xmm3,%xmm8
  punpckhbw %xmm3,%xmm1
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm8,%xmm3
  movdqa %xmm8,%xmm10
  movdqa %xmm1,%xmm9
  punpcklwd %xmm3,%xmm10
  punpckhwd %xmm3,%xmm8
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm1,%xmm3
  punpcklwd %xmm3,%xmm9
  punpckhwd %xmm3,%xmm1
  movdqa %xmm0,%xmm3
  punpcklbw %xmm2,%xmm3
  pmullw %xmm4,%xmm3
  psrlw  $0x8,%xmm3
  packuswb %xmm11,%xmm3
  psrlw  $0x1,%xmm3
  pand   %xmm7,%xmm3
  movdqa %xmm3,%xmm11
  paddb  %xmm3,%xmm11
  paddb  %xmm11,%xmm3
  psubb  %xmm3,%xmm0
  movdqa %xmm0,%xmm3
  pcmpeqb %xmm6,%xmm3
  por    %xmm3,%xmm0
  movdqa %xmm2,%xmm3
  pcmpgtb %xmm0,%xmm3
  movdqa %xmm0,%xmm11
  punpcklbw %xmm3,%xmm11
  punpckhbw %xmm3,%xmm0
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm11,%xmm3
  pcmpgtw %xmm0,%xmm13
  movdqa %xmm11,%xmm12
  punpcklwd %xmm3,%xmm12
  punpckhwd %xmm3,%xmm11
  movdqa %xmm0,%xmm3
  punpcklwd %xmm13,%xmm3
  punpckhwd %xmm13,%xmm0
  pshufd $0x55,%xmm12,%xmm13
  movd   %xmm12,-0x150(%rax)
  movd   %xmm13,-0x13c(%rax)
  movdqa %xmm12,%xmm13
  punpckhdq %xmm12,%xmm13
  pshufd $0xff,%xmm12,%xmm12
  movd   %xmm0,-0x60(%rax)
  movd   %xmm12,-0x114(%rax)
  pshufd $0x55,%xmm11,%xmm12
  movd   %xmm12,-0xec(%rax)
  movdqa %xmm11,%xmm12
  movd   %xmm11,-0x100(%rax)
  punpckhdq %xmm11,%xmm12
  pshufd $0xff,%xmm11,%xmm11
  movd   %xmm11,-0xc4(%rax)
  pshufd $0x55,%xmm3,%xmm11
  movd   %xmm11,-0x9c(%rax)
  movdqa %xmm3,%xmm11
  movd   %xmm3,-0xb0(%rax)
  punpckhdq %xmm3,%xmm11
  pshufd $0xff,%xmm3,%xmm3
  movd   %xmm3,-0x74(%rax)
  pshufd $0x55,%xmm0,%xmm3
  movd   %xmm3,-0x4c(%rax)
  movdqa %xmm0,%xmm3
  movd   %xmm13,-0x128(%rax)
  punpckhdq %xmm0,%xmm3
  pshufd $0xff,%xmm0,%xmm0
  movd   %xmm0,-0x24(%rax)
  pshufd $0x55,%xmm10,%xmm0
  movd   %xmm12,-0xd8(%rax)
  movd   %xmm11,-0x88(%rax)
  movd   %xmm3,-0x38(%rax)
  movd   %xmm10,-0x14c(%rax)
  movd   %xmm0,-0x138(%rax)
  movdqa %xmm10,%xmm0
  punpckhdq %xmm10,%xmm0
  movd   %xmm1,-0x5c(%rax)
  pshufd $0xff,%xmm10,%xmm10
  movd   %xmm0,-0x124(%rax)
  pshufd $0x55,%xmm8,%xmm0
  movd   %xmm0,-0xe8(%rax)
  movdqa %xmm8,%xmm0
  movd   %xmm8,-0xfc(%rax)
  punpckhdq %xmm8,%xmm0
  pshufd $0xff,%xmm8,%xmm8
  movd   %xmm0,-0xd4(%rax)
  pshufd $0x55,%xmm9,%xmm0
  movd   %xmm0,-0x98(%rax)
  movdqa %xmm9,%xmm0
  movd   %xmm9,-0xac(%rax)
  punpckhdq %xmm9,%xmm0
  pshufd $0xff,%xmm9,%xmm9
  movd   %xmm0,-0x84(%rax)
  pshufd $0x55,%xmm1,%xmm0
  movd   %xmm0,-0x48(%rax)
  movdqa %xmm1,%xmm0
  punpckhdq %xmm1,%xmm0
  pshufd $0xff,%xmm1,%xmm1
  movd   %xmm10,-0x110(%rax)
  movd   %xmm8,-0xc0(%rax)
  movd   %xmm9,-0x70(%rax)
  movd   %xmm0,-0x34(%rax)
  movd   %xmm1,-0x20(%rax)
  cmp    %rcx,%rdx
  jne    L140
  mov    %r8d,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%r8b
  je     L124
  mov    %eax,%ebp
  lea    (%rax,%rax,4),%eax
  mov    $0xffffffab,%esi
  mov    $0xffffffff,%edi
  cltq
  lea    (%r11,%rax,4),%rdx
  cs nopw 0x0(%rax,%rax,1)
L122:
  movzbl (%r9,%rbp,1),%r12d
  mov    %r12d,%eax
  mul    %sil
  mov    %eax,%ecx
  shr    $0x9,%cx
  lea    (%rcx,%rcx,2),%r13d
  mov    %r12d,%ecx
  sub    %r13d,%ecx
  movzbl %cl,%r12d
  cmp    $0x2,%cl
  mov    %r12d,%ecx
  cmove  %edi,%ecx
  shr    $0x9,%ax
  mov    %eax,%r12d
  mul    %sil
  mov    %ecx,0x10(%rdx)
  mov    %eax,%ecx
  shr    $0x9,%cx
  lea    (%rcx,%rcx,2),%r13d
  mov    %r12d,%ecx
  sub    %r13d,%ecx
  movzbl %cl,%r12d
  cmp    $0x2,%cl
  mov    %r12d,%ecx
  cmove  %edi,%ecx
  shr    $0x9,%ax
  mov    %eax,%r12d
  mul    %sil
  mov    %ecx,0xc(%rdx)
  mov    %eax,%ecx
  shr    $0x9,%cx
  lea    (%rcx,%rcx,2),%r13d
  mov    %r12d,%ecx
  sub    %r13d,%ecx
  movzbl %cl,%r12d
  cmp    $0x2,%cl
  mov    %r12d,%ecx
  cmove  %edi,%ecx
  shr    $0x9,%ax
  mov    %eax,%r12d
  mul    %sil
  mov    %ecx,0x8(%rdx)
  mov    %eax,%ecx
  shr    $0x9,%cx
  lea    (%rcx,%rcx,2),%r13d
  mov    %r12d,%ecx
  sub    %r13d,%ecx
  movzbl %cl,%r12d
  cmp    $0x2,%cl
  mov    %r12d,%ecx
  cmove  %edi,%ecx
  shr    $0x9,%ax
  mov    %ecx,0x4(%rdx)
  mov    %eax,%ecx
  mul    %sil
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%r12d
  mov    %ecx,%eax
  sub    %r12d,%eax
  cmp    $0x2,%al
  je     L47
  movzbl %al,%eax
  add    $0x1,%rbp
  add    $0x14,%rdx
  mov    %eax,-0x14(%rdx)
  cmp    %ebp,%r8d
  jg     L122
L124:
  lea    (%r8,%r8,4),%ecx
  movzbl (%r9,%rbx,1),%edx
  lea    0x4(%rcx),%edi
  cmp    %edi,%r10d
  jle    L188
  mov    $0xffffffab,%eax
  movslq %edi,%rdi
  mul    %dl
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%esi
  mov    %edx,%eax
  sub    %esi,%eax
  movzbl %al,%esi
  cmp    $0x2,%al
  mov    $0xffffffff,%eax
  cmovne %esi,%eax
  mov    %eax,(%r11,%rdi,4)
L188:
  mov    %edx,%eax
  mov    $0xffffffab,%esi
  lea    0x3(%rcx),%edi
  mul    %sil
  mov    %eax,%edx
  shr    $0x9,%dx
  cmp    %r10d,%edi
  jge    L33
  mov    %esi,%eax
  movslq %edi,%rdi
  mul    %dl
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%esi
  mov    %edx,%eax
  sub    %esi,%eax
  movzbl %al,%esi
  cmp    $0x2,%al
  mov    $0xffffffff,%eax
  cmovne %esi,%eax
  mov    %eax,(%r11,%rdi,4)
L33:
  mov    %edx,%eax
  mov    $0xffffffab,%esi
  lea    0x2(%rcx),%edi
  mul    %sil
  mov    %eax,%edx
  shr    $0x9,%dx
  cmp    %edi,%r10d
  jle    L95
  mov    %esi,%eax
  movslq %edi,%rdi
  mul    %dl
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%esi
  mov    %edx,%eax
  sub    %esi,%eax
  movzbl %al,%esi
  cmp    $0x2,%al
  mov    $0xffffffff,%eax
  cmovne %esi,%eax
  mov    %eax,(%r11,%rdi,4)
L95:
  mov    %edx,%eax
  mov    $0xffffffab,%esi
  lea    0x1(%rcx),%edi
  mul    %sil
  mov    %eax,%edx
  shr    $0x9,%dx
  cmp    %edi,%r10d
  jle    L109
  mov    %esi,%eax
  movslq %edi,%rdi
  mul    %dl
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%esi
  mov    %edx,%eax
  sub    %esi,%eax
  movzbl %al,%esi
  cmp    $0x2,%al
  mov    $0xffffffff,%eax
  cmovne %esi,%eax
  mov    %eax,(%r11,%rdi,4)
L109:
  mov    %edx,%eax
  mov    $0xffffffab,%esi
  mul    %sil
  mov    %eax,%edx
  shr    $0x9,%dx
  cmp    %r10d,%ecx
  jge    L48
  mov    %esi,%eax
  movslq %ecx,%rcx
  mul    %dl
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%esi
  mov    %edx,%eax
  sub    %esi,%eax
  movzbl %al,%edx
  cmp    $0x2,%al
  mov    $0xffffffff,%eax
  cmovne %edx,%eax
  mov    %eax,(%r11,%rcx,4)
L48:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L47:
  add    $0x1,%rbp
  movl   $0xffffffff,(%rdx)
  add    $0x14,%rdx
  cmp    %ebp,%r8d
  jg     L122
  jmp    L124
L150:
  mov    %r9,%rbp
  mov    %r11,%rdx
  lea    0x1(%r9,%rax,1),%r12
  mov    $0xffffffab,%esi
  mov    $0xffffffff,%edi
L98:
  movzbl 0x0(%rbp),%r13d
  mov    %r13d,%eax
  mul    %sil
  mov    %eax,%ecx
  shr    $0x9,%cx
  lea    (%rcx,%rcx,2),%r14d
  mov    %r13d,%ecx
  sub    %r14d,%ecx
  movzbl %cl,%r13d
  cmp    $0x2,%cl
  mov    %r13d,%ecx
  cmove  %edi,%ecx
  shr    $0x9,%ax
  mov    %eax,%r14d
  mul    %sil
  mov    %ecx,0x10(%rdx)
  mov    %eax,%r13d
  shr    $0x9,%ax
  mov    %eax,%ecx
  lea    (%rcx,%rcx,2),%eax
  mov    %r14d,%ecx
  sub    %eax,%ecx
  cmp    $0x2,%cl
  movzbl %cl,%eax
  cmove  %edi,%eax
  shr    $0x9,%r13w
  mov    %eax,0xc(%rdx)
  mov    %r13d,%eax
  mul    %sil
  mov    %eax,%r14d
  shr    $0x9,%ax
  mov    %eax,%ecx
  lea    (%rcx,%rcx,2),%eax
  mov    %r13d,%ecx
  sub    %eax,%ecx
  cmp    $0x2,%cl
  movzbl %cl,%eax
  cmove  %edi,%eax
  shr    $0x9,%r14w
  mov    %eax,0x8(%rdx)
  mov    %r14d,%eax
  mul    %sil
  mov    %eax,%ecx
  shr    $0x9,%ax
  mov    %eax,%r13d
  lea    0x0(%r13,%r13,2),%eax
  sub    %eax,%r14d
  movzbl %r14b,%eax
  cmp    $0x2,%al
  cmove  %edi,%eax
  shr    $0x9,%cx
  mov    %eax,0x4(%rdx)
  mov    %ecx,%eax
  mul    %sil
  shr    $0x9,%ax
  lea    (%rax,%rax,2),%r13d
  mov    %ecx,%eax
  sub    %r13d,%eax
  cmp    $0x2,%al
  je     L116
  movzbl %al,%eax
  add    $0x1,%rbp
  add    $0x14,%rdx
  mov    %eax,-0x14(%rdx)
  cmp    %r12,%rbp
  jne    L98
  jmp    L124
  nopl   0x0(%rax)
L116:
  add    $0x1,%rbp
  movl   $0xffffffff,(%rdx)
  add    $0x14,%rdx
  cmp    %rbp,%r12
  jne    L98
  jmp    L124
```

tool_calls: name: read_data
arguments: label: D15
type_infered: byte[16]
name: read_data
arguments: label: D13
type_infered: byte[16]
name: read_data
arguments: label: D0
type_infered: byte[16]

tool: {"D15": [0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab]}

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

tool: {"D0": [0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02]}

assistant: ```c
void string_to_tri(const uint16_t in_len, const unsigned char *str, int64_t *poly) {
  unsigned char tmp;
  int i, j;
  int padNover5;
  padNover5 = in_len / 5;
  if (in_len % 5 == 0)
    padNover5--;
  for (i = 0; i < padNover5; i++) {
    tmp = str[i];
    for (j = 4; j >= 0; j--) {
      poly[i * 5 + j] = tmp % 3;
      if (poly[i * 5 + j] == 2)
        poly[i * 5 + j] = -1;
      tmp /= 3;
    }
  }
  tmp = str[padNover5];
  for (i = 4; i >= 0; i--) {
    if (padNover5 * 5 + i < in_len) {
      poly[padNover5 * 5 + i] = tmp % 3;
      if (poly[padNover5 * 5 + i] == 2)
        poly[padNover5 * 5 + i] = -1;
    }
    tmp /= 3;
  }
  return;
}
```