user: 请将以下的汇编代码转换成C语言代码：

```asm
<process_plane>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1d0,%rsp
  mov    %rdi,-0x60(%rsp)
  mov    %edx,-0x64(%rsp)
  test   %edx,%edx
  jle    L204
  mov    %rcx,%r12
  mov    %edx,%ecx
  lea    0x0(,%rsi,4),%eax
  mov    %esi,%ebx
  imul   %esi,%ecx
  movslq %eax,%rdx
  xor    %r15d,%r15d
  movq   $0x0,-0x78(%rsp)
  mov    %rdx,-0x70(%rsp)
  movdqa D2(%rip),%xmm2
  mov    %ecx,%eax
  shl    $0x2,%eax
  cltq
  sub    %rdx,%rax
  add    %rax,%r12
  mov    %rdi,%rax
  nopl   0x0(%rax,%rax,1)
L577:
  mov    -0x78(%rsp),%rdi
  add    $0x1,%r15d
  mov    %r12,-0x78(%rsp)
  test   %rdi,%rdi
  je     L509
  mov    %r12,%rcx
  xor    %edx,%edx
  xor    %r8d,%r8d
  test   %ebx,%ebx
  jle    L447
  mov    %r15d,-0x68(%rsp)
  nopl   0x0(%rax)
L675:
  movzbl (%rax),%esi
  lea    0x1(%rax),%r10
  mov    %esi,%r11d
  sar    $0x4,%esi
  and    $0xf,%r11d
  mov    %r11d,%r9d
  shl    $0x4,%r9d
  or     %esi,%r9d
  lea    -0x10(%r9),%ebp
  cmp    $0x1f,%ebp
  jbe    L679
  test   %esi,%esi
  je     L314
  movzbl 0x1(%rax),%edx
  mov    %edx,%r9d
  sar    %edx
  mov    %edx,%ebp
  and    $0x1,%r9d
  lea    0x0(,%r8,4),%r9d
  not    %ebp
  cmovne %ebp,%edx
  movslq %r9d,%rbp
  movzbl (%rdi,%rbp,1),%ebp
  add    %edx,%ebp
  mov    %bpl,(%rcx)
  lea    0x1(%r8),%ebp
  mov    %esi,%r8d
  sub    $0x1,%r8d
  je     L656
  movzbl 0x2(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x4(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x4(%rcx)
  cmp    $0x2,%esi
  je     L656
  movzbl 0x3(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x8(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x8(%rcx)
  cmp    $0x3,%esi
  je     L656
  movzbl 0x4(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0xc(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0xc(%rcx)
  cmp    $0x4,%esi
  je     L656
  movzbl 0x5(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x10(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x10(%rcx)
  cmp    $0x5,%esi
  je     L656
  movzbl 0x6(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x14(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x14(%rcx)
  cmp    $0x6,%esi
  je     L656
  movzbl 0x7(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x18(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x18(%rcx)
  cmp    $0x7,%esi
  je     L656
  movzbl 0x8(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x1c(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x1c(%rcx)
  cmp    $0x8,%esi
  je     L656
  movzbl 0x9(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x20(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x20(%rcx)
  cmp    $0x9,%esi
  je     L656
  movzbl 0xa(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x24(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x24(%rcx)
  cmp    $0xa,%esi
  je     L656
  movzbl 0xb(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x28(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x28(%rcx)
  cmp    $0xb,%esi
  je     L656
  movzbl 0xc(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x2c(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r14d,%edx
  add    %edx,%r13d
  mov    %r13b,0x2c(%rcx)
  cmp    $0xc,%esi
  je     L656
  movzbl 0xd(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r14d
  and    $0x1,%r13d
  lea    0x30(%r9),%r13d
  not    %r14d
  movslq %r13d,%r13
  cmovne %r14d,%edx
  movzbl (%rdi,%r13,1),%r13d
  mov    %esi,%r14d
  add    %edx,%r13d
  mov    %r13b,0x30(%rcx)
  sub    $0xd,%r14d
  je     L656
  movzbl 0xe(%rax),%edx
  mov    %edx,%r13d
  sar    %edx
  mov    %edx,%r15d
  and    $0x1,%r13d
  lea    0x34(%r9),%r13d
  not    %r15d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  cmovne %r15d,%edx
  add    %edx,%r13d
  mov    %r13b,0x34(%rcx)
  cmp    $0x1,%r14d
  je     L656
  movzbl 0xf(%rax),%edx
  mov    %edx,%eax
  sar    %edx
  mov    %edx,%r13d
  test   $0x1,%al
  not    %r13d
  cmovne %r13d,%edx
  add    $0x38,%r9d
  movslq %r9d,%r9
  movzbl (%rdi,%r9,1),%eax
  add    %edx,%eax
  mov    %al,0x38(%rcx)
L656:
  movslq %esi,%rsi
  add    %ebp,%r8d
  add    %rsi,%r10
  lea    (%rcx,%rsi,4),%rcx
L314:
  mov    %r10,%rax
  test   %r11d,%r11d
  je     L142
  mov    %r11d,%r9d
L679:
  movslq %r8d,%rax
  mov    %rcx,%rbp
  lea    -0x1(%r9),%r11d
  mov    %edx,%esi
  lea    0x4(,%rax,4),%rax
  lea    (%rdi,%rax,1),%r13
  sub    %r13,%rbp
  cmp    $0x38,%rbp
  jbe    L582
  cmp    $0xf,%r11d
  jbe    L582
  movd   %esi,%xmm0
  lea    -0x4(%rdi,%rax,1),%rax
  punpcklbw %xmm0,%xmm0
  movdqu 0x10(%rax),%xmm3
  movdqu 0x30(%rax),%xmm4
  punpcklwd %xmm0,%xmm0
  pshufd $0x0,%xmm0,%xmm1
  movdqu (%rax),%xmm0
  pand   %xmm2,%xmm3
  pand   %xmm2,%xmm4
  pand   %xmm2,%xmm0
  packuswb %xmm3,%xmm0
  movdqu 0x20(%rax),%xmm3
  pand   %xmm2,%xmm0
  pand   %xmm2,%xmm3
  packuswb %xmm4,%xmm3
  pand   %xmm2,%xmm3
  packuswb %xmm3,%xmm0
  paddb  %xmm1,%xmm0
  movd   %xmm0,%esi
  mov    %sil,(%rcx)
  movaps %xmm0,0x178(%rsp)
  movzbl 0x179(%rsp),%esi
  mov    %sil,0x4(%rcx)
  movaps %xmm0,0x168(%rsp)
  movzbl 0x16a(%rsp),%esi
  mov    %sil,0x8(%rcx)
  movaps %xmm0,0x158(%rsp)
  movzbl 0x15b(%rsp),%esi
  mov    %sil,0xc(%rcx)
  movaps %xmm0,0x148(%rsp)
  movzbl 0x14c(%rsp),%esi
  mov    %sil,0x10(%rcx)
  movaps %xmm0,0x138(%rsp)
  movzbl 0x13d(%rsp),%esi
  mov    %sil,0x14(%rcx)
  movaps %xmm0,0x128(%rsp)
  movzbl 0x12e(%rsp),%esi
  mov    %sil,0x18(%rcx)
  movaps %xmm0,0x118(%rsp)
  movzbl 0x11f(%rsp),%esi
  mov    %sil,0x1c(%rcx)
  movaps %xmm0,0x108(%rsp)
  movzbl 0x110(%rsp),%esi
  mov    %sil,0x20(%rcx)
  movaps %xmm0,0xf8(%rsp)
  movzbl 0x101(%rsp),%esi
  mov    %sil,0x24(%rcx)
  movaps %xmm0,0xe8(%rsp)
  movzbl 0xf2(%rsp),%esi
  mov    %sil,0x28(%rcx)
  movaps %xmm0,0xd8(%rsp)
  movzbl 0xe3(%rsp),%esi
  mov    %sil,0x2c(%rcx)
  movaps %xmm0,0xc8(%rsp)
  movzbl 0xd4(%rsp),%esi
  mov    %sil,0x30(%rcx)
  movaps %xmm0,0xb8(%rsp)
  movzbl 0xc5(%rsp),%esi
  mov    %sil,0x34(%rcx)
  movaps %xmm0,0xa8(%rsp)
  movzbl 0xb6(%rsp),%esi
  mov    %sil,0x38(%rcx)
  movaps %xmm0,0x98(%rsp)
  movzbl 0xa7(%rsp),%esi
  mov    %sil,0x3c(%rcx)
  mov    %r11d,%esi
  shr    $0x4,%esi
  cmp    $0x2,%esi
  jne    L307
  movdqu 0x40(%rax),%xmm0
  movdqu 0x50(%rax),%xmm3
  movdqu 0x70(%rax),%xmm4
  pand   %xmm2,%xmm3
  pand   %xmm2,%xmm0
  packuswb %xmm3,%xmm0
  movdqu 0x60(%rax),%xmm3
  pand   %xmm2,%xmm4
  pand   %xmm2,%xmm0
  pand   %xmm2,%xmm3
  packuswb %xmm4,%xmm3
  pand   %xmm2,%xmm3
  packuswb %xmm3,%xmm0
  paddb  %xmm1,%xmm0
  movd   %xmm0,%eax
  mov    %al,0x40(%rcx)
  movaps %xmm0,0x88(%rsp)
  movzbl 0x89(%rsp),%eax
  mov    %al,0x44(%rcx)
  movaps %xmm0,0x78(%rsp)
  movzbl 0x7a(%rsp),%eax
  mov    %al,0x48(%rcx)
  movaps %xmm0,0x68(%rsp)
  movzbl 0x6b(%rsp),%eax
  mov    %al,0x4c(%rcx)
  movaps %xmm0,0x58(%rsp)
  movzbl 0x5c(%rsp),%eax
  mov    %al,0x50(%rcx)
  movaps %xmm0,0x48(%rsp)
  movzbl 0x4d(%rsp),%eax
  mov    %al,0x54(%rcx)
  movaps %xmm0,0x38(%rsp)
  movzbl 0x3e(%rsp),%eax
  mov    %al,0x58(%rcx)
  movaps %xmm0,0x28(%rsp)
  movzbl 0x2f(%rsp),%eax
  mov    %al,0x5c(%rcx)
  movaps %xmm0,0x18(%rsp)
  movzbl 0x20(%rsp),%eax
  mov    %al,0x60(%rcx)
  movaps %xmm0,0x8(%rsp)
  movzbl 0x11(%rsp),%eax
  mov    %al,0x64(%rcx)
  movaps %xmm0,-0x8(%rsp)
  movzbl 0x2(%rsp),%eax
  mov    %al,0x68(%rcx)
  movaps %xmm0,-0x18(%rsp)
  movzbl -0xd(%rsp),%eax
  mov    %al,0x6c(%rcx)
  movaps %xmm0,-0x28(%rsp)
  movzbl -0x1c(%rsp),%eax
  mov    %al,0x70(%rcx)
  movaps %xmm0,-0x38(%rsp)
  movzbl -0x2b(%rsp),%eax
  mov    %al,0x74(%rcx)
  movaps %xmm0,-0x48(%rsp)
  movzbl -0x3a(%rsp),%eax
  mov    %al,0x78(%rcx)
  movaps %xmm0,-0x58(%rsp)
  movzbl -0x49(%rsp),%eax
  mov    %al,0x7c(%rcx)
L307:
  mov    %r11d,%eax
  mov    %r9d,%ebp
  and    $0xfffffff0,%eax
  mov    %eax,%esi
  sub    %eax,%ebp
  add    %r8d,%eax
  shl    $0x2,%eax
  lea    (%rcx,%rsi,4),%rsi
  movslq %eax,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,(%rsi)
  cmp    $0x1,%ebp
  je     L538
  lea    0x4(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x4(%rsi)
  cmp    $0x2,%ebp
  je     L538
  lea    0x8(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x8(%rsi)
  cmp    $0x3,%ebp
  je     L538
  lea    0xc(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0xc(%rsi)
  cmp    $0x4,%ebp
  je     L538
  lea    0x10(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x10(%rsi)
  cmp    $0x5,%ebp
  je     L538
  lea    0x14(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x14(%rsi)
  cmp    $0x6,%ebp
  je     L538
  lea    0x18(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x18(%rsi)
  cmp    $0x7,%ebp
  je     L538
  lea    0x1c(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x1c(%rsi)
  cmp    $0x8,%ebp
  je     L538
  lea    0x20(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x20(%rsi)
  cmp    $0x9,%ebp
  je     L538
  lea    0x24(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x24(%rsi)
  cmp    $0xa,%ebp
  je     L538
  lea    0x28(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x28(%rsi)
  cmp    $0xb,%ebp
  je     L538
  lea    0x2c(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x2c(%rsi)
  cmp    $0xc,%ebp
  je     L538
  lea    0x30(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x30(%rsi)
  cmp    $0xd,%ebp
  je     L538
  lea    0x34(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x34(%rsi)
  cmp    $0xe,%ebp
  je     L538
  lea    0x38(%rax),%r13d
  movslq %r13d,%r13
  movzbl (%rdi,%r13,1),%r13d
  add    %edx,%r13d
  mov    %r13b,0x38(%rsi)
  cmp    $0xf,%ebp
  je     L538
  add    $0x3c,%eax
  cltq
  movzbl (%rdi,%rax,1),%eax
  add    %edx,%eax
  mov    %al,0x3c(%rsi)
  nopl   0x0(%rax)
L538:
  movslq %r9d,%rsi
L403:
  lea    (%rcx,%rsi,4),%rcx
  lea    0x1(%r8,%r11,1),%r8d
  mov    %r10,%rax
L142:
  cmp    %r8d,%ebx
  jg     L675
  mov    -0x68(%rsp),%r15d
L447:
  sub    -0x70(%rsp),%r12
  cmp    -0x64(%rsp),%r15d
  jne    L577
  sub    -0x60(%rsp),%eax
L472:
  add    $0x1d0,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L582:
  lea    -0x4(%rdi,%rax,1),%rbp
  movslq %r9d,%rsi
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L189:
  movzbl 0x0(%rbp,%rax,4),%r9d
  add    %edx,%r9d
  mov    %r9b,(%rcx,%rax,4)
  add    $0x1,%rax
  cmp    %rsi,%rax
  jne    L189
  jmp    L403
L509:
  test   %ebx,%ebx
  jle    L447
  mov    %r12,%rdx
  xor    %ecx,%ecx
  xor    %edi,%edi
  mov    %ebx,%r14d
  cs nopw 0x0(%rax,%rax,1)
L640:
  movzbl (%rax),%esi
  lea    0x1(%rax),%r9
  mov    %esi,%r10d
  sar    $0x4,%esi
  and    $0xf,%r10d
  mov    %r10d,%r8d
  shl    $0x4,%r8d
  or     %esi,%r8d
  lea    -0x10(%r8),%r11d
  cmp    $0x1f,%r11d
  jbe    L212
  test   %esi,%esi
  je     L120
  movslq %esi,%r8
  lea    -0x1(%rsi),%ebp
  lea    -0x3(%rdx,%r8,4),%rcx
  lea    0x1(%rax,%r8,1),%r11
  cmp    %rcx,%r9
  setae  %cl
  cmp    %r11,%rdx
  setae  %r11b
  or     %r11b,%cl
  je     L358
  cmp    $0x7,%ebp
  jbe    L358
  mov    0x1(%rax),%rcx
  mov    %rcx,%r11
  mov    %rcx,0x1c0(%rsp)
  shr    $0x10,%r11
  mov    %cl,(%rdx)
  mov    %rcx,0x1b8(%rsp)
  mov    %ch,0x4(%rdx)
  mov    %rcx,0x1b0(%rsp)
  mov    %r11b,0x8(%rdx)
  mov    %rcx,%r11
  shr    $0x18,%r11
  mov    %rcx,0x1a8(%rsp)
  mov    %r11b,0xc(%rdx)
  mov    %rcx,%r11
  shr    $0x20,%r11
  mov    %rcx,0x1a0(%rsp)
  mov    %r11b,0x10(%rdx)
  mov    %rcx,%r11
  shr    $0x28,%r11
  mov    %rcx,0x198(%rsp)
  mov    %r11b,0x14(%rdx)
  mov    %rcx,%r11
  shr    $0x30,%r11
  mov    %rcx,0x190(%rsp)
  mov    %r11b,0x18(%rdx)
  mov    %rcx,0x188(%rsp)
  shr    $0x38,%rcx
  mov    %cl,0x1c(%rdx)
  cmp    $0x8,%esi
  je     L7
L353:
  movzbl 0x9(%rax),%ecx
  mov    %cl,0x20(%rdx)
  cmp    $0x9,%esi
  je     L7
  movzbl 0xa(%rax),%ecx
  mov    %cl,0x24(%rdx)
  cmp    $0xa,%esi
  je     L7
  movzbl 0xb(%rax),%ecx
  mov    %cl,0x28(%rdx)
  cmp    $0xb,%esi
  je     L7
  movzbl 0xc(%rax),%ecx
  mov    %cl,0x2c(%rdx)
  cmp    $0xc,%esi
  je     L7
  movzbl 0xd(%rax),%ecx
  mov    %cl,0x30(%rdx)
  sub    $0xd,%esi
  je     L7
  movzbl 0xe(%rax),%ecx
  mov    %cl,0x34(%rdx)
  cmp    $0x1,%esi
  je     L7
  movzbl 0xf(%rax),%ecx
  mov    %cl,0x38(%rdx)
L7:
  add    %r8,%r9
  lea    (%rdx,%r8,4),%rdx
  lea    0x1(%rbp,%rdi,1),%edi
  movzbl %cl,%ecx
L120:
  mov    %r9,%rax
  test   %r10d,%r10d
  je     L671
  mov    %r10d,%r8d
L212:
  movslq %r8d,%rax
  mov    %ecx,%esi
  mov    %r14d,%ebx
  lea    (%rdx,%rax,4),%rax
L55:
  mov    %sil,(%rdx)
  add    $0x4,%rdx
  cmp    %rax,%rdx
  jne    L55
  mov    %ebx,%r14d
  add    %r8d,%edi
  mov    %r9,%rax
L671:
  cmp    %edi,%r14d
  jg     L640
  mov    %r14d,%ebx
  jmp    L447
L358:
  movzbl 0x1(%rax),%ecx
  mov    %cl,(%rdx)
  test   %ebp,%ebp
  je     L7
  movzbl 0x2(%rax),%ecx
  mov    %cl,0x4(%rdx)
  cmp    $0x2,%esi
  je     L7
  movzbl 0x3(%rax),%ecx
  mov    %cl,0x8(%rdx)
  cmp    $0x3,%esi
  je     L7
  movzbl 0x4(%rax),%ecx
  mov    %cl,0xc(%rdx)
  cmp    $0x4,%esi
  je     L7
  movzbl 0x5(%rax),%ecx
  mov    %cl,0x10(%rdx)
  cmp    $0x5,%esi
  je     L7
  movzbl 0x6(%rax),%ecx
  mov    %cl,0x14(%rdx)
  cmp    $0x6,%esi
  je     L7
  movzbl 0x7(%rax),%ecx
  mov    %cl,0x18(%rdx)
  cmp    $0x7,%esi
  je     L7
  movzbl 0x8(%rax),%ecx
  mov    %cl,0x1c(%rdx)
  cmp    $0x8,%esi
  jne    L353
  jmp    L7
L204:
  xor    %eax,%eax
  jmp    L472
```

