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

```asm
<micro_apply_bitmask>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  push   %rbx
  mov    %esi,%ebx
  sub    $0x288,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  mov    %esi,%eax
  mov    %rsp,%rcx
  imul   %esi,%eax
  cltq
  add    $0xf,%rax
  mov    %rax,%rsi
  mov    %rax,%rdx
  and    $0xfffffffffffff000,%rsi
  and    $0xfffffffffffffff0,%rdx
  sub    %rsi,%rcx
  cmp    %rcx,%rsp
  je     L185
L258:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rcx,%rsp
  jne    L258
L185:
  and    $0xfff,%edx
  sub    %rdx,%rsp
  test   %rdx,%rdx
  jne    L193
L123:
  mov    %rax,%rdx
  mov    %rsp,%rcx
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%r13
  sub    %rax,%rcx
  and    $0xfffffffffffffff0,%rdx
  cmp    %rcx,%rsp
  je     L235
L293:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rcx,%rsp
  jne    L293
L235:
  and    $0xfff,%edx
  sub    %rdx,%rsp
  test   %rdx,%rdx
  jne    L15
L63:
  mov    %rsp,-0x2b0(%rbp)
  test   %ebx,%ebx
  jle    L262
  lea    -0x1(%rbx),%eax
  movslq %ebx,%rdi
  pxor   %xmm7,%xmm7
  mov    %ebx,-0x1f0(%rbp)
  lea    (%rdi,%rdi,2),%r14
  lea    (%rdi,%rdi,4),%rdx
  movdqa %xmm7,%xmm6
  mov    %rdi,%rsi
  mov    %eax,-0x28c(%rbp)
  mov    %ebx,%eax
  lea    0x0(,%r14,4),%r15
  shl    $0x4,%rsi
  movdqa D102(%rip),%xmm12
  mov    %rax,-0x278(%rbp)
  mov    %ebx,%eax
  shr    $0x4,%eax
  mov    %r12,-0x260(%rbp)
  mov    %eax,-0x1ec(%rbp)
  lea    (%r14,%r14,1),%rax
  pcmpgtd %xmm12,%xmm6
  mov    %rax,-0x1d0(%rbp)
  lea    0x0(,%rdi,8),%rax
  mov    %rax,%rcx
  add    %rdi,%rax
  mov    %r13,-0x258(%rbp)
  mov    %rax,-0x1e0(%rbp)
  lea    (%rdx,%rdx,1),%rax
  sub    %rdi,%rcx
  mov    %rax,-0x1e8(%rbp)
  add    %rdi,%rax
  mov    %rax,-0x298(%rbp)
  lea    (%r15,%rdi,1),%rax
  mov    %rax,-0x2a0(%rbp)
  lea    (%rcx,%rcx,1),%rax
  mov    %rax,-0x2a8(%rbp)
  mov    %ebx,%eax
  and    $0xfffffff0,%eax
  mov    %rdx,-0x1c8(%rbp)
  mov    %rcx,-0x1d8(%rbp)
  mov    %eax,-0x270(%rbp)
  movq   $0x0,-0x240(%rbp)
  mov    %r13,-0x280(%rbp)
  mov    %r12,-0x288(%rbp)
  mov    %rsi,-0x238(%rbp)
  sub    %rdi,%rsi
  movaps %xmm6,-0x250(%rbp)
  mov    %rsi,%rbx
  xchg   %ax,%ax
L191:
  mov    -0x240(%rbp),%rsi
  mov    $0xaaaaaaab,%ecx
  mov    %esi,%eax
  mov    %esi,-0x268(%rbp)
  mov    %esi,%r9d
  imul   %rcx,%rax
  shr    $0x21,%rax
  cmpl   $0xe,-0x28c(%rbp)
  mov    %eax,-0x264(%rbp)
  jbe    L113
  movd   %eax,%xmm6
  mov    %r9d,-0x26c(%rbp)
  mov    -0x260(%rbp),%rcx
  xor    %r8d,%r8d
  pshufd $0x0,%xmm6,%xmm6
  mov    -0x298(%rbp),%r9
  movdqa D18(%rip),%xmm8
  movaps %xmm6,-0x220(%rbp)
  movd   %esi,%xmm6
  mov    -0x2a0(%rbp),%r10
  mov    -0x258(%rbp),%rsi
  pshufd $0x0,%xmm6,%xmm15
  movdqa D127(%rip),%xmm6
  mov    -0x2a8(%rbp),%r11
  movaps %xmm6,-0x1c0(%rbp)
  movdqa %xmm15,%xmm6
  psrlq  $0x20,%xmm6
  movaps %xmm6,-0x230(%rbp)
  nopw   0x0(%rax,%rax,1)
L138:
  mov    -0x1d8(%rbp),%rax
  mov    -0x1d0(%rbp),%r13
  add    $0x1,%r8d
  mov    -0x1c8(%rbp),%r12
  movdqa -0x1c0(%rbp),%xmm6
  movzbl (%rcx,%rax,1),%edx
  movzbl (%rcx,%r13,1),%eax
  movdqa D39(%rip),%xmm4
  movdqa %xmm6,%xmm0
  movzbl (%rcx),%r13d
  shl    $0x8,%rdx
  movdqa %xmm0,%xmm2
  paddd  D194(%rip),%xmm6
  movdqa D29(%rip),%xmm5
  or     %rax,%rdx
  movzbl (%rcx,%r12,1),%eax
  movzbl (%rcx,%r11,1),%r12d
  paddd  %xmm0,%xmm4
  shl    $0x8,%rdx
  movdqa %xmm4,%xmm3
  pand   %xmm8,%xmm2
  movaps %xmm6,-0x1c0(%rbp)
  movdqa %xmm3,%xmm1
  pcmpeqd %xmm7,%xmm2
  pxor   %xmm4,%xmm4
  or     %rax,%rdx
  movzbl (%rcx,%rdi,4),%eax
  shl    $0x8,%rdx
  pand   %xmm8,%xmm1
  movdqa D59(%rip),%xmm13
  pcmpeqd %xmm7,%xmm1
  paddd  %xmm0,%xmm5
  or     %rax,%rdx
  movzbl (%rcx,%r14,1),%eax
  paddd  %xmm0,%xmm13
  movdqa %xmm5,%xmm14
  shl    $0x8,%rdx
  movdqa %xmm13,%xmm11
  or     %rax,%rdx
  movzbl (%rcx,%rdi,2),%eax
  movdqa %xmm11,%xmm9
  shl    $0x8,%rdx
  psrad  $0x1,%xmm9
  or     %rax,%rdx
  movzbl (%rcx,%rdi,1),%eax
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl (%rcx,%rbx,1),%eax
  shl    $0x8,%rdx
  shl    $0x8,%rax
  or     %r13,%rdx
  or     %r12,%rax
  movzbl (%rcx,%r10,1),%r12d
  mov    %rdx,-0x160(%rbp)
  shl    $0x8,%rax
  or     %r12,%rax
  movzbl (%rcx,%r15,1),%r12d
  shl    $0x8,%rax
  or     %r12,%rax
  movzbl (%rcx,%r9,1),%r12d
  shl    $0x8,%rax
  or     %r12,%rax
  mov    -0x1e8(%rbp),%r12
  shl    $0x8,%rax
  movzbl (%rcx,%r12,1),%r12d
  or     %r12,%rax
  mov    -0x1e0(%rbp),%r12
  shl    $0x8,%rax
  movzbl (%rcx,%r12,1),%r12d
  or     %r12,%rax
  movzbl (%rcx,%rdi,8),%r12d
  shl    $0x8,%rax
  or     %r12,%rax
  mov    %rax,-0x158(%rbp)
  movdqa -0x160(%rbp),%xmm6
  pand   D144(%rip),%xmm6
  pcmpeqb %xmm4,%xmm6
  movdqa %xmm3,%xmm4
  movdqa %xmm2,%xmm3
  punpcklwd %xmm1,%xmm2
  punpckhwd %xmm1,%xmm3
  movdqa %xmm4,%xmm10
  movdqa %xmm2,%xmm1
  psrad  $0x1,%xmm10
  punpcklwd %xmm3,%xmm2
  punpckhwd %xmm3,%xmm1
  movdqa %xmm13,%xmm3
  punpcklwd %xmm1,%xmm2
  movdqa %xmm5,%xmm1
  pand   %xmm8,%xmm3
  pand   %xmm8,%xmm1
  pcmpeqd %xmm7,%xmm3
  pand   D111(%rip),%xmm2
  movdqa D161(%rip),%xmm13
  pcmpeqd %xmm7,%xmm1
  movaps %xmm11,-0x180(%rbp)
  movaps %xmm14,-0x170(%rbp)
  movaps %xmm4,-0x160(%rbp)
  movdqa %xmm1,%xmm5
  punpcklwd %xmm3,%xmm1
  punpckhwd %xmm3,%xmm5
  movdqa %xmm1,%xmm3
  punpckhwd %xmm5,%xmm3
  punpcklwd %xmm5,%xmm1
  movdqa -0x220(%rbp),%xmm5
  punpcklwd %xmm3,%xmm1
  pand   D111(%rip),%xmm1
  movdqa %xmm14,%xmm3
  paddd  %xmm5,%xmm10
  psrad  $0x1,%xmm3
  paddd  %xmm5,%xmm9
  packuswb %xmm1,%xmm2
  pand   %xmm8,%xmm10
  paddd  %xmm5,%xmm3
  movdqa D51(%rip),%xmm1
  pand   %xmm6,%xmm2
  pcmpeqd %xmm7,%xmm10
  pand   %xmm8,%xmm3
  pand   %xmm2,%xmm1
  pand   %xmm2,%xmm13
  pand   %xmm8,%xmm9
  pandn  D21(%rip),%xmm2
  pcmpeqd %xmm7,%xmm3
  pcmpeqd %xmm7,%xmm9
  por    %xmm1,%xmm2
  movdqa %xmm0,%xmm1
  psrad  $0x1,%xmm1
  paddd  %xmm5,%xmm1
  pand   %xmm8,%xmm1
  pcmpeqd %xmm7,%xmm1
  movdqa %xmm1,%xmm5
  punpckhwd %xmm10,%xmm5
  movdqa %xmm5,%xmm11
  movdqa %xmm1,%xmm5
  punpcklwd %xmm10,%xmm5
  pcmpeqd %xmm7,%xmm1
  movdqa %xmm5,%xmm14
  pcmpeqd %xmm7,%xmm10
  punpcklwd %xmm11,%xmm5
  punpckhwd %xmm11,%xmm14
  movdqa %xmm3,%xmm11
  punpcklwd %xmm9,%xmm11
  punpcklwd %xmm14,%xmm5
  movdqa %xmm3,%xmm14
  punpckhwd %xmm9,%xmm14
  movdqa %xmm11,%xmm4
  pand   D111(%rip),%xmm5
  punpckhwd %xmm14,%xmm4
  pcmpeqd %xmm7,%xmm9
  punpcklwd %xmm14,%xmm11
  pcmpeqd %xmm7,%xmm3
  punpcklwd %xmm4,%xmm11
  movdqa %xmm1,%xmm4
  punpcklwd %xmm10,%xmm1
  punpckhwd %xmm10,%xmm4
  movdqa %xmm7,%xmm14
  pand   D111(%rip),%xmm11
  movdqa %xmm1,%xmm10
  punpcklwd %xmm4,%xmm1
  punpckhwd %xmm4,%xmm10
  punpcklwd %xmm10,%xmm1
  movdqa %xmm3,%xmm10
  punpcklwd %xmm9,%xmm3
  punpckhwd %xmm9,%xmm10
  movdqa %xmm3,%xmm4
  packuswb %xmm11,%xmm5
  movdqa -0x180(%rbp),%xmm11
  punpckhwd %xmm10,%xmm4
  punpcklwd %xmm10,%xmm3
  pand   D111(%rip),%xmm1
  punpcklwd %xmm4,%xmm3
  pand   %xmm6,%xmm5
  movdqa %xmm11,%xmm9
  pand   %xmm2,%xmm5
  psrlq  $0x20,%xmm9
  movdqa %xmm7,%xmm10
  pand   D111(%rip),%xmm3
  packuswb %xmm3,%xmm1
  movdqa -0x170(%rbp),%xmm3
  pand   %xmm6,%xmm1
  movdqa %xmm1,%xmm4
  pand   %xmm1,%xmm13
  pandn  %xmm2,%xmm1
  pandn  %xmm5,%xmm4
  por    %xmm13,%xmm1
  movdqa %xmm0,%xmm2
  por    %xmm13,%xmm4
  movaps %xmm1,-0x190(%rbp)
  psrlq  $0x20,%xmm2
  movdqa -0x230(%rbp),%xmm13
  movdqa %xmm0,%xmm1
  movaps %xmm4,-0x200(%rbp)
  paddd  %xmm15,%xmm0
  movdqa -0x160(%rbp),%xmm4
  pmuludq %xmm13,%xmm2
  pmuludq %xmm15,%xmm1
  movdqa %xmm4,%xmm5
  pmuludq %xmm13,%xmm9
  pmuludq %xmm15,%xmm5
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm2,%xmm1
  movdqa %xmm4,%xmm2
  pshufd $0x8,%xmm9,%xmm9
  movdqa -0x250(%rbp),%xmm4
  psrlq  $0x20,%xmm2
  pshufd $0x8,%xmm5,%xmm5
  pmuludq %xmm13,%xmm2
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm5
  movdqa %xmm3,%xmm2
  psrlq  $0x20,%xmm3
  pmuludq %xmm15,%xmm2
  pmuludq %xmm13,%xmm3
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm3,%xmm3
  punpckldq %xmm3,%xmm2
  movdqa %xmm11,%xmm3
  movdqa %xmm4,%xmm11
  pmuludq %xmm15,%xmm3
  pshufd $0x8,%xmm3,%xmm3
  punpckldq %xmm9,%xmm3
  movdqa %xmm1,%xmm9
  punpckldq %xmm1,%xmm9
  pcmpgtd %xmm9,%xmm10
  pmuludq %xmm9,%xmm11
  pmuludq %xmm12,%xmm9
  pmuludq %xmm12,%xmm10
  paddq  %xmm11,%xmm10
  psllq  $0x20,%xmm10
  paddq  %xmm10,%xmm9
  movdqa %xmm1,%xmm10
  punpckhdq %xmm1,%xmm10
  pcmpgtd %xmm10,%xmm14
  movdqa %xmm14,%xmm11
  movdqa %xmm4,%xmm14
  pmuludq %xmm10,%xmm14
  pmuludq %xmm12,%xmm11
  pmuludq %xmm12,%xmm10
  paddq  %xmm14,%xmm11
  movdqa %xmm1,%xmm14
  psllq  $0x20,%xmm11
  paddq  %xmm11,%xmm10
  movdqa %xmm7,%xmm11
  shufps $0xdd,%xmm10,%xmm9
  movdqa %xmm1,%xmm10
  psrad  $0x1f,%xmm10
  psubd  %xmm10,%xmm9
  movdqa %xmm9,%xmm10
  pslld  $0x1,%xmm10
  paddd  %xmm9,%xmm10
  movdqa %xmm5,%xmm9
  punpckldq %xmm5,%xmm9
  psubd  %xmm10,%xmm14
  movdqa %xmm7,%xmm10
  pcmpgtd %xmm9,%xmm10
  movaps %xmm14,-0x210(%rbp)
  movdqa %xmm4,%xmm14
  pmuludq %xmm9,%xmm14
  pmuludq %xmm12,%xmm9
  pmuludq %xmm12,%xmm10
  paddq  %xmm14,%xmm10
  movdqa %xmm4,%xmm14
  psllq  $0x20,%xmm10
  paddq  %xmm10,%xmm9
  movdqa %xmm5,%xmm10
  punpckhdq %xmm5,%xmm10
  pcmpgtd %xmm10,%xmm11
  pmuludq %xmm10,%xmm14
  pmuludq %xmm12,%xmm10
  pmuludq %xmm12,%xmm11
  paddq  %xmm14,%xmm11
  movdqa %xmm4,%xmm14
  psllq  $0x20,%xmm11
  paddq  %xmm11,%xmm10
  movdqa %xmm7,%xmm11
  shufps $0xdd,%xmm10,%xmm9
  movdqa %xmm5,%xmm10
  psrad  $0x1f,%xmm10
  psubd  %xmm10,%xmm9
  movdqa %xmm9,%xmm10
  pslld  $0x1,%xmm10
  paddd  %xmm9,%xmm10
  movdqa %xmm5,%xmm9
  psubd  %xmm10,%xmm9
  movdqa %xmm2,%xmm10
  punpckldq %xmm2,%xmm10
  movaps %xmm9,-0x1a0(%rbp)
  paddd  -0x1a0(%rbp),%xmm5
  movdqa %xmm10,%xmm9
  movdqa %xmm7,%xmm10
  pcmpgtd %xmm9,%xmm10
  pmuludq %xmm9,%xmm14
  pand   %xmm8,%xmm5
  pmuludq %xmm12,%xmm9
  pcmpeqd %xmm7,%xmm5
  pmuludq %xmm12,%xmm10
  paddq  %xmm14,%xmm10
  movdqa %xmm4,%xmm14
  psllq  $0x20,%xmm10
  paddq  %xmm10,%xmm9
  movdqa %xmm2,%xmm10
  punpckhdq %xmm2,%xmm10
  pcmpgtd %xmm10,%xmm11
  pmuludq %xmm10,%xmm14
  pmuludq %xmm12,%xmm10
  pmuludq %xmm12,%xmm11
  paddq  %xmm14,%xmm11
  movdqa %xmm4,%xmm14
  psllq  $0x20,%xmm11
  paddq  %xmm11,%xmm10
  movdqa %xmm2,%xmm11
  shufps $0xdd,%xmm10,%xmm9
  movdqa %xmm2,%xmm10
  psrad  $0x1f,%xmm10
  psubd  %xmm10,%xmm9
  movdqa %xmm9,%xmm10
  pslld  $0x1,%xmm10
  paddd  %xmm9,%xmm10
  psubd  %xmm10,%xmm11
  movdqa %xmm3,%xmm10
  punpckldq %xmm3,%xmm10
  movaps %xmm11,-0x1b0(%rbp)
  movdqa %xmm7,%xmm11
  paddd  -0x1b0(%rbp),%xmm2
  movdqa %xmm10,%xmm9
  movdqa %xmm7,%xmm10
  pcmpgtd %xmm9,%xmm10
  pmuludq %xmm9,%xmm14
  pand   %xmm8,%xmm2
  pmuludq %xmm12,%xmm9
  pcmpeqd %xmm7,%xmm2
  pmuludq %xmm12,%xmm10
  paddq  %xmm14,%xmm10
  movdqa %xmm4,%xmm14
  psllq  $0x20,%xmm10
  paddq  %xmm10,%xmm9
  movdqa %xmm3,%xmm10
  punpckhdq %xmm3,%xmm10
  pcmpgtd %xmm10,%xmm11
  pmuludq %xmm10,%xmm14
  pmuludq %xmm12,%xmm10
  pmuludq %xmm12,%xmm11
  paddq  %xmm14,%xmm11
  movdqa -0x210(%rbp),%xmm14
  psllq  $0x20,%xmm11
  paddq  %xmm11,%xmm10
  paddd  %xmm14,%xmm1
  movdqa -0x190(%rbp),%xmm11
  shufps $0xdd,%xmm10,%xmm9
  movdqa %xmm3,%xmm10
  pand   %xmm8,%xmm1
  paddb  D126(%rip),%xmm11
  psrad  $0x1f,%xmm10
  pcmpeqd %xmm7,%xmm1
  paddd  %xmm14,%xmm0
  psubd  %xmm10,%xmm9
  pand   %xmm8,%xmm0
  movdqa %xmm9,%xmm10
  pcmpeqd %xmm7,%xmm0
  pslld  $0x1,%xmm10
  paddd  %xmm10,%xmm9
  movdqa %xmm3,%xmm10
  psubd  %xmm9,%xmm10
  movdqa %xmm1,%xmm9
  punpckhwd %xmm5,%xmm9
  paddd  %xmm10,%xmm3
  movaps %xmm10,-0x210(%rbp)
  pand   %xmm8,%xmm3
  movdqa %xmm9,%xmm10
  movdqa %xmm1,%xmm9
  pcmpeqd %xmm7,%xmm3
  pcmpeqd %xmm7,%xmm1
  punpcklwd %xmm5,%xmm9
  movdqa %xmm9,%xmm13
  pcmpeqd %xmm7,%xmm5
  punpcklwd %xmm10,%xmm9
  punpckhwd %xmm10,%xmm13
  movdqa %xmm2,%xmm10
  punpcklwd %xmm3,%xmm10
  punpcklwd %xmm13,%xmm9
  movdqa %xmm2,%xmm13
  punpckhwd %xmm3,%xmm13
  pcmpeqd %xmm7,%xmm2
  movdqa %xmm10,%xmm4
  punpckhwd %xmm13,%xmm4
  pcmpeqd %xmm7,%xmm3
  punpcklwd %xmm13,%xmm10
  pand   D111(%rip),%xmm9
  punpcklwd %xmm4,%xmm10
  pand   D111(%rip),%xmm10
  movdqa %xmm11,%xmm4
  packuswb %xmm10,%xmm9
  pand   %xmm6,%xmm9
  pand   %xmm9,%xmm4
  pandn  -0x200(%rbp),%xmm9
  por    %xmm4,%xmm9
  movdqa %xmm1,%xmm4
  punpcklwd %xmm5,%xmm1
  punpckhwd %xmm5,%xmm4
  movdqa %xmm4,%xmm10
  movdqa %xmm1,%xmm4
  punpckhwd %xmm10,%xmm4
  punpcklwd %xmm10,%xmm1
  punpcklwd %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpcklwd %xmm3,%xmm2
  punpckhwd %xmm3,%xmm4
  pand   D111(%rip),%xmm1
  movdqa -0x180(%rbp),%xmm3
  movdqa %xmm4,%xmm5
  movdqa %xmm2,%xmm4
  mov    -0x1c8(%rbp),%r12
  mov    -0x1d0(%rbp),%r13
  punpckhwd %xmm5,%xmm4
  punpcklwd %xmm5,%xmm2
  paddd  %xmm15,%xmm3
  punpcklwd %xmm4,%xmm2
  pand   D111(%rip),%xmm2
  movdqa -0x190(%rbp),%xmm4
  movdqa %xmm0,%xmm5
  paddd  -0x210(%rbp),%xmm3
  packuswb %xmm2,%xmm1
  movdqa -0x170(%rbp),%xmm2
  pand   %xmm6,%xmm1
  pand   %xmm8,%xmm3
  pand   %xmm1,%xmm4
  pandn  %xmm11,%xmm1
  paddd  %xmm15,%xmm2
  por    %xmm4,%xmm1
  movdqa -0x160(%rbp),%xmm4
  pcmpeqd %xmm7,%xmm3
  paddd  -0x1b0(%rbp),%xmm2
  paddb  D183(%rip),%xmm1
  paddd  %xmm15,%xmm4
  paddd  -0x1a0(%rbp),%xmm4
  pand   %xmm8,%xmm2
  pcmpeqd %xmm7,%xmm2
  pand   %xmm8,%xmm4
  pcmpeqd %xmm7,%xmm4
  punpcklwd %xmm4,%xmm0
  punpckhwd %xmm4,%xmm5
  movdqa %xmm0,%xmm4
  punpcklwd %xmm5,%xmm0
  punpckhwd %xmm5,%xmm4
  punpcklwd %xmm4,%xmm0
  movdqa %xmm2,%xmm4
  punpcklwd %xmm3,%xmm2
  punpckhwd %xmm3,%xmm4
  movdqa %xmm2,%xmm3
  pand   D111(%rip),%xmm0
  punpckhwd %xmm4,%xmm3
  punpcklwd %xmm4,%xmm2
  punpcklwd %xmm3,%xmm2
  pand   D111(%rip),%xmm2
  packuswb %xmm2,%xmm0
  pand   %xmm6,%xmm0
  pand   %xmm0,%xmm1
  pandn  %xmm9,%xmm0
  por    %xmm0,%xmm1
  movd   %xmm1,%eax
  mov    %al,(%rsi)
  movaps %xmm1,-0x70(%rbp)
  movzbl -0x6f(%rbp),%eax
  mov    %al,(%rsi,%rdi,1)
  movaps %xmm1,-0x80(%rbp)
  movzbl -0x7e(%rbp),%eax
  mov    %al,(%rsi,%rdi,2)
  movaps %xmm1,-0x90(%rbp)
  movzbl -0x8d(%rbp),%eax
  mov    %al,(%rsi,%r14,1)
  movaps %xmm1,-0xa0(%rbp)
  movzbl -0x9c(%rbp),%eax
  mov    %al,(%rsi,%rdi,4)
  movaps %xmm1,-0xb0(%rbp)
  movzbl -0xab(%rbp),%eax
  mov    %al,(%rsi,%r12,1)
  movaps %xmm1,-0xc0(%rbp)
  movzbl -0xba(%rbp),%eax
  mov    %al,(%rsi,%r13,1)
  mov    -0x1d8(%rbp),%rdx
  movaps %xmm1,-0xd0(%rbp)
  movzbl -0xc9(%rbp),%eax
  mov    -0x1e8(%rbp),%r12
  mov    %al,(%rsi,%rdx,1)
  mov    -0x1e0(%rbp),%rdx
  movaps %xmm1,-0xe0(%rbp)
  movzbl -0xd8(%rbp),%eax
  mov    %al,(%rsi,%rdi,8)
  movaps %xmm1,-0xf0(%rbp)
  movzbl -0xe7(%rbp),%eax
  mov    %al,(%rsi,%rdx,1)
  movaps %xmm1,-0x100(%rbp)
  movzbl -0xf6(%rbp),%eax
  mov    %al,(%rsi,%r12,1)
  movaps %xmm1,-0x110(%rbp)
  movzbl -0x105(%rbp),%eax
  mov    %al,(%rsi,%r9,1)
  movaps %xmm1,-0x120(%rbp)
  movzbl -0x114(%rbp),%eax
  mov    %al,(%rsi,%r15,1)
  movaps %xmm1,-0x130(%rbp)
  movzbl -0x123(%rbp),%eax
  mov    %al,(%rsi,%r10,1)
  movaps %xmm1,-0x140(%rbp)
  movzbl -0x132(%rbp),%eax
  mov    %al,(%rsi,%r11,1)
  movaps %xmm1,-0x150(%rbp)
  movzbl -0x141(%rbp),%eax
  mov    %al,(%rsi,%rbx,1)
  mov    -0x238(%rbp),%rax
  add    %rax,%rcx
  add    %rax,%rsi
  cmp    %r8d,-0x1ec(%rbp)
  jne    L138
  mov    -0x270(%rbp),%eax
  mov    -0x1f0(%rbp),%esi
  mov    -0x26c(%rbp),%r9d
  cmp    %esi,%eax
  je     L70
  mov    %esi,%r11d
L227:
  mov    %r11d,%esi
  mov    -0x268(%rbp),%edx
  mov    %eax,%r12d
  mov    -0x264(%rbp),%r10d
  imul   %eax,%esi
  imul   %r9d,%r12d
  add    %esi,%edx
  movslq %esi,%rsi
  add    -0x240(%rbp),%rsi
  add    -0x288(%rbp),%rsi
  movslq %edx,%rdx
  add    -0x280(%rbp),%rdx
  jmp    L9
  nopl   0x0(%rax,%rax,1)
L161:
  mov    %r8b,(%rdx)
L285:
  mov    $0xaaaaaaab,%r13d
  mov    %r12d,%ecx
  imul   %r13,%rcx
  shr    $0x21,%rcx
  lea    (%rcx,%rcx,2),%r13d
  mov    %r12d,%ecx
  sub    %r13d,%ecx
  and    $0x1,%r13d
  jne    L176
  add    $0x4,%r8d
  mov    %r8b,(%rdx)
L176:
  lea    (%rax,%r9,1),%r13d
  add    %ecx,%r13d
  and    $0x1,%r13d
  jne    L203
  add    $0x8,%r8d
  mov    %r8b,(%rdx)
L203:
  add    $0x1,%eax
  add    %rdi,%rdx
  add    %rdi,%rsi
  add    %r9d,%r12d
  cmp    %r11d,%eax
  jge    L70
L9:
  movb   $0x0,(%rdx)
  testb  $0xf0,(%rsi)
  jne    L203
  mov    %eax,%ecx
  and    $0x1,%ecx
  mov    %ecx,%r8d
  neg    %r8d
  add    $0x3,%r8d
  test   %ecx,%ecx
  mov    %eax,%ecx
  sete   %r13b
  sar    %ecx
  add    %r10d,%ecx
  and    $0x1,%ecx
  je     L161
  mov    %r13b,(%rdx)
  mov    %r13d,%r8d
  jmp    L285
L193:
  orq    $0x0,-0x8(%rsp,%rdx,1)
  jmp    L123
  nopl   0x0(%rax)
L70:
  addq   $0x1,-0x240(%rbp)
  mov    -0x240(%rbp),%rax
  addq   $0x1,-0x260(%rbp)
  addq   $0x1,-0x258(%rbp)
  cmp    %rax,-0x278(%rbp)
  jne    L191
  mov    -0x280(%rbp),%r13
  mov    -0x288(%rbp),%r12
  xor    %esi,%esi
  mov    -0x1f0(%rbp),%ebx
  mov    -0x2b0(%rbp),%r8
  mov    -0x278(%rbp),%r9
L1:
  mov    %rsi,%rdx
  xor    %ecx,%ecx
  nopl   (%rax)
L47:
  movzbl (%r12,%rdx,1),%eax
  add    $0x1,%ecx
  and    $0x1,%eax
  neg    %eax
  xor    0x0(%r13,%rdx,1),%al
  mov    %al,(%r8,%rdx,1)
  add    %rdi,%rdx
  cmp    %ecx,%ebx
  jne    L47
  add    $0x1,%rsi
  cmp    %r9,%rsi
  jne    L1
L262:
  xor    %r15d,%r15d
  lea    -0x60(%rbp),%r14
  mov    %r12,-0x160(%rbp)
  mov    %r15,%r12
  mov    %r14,%r15
  mov    -0x2b0(%rbp),%r14
  nopl   0x0(%rax)
L58:
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %r14,%rdi
  call   <micro_evaluate@plt>
  mov    %eax,(%r15,%r12,4)
  add    $0x1,%r12
  cmp    $0x8,%r12
  jne    L58
  mov    -0x60(%rbp),%edx
  mov    -0x5c(%rbp),%ecx
  xor    %eax,%eax
  mov    -0x160(%rbp),%r12
  cmp    %ecx,%edx
  jge    L167
  mov    %ecx,%edx
  mov    $0x1,%eax
L167:
  mov    -0x58(%rbp),%ecx
  cmp    %ecx,%edx
  jge    L36
  mov    %ecx,%edx
  mov    $0x2,%eax
L36:
  cmp    -0x54(%rbp),%edx
  mov    $0x3,%edx
  cmovl  %edx,%eax
  test   %ebx,%ebx
  jle    L279
  mov    $0x1,%r9d
  mov    %eax,%ecx
  movslq %ebx,%r8
  shl    %cl,%r9d
  xor    %r10d,%r10d
  nopl   0x0(%rax,%rax,1)
L51:
  mov    %r10,%rdx
  xor    %ecx,%ecx
  nopl   (%rax)
L4:
  movzbl 0x0(%r13,%rdx,1),%esi
  test   %r9d,%esi
  je     L242
  testb  $0x1,(%r12,%rdx,1)
  sete   (%r12,%rdx,1)
L242:
  add    $0x1,%ecx
  add    %r8,%rdx
  cmp    %ecx,%ebx
  jne    L4
  add    $0x1,%r10
  cmp    %r10,%r8
  jne    L51
L279:
  mov    -0x38(%rbp),%rdx
  sub    %fs:0x28,%rdx
  jne    L77
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
  cs nopw 0x0(%rax,%rax,1)
L113:
  mov    -0x1f0(%rbp),%r11d
  xor    %eax,%eax
  jmp    L227
L15:
  orq    $0x0,-0x8(%rsp,%rdx,1)
  jmp    L63
L77:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D102
datatype: byte[16]
name: unpack_data
arguments: label: D18
datatype: byte[16]
name: unpack_data
arguments: label: D127
datatype: byte[16]
name: unpack_data
arguments: label: D39
datatype: byte[16]
name: unpack_data
arguments: label: D194
datatype: byte[16]
name: unpack_data
arguments: label: D29
datatype: byte[16]
name: unpack_data
arguments: label: D59
datatype: byte[16]
name: unpack_data
arguments: label: D144
datatype: byte[16]
name: unpack_data
arguments: label: D111
datatype: byte[16]
name: unpack_data
arguments: label: D161
datatype: byte[16]
name: unpack_data
arguments: label: D51
datatype: byte[16]
name: unpack_data
arguments: label: D21
datatype: byte[16]
name: unpack_data
arguments: label: D126
datatype: byte[16]
name: unpack_data
arguments: label: D183
datatype: byte[16]

tool: {"D102": [0x56,0x55,0x55,0x55,0x56,0x55,0x55,0x55,0x56,0x55,0x55,0x55,0x56,0x55,0x55,0x55]}

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

tool: {"D127": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

tool: {"D39": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D194": [0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00]}

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

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

tool: {"D144": [0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0]}

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

tool: {"D161": [0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01]}

tool: {"D51": [0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03]}

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

tool: {"D126": [0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04]}

tool: {"D183": [0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08]}

assistant: ```c
int micro_apply_bitmask(unsigned char *grid, int size) {
  int x, y;
  unsigned char p;
  int pattern, value[8];
  int best_val, best_pattern;
  unsigned char mask[size * size];
  unsigned char eval[size * size];
  for (x = 0; x < size; x++) {
    for (y = 0; y < size; y++) {
      mask[(y * size) + x] = 0x00;
      if (!(grid[(y * size) + x] & 0xf0)) {
        if ((y & 1) == 0) {
          mask[(y * size) + x] += 0x01;
        }
        if ((((y / 2) + (x / 3)) & 1) == 0) {
          mask[(y * size) + x] += 0x02;
        }
        if (((((y * x) & 1) + ((y * x) % 3)) & 1) == 0) {
          mask[(y * size) + x] += 0x04;
        }
        if (((((y + x) & 1) + ((y * x) % 3)) & 1) == 0) {
          mask[(y * size) + x] += 0x08;
        }
      }
    }
  }
  for (x = 0; x < size; x++) {
    for (y = 0; y < size; y++) {
      if (grid[(y * size) + x] & 0x01) {
        p = 0xff;
      } else {
        p = 0x00;
      }
      eval[(y * size) + x] = mask[(y * size) + x] ^ p;
    }
  }
  for (pattern = 0; pattern < 8; pattern++) {
    value[pattern] = micro_evaluate(eval, size, pattern);
  }
  best_pattern = 0;
  best_val = value[0];
  for (pattern = 1; pattern < 4; pattern++) {
    if (value[pattern] > best_val) {
      best_pattern = pattern;
      best_val = value[pattern];
    }
  }
  for (x = 0; x < size; x++) {
    for (y = 0; y < size; y++) {
      if (mask[(y * size) + x] & (0x01 << best_pattern)) {
        if (grid[(y * size) + x] & 0x01) {
          grid[(y * size) + x] = 0x00;
        } else {
          grid[(y * size) + x] = 0x01;
        }
      }
    }
  }
  return best_pattern;
}
```