tool_calls: name: read_data
arguments: data_tag: D2
datatype: byte[16]

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

assistant: ```c
int process_plane(unsigned char *in, int width, int height, unsigned char *out, int size) {
  int indexw;
  int indexh;
  int code;
  int collen;
  int replen;
  int color;
  int x;
  int revcode;
  unsigned char *last_line;
  unsigned char *this_line;
  unsigned char *org_in;
  unsigned char *org_out;
  org_in = in;
  org_out = out;
  last_line = 0;
  indexh = 0;
  while (indexh < height) {
    out = (org_out + width * height * 4) - ((indexh + 1) * width * 4);
    color = 0;
    this_line = out;
    indexw = 0;
    if (last_line == 0) {
      while (indexw < width) {
        code = (*(in++));
        replen = code & 0xf;
        collen = (code >> 4) & 0xf;
        revcode = (replen << 4) | collen;
        if ((revcode <= 47) && (revcode >= 16)) {
          replen = revcode;
          collen = 0;
        }
        while (collen > 0) {
          color = (*(in++));
          *out = color;
          out += 4;
          indexw++;
          collen--;
        }
        while (replen > 0) {
          *out = color;
          out += 4;
          indexw++;
          replen--;
        }
      }
    } else {
      while (indexw < width) {
        code = (*(in++));
        replen = code & 0xf;
        collen = (code >> 4) & 0xf;
        revcode = (replen << 4) | collen;
        if ((revcode <= 47) && (revcode >= 16)) {
          replen = revcode;
          collen = 0;
        }
        while (collen > 0) {
          x = (*(in++));
          if (x & 1) {
            x = x >> 1;
            x = x + 1;
            color = -x;
          } else {
            x = x >> 1;
            color = x;
          }
          x = last_line[indexw * 4] + color;
          *out = x;
          out += 4;
          indexw++;
          collen--;
        }
        while (replen > 0) {
          x = last_line[indexw * 4] + color;
          *out = x;
          out += 4;
          indexw++;
          replen--;
        }
      }
    }
    indexh++;
    last_line = this_line;
  }
  return (int)(in - org_in);
}
```