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

```asm
<tempofilt>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  mov    %edx,%r13d
  push   %r12
  imul   %ecx,%r13d
  mov    %edx,%r12d
  push   %rbp
  push   %rbx
  mov    %ecx,%ebx
  movslq %r13d,%r15
  sub    $0xc8,%rsp
  mov    0x100(%rsp),%rax
  mov    %rdi,0x78(%rsp)
  mov    %r15,%rdi
  mov    %esi,0xa4(%rsp)
  mov    $0x2,%esi
  mov    %rax,0x30(%rsp)
  mov    0x108(%rsp),%rax
  mov    %r8d,0x60(%rsp)
  mov    %r9,0xa8(%rsp)
  mov    %rax,0x38(%rsp)
  mov    %r15,0x10(%rsp)
  call   <calloc@plt>
  mov    $0x2,%esi
  mov    %r15,%rdi
  mov    %rax,%rbp
  call   <calloc@plt>
  mov    $0x1,%esi
  mov    %r15,%rdi
  mov    %rax,%r14
  call   <calloc@plt>
  mov    %rax,(%rsp)
  test   %r13d,%r13d
  jle    L259
  mov    0x10(%rsp),%r15
  mov    %rax,%rdi
  mov    $0x1,%esi
  mov    %r15,%rdx
  call   <memset@plt>
  mov    %r15,%rdi
  mov    $0x4,%esi
  call   <calloc@plt>
  mov    $0x2,%esi
  mov    $0x1,%edi
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <imatrix@plt>
  mov    0xa4(%rsp),%r15d
  mov    $0x100,%esi
  cltq
  mov    %rax,0x20(%rsp)
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <imatrix@plt>
  cltq
  mov    %rax,0xb0(%rsp)
  test   %r15d,%r15d
  jle    L1701
  mov    0x78(%rsp),%r8
  mov    %rax,%rsi
  mov    %rax,%rdi
  lea    -0x1(%r13),%ecx
  mov    0xa4(%rsp),%eax
  mov    0x10(%rsp),%r11
  mov    %ecx,0x2c(%rsp)
  lea    0x1(%r8),%r10
  add    %r10,%rcx
  lea    (%rsi,%rax,8),%r9
  nopl   0x0(%rax)
L1749:
  mov    (%rdi),%rsi
  mov    %r8,%rax
  cs nopw 0x0(%rax,%rax,1)
L1103:
  movzbl (%rax),%edx
  add    $0x1,%rax
  movl   $0x1,(%rsi,%rdx,4)
  cmp    %rcx,%rax
  jne    L1103
  add    $0x8,%rdi
  add    %r11,%r8
  lea    (%rax,%r11,1),%rcx
  cmp    %r9,%rdi
  jne    L1749
  mov    0xa4(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x70(%rsp)
L1843:
  mov    0x2c(%rsp),%edx
  mov    0x78(%rsp),%rax
  add    %r10,%rdx
  jmp    L740
  nop
L693:
  add    $0x1,%rax
  cmp    %rdx,%rax
  je     L751
L740:
  cmpb   $0x0,(%rax)
  jne    L693
  cmpl   $0xe,0x2c(%rsp)
  jbe    L711
  mov    %r13d,%edx
  mov    0x78(%rsp),%rcx
  xor    %eax,%eax
  pxor   %xmm1,%xmm1
  shr    $0x4,%edx
  shl    $0x4,%rdx
L1490:
  movdqu (%rcx,%rax,1),%xmm0
  movdqa %xmm0,%xmm2
  punpckhbw %xmm1,%xmm0
  punpcklbw %xmm1,%xmm2
  movups %xmm0,0x10(%rbp,%rax,2)
  movups %xmm2,0x0(%rbp,%rax,2)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L1490
  mov    %r13d,%eax
  and    $0xfffffff0,%eax
  cmp    %r13d,%eax
  je     L2201
L95:
  mov    0x78(%rsp),%rdi
  movslq %eax,%rcx
  lea    (%rcx,%rcx,1),%rdx
  movzbl (%rdi,%rcx,1),%esi
  mov    %si,0x0(%rbp,%rcx,2)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x2(%rbp,%rdx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x4(%rbp,%rdx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x6(%rbp,%rdx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x8(%rbp,%rdx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0xa(%rbp,%rdx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0xc(%rbp,%rdx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0xe(%rbp,%rdx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x10(%rbp,%rdx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x12(%rbp,%rdx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x14(%rbp,%rdx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x16(%rbp,%rdx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x18(%rbp,%rdx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1505
  movslq %ecx,%rcx
  add    $0xe,%eax
  movzbl (%rdi,%rcx,1),%ecx
  mov    %cx,0x1a(%rbp,%rdx,1)
  cmp    %eax,%r13d
  jle    L1505
  cltq
  movzbl (%rdi,%rax,1),%eax
  mov    %ax,0x1c(%rbp,%rdx,1)
L1505:
  push   $0x1
  mov    0x8(%rsp),%r15
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   %r15
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x28(%rsp),%r8
  mov    0x80(%rsp),%esi
  mov    0xc8(%rsp),%rdi
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  add    $0x20,%rsp
  mov    %r15,%r8
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %r15,%r9
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %r8
  pop    %r9
  cmpl   $0xe,0x2c(%rsp)
  jbe    L1747
L1938:
  mov    %r13d,%edx
  movdqa D29(%rip),%xmm1
  mov    0x78(%rsp),%rcx
  xor    %eax,%eax
  shr    $0x4,%edx
  shl    $0x4,%rdx
L2189:
  movdqu 0x0(%rbp,%rax,2),%xmm0
  movdqu 0x10(%rbp,%rax,2),%xmm2
  pand   %xmm1,%xmm0
  pand   %xmm1,%xmm2
  packuswb %xmm2,%xmm0
  movups %xmm0,(%rcx,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L2189
  mov    %r13d,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%r13b
  je     L751
L178:
  movslq %eax,%rcx
  mov    0x78(%rsp),%rdi
  movzwl 0x0(%rbp,%rcx,2),%esi
  lea    (%rcx,%rcx,1),%rdx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x2(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x4(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x6(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x8(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0xa(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0xc(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0xe(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x10(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x12(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x14(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x16(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x18(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%rdi,%rcx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L751
  movzwl 0x1a(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  add    $0xe,%eax
  mov    %sil,(%rdi,%rcx,1)
  cmp    %eax,%r13d
  jle    L751
  movzwl 0x1c(%rbp,%rdx,1),%edx
  cltq
  mov    %dl,(%rdi,%rax,1)
L751:
  cmpl   $0x1,0x70(%rsp)
  jle    L1466
L1514:
  mov    0xa4(%rsp),%eax
  sub    $0x2,%eax
  cmp    $0x1,%eax
  jle    L1828
  mov    0x70(%rsp),%esi
  mov    0x10(%rsp),%rdx
  movl   $0x1,0x40(%rsp)
  cmp    %eax,%esi
  cmovle %esi,%eax
  mov    0x78(%rsp),%rsi
  mov    %eax,0x74(%rsp)
  mov    0xa8(%rsp),%rax
  mov    %rsi,%rdi
  add    %rdx,%rdi
  add    %rdx,%rax
  mov    %rdi,0x50(%rsp)
  mov    %rax,0x48(%rsp)
  mov    0xb0(%rsp),%rax
  add    $0x10,%rax
  mov    %rax,0x18(%rsp)
  mov    %r13d,%eax
  neg    %eax
  cltq
  add    %rdx,%rax
  add    %rsi,%rax
  mov    %rax,0x58(%rsp)
  mov    %edi,%eax
  add    %r13d,%eax
  neg    %eax
  mov    %eax,0x64(%rsp)
  lea    (%rdx,%rdx,1),%rax
  mov    %rax,0xb8(%rsp)
  lea    0x0(%r13,%r13,1),%eax
  mov    %eax,0x80(%rsp)
  mov    %r13d,%eax
  shr    $0x4,%eax
  sub    $0x1,%eax
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,0x98(%rsp)
  mov    %r13d,%eax
  and    $0xfffffff0,%eax
  test   %r13d,%r13d
  mov    %eax,0x88(%rsp)
  mov    $0x1,%eax
  cmovg  %r13d,%eax
  mov    %eax,%esi
  mov    %eax,0x84(%rsp)
  shr    $0x4,%eax
  sub    $0x1,%eax
  and    $0xfffffff0,%esi
  add    $0x1,%rax
  mov    %esi,0xa0(%rsp)
  shl    $0x4,%rax
  mov    %rax,0x90(%rsp)
  nopl   0x0(%rax,%rax,1)
L562:
  mov    0x50(%rsp),%rdi
  mov    0x10(%rsp),%rsi
  addl   $0x1,0x40(%rsp)
  mov    %rdi,%r15
  mov    %rdi,%rax
  add    %rsi,%rdi
  mov    %rdi,0x50(%rsp)
  test   %r13d,%r13d
  jle    L1832
  mov    0x2c(%rsp),%r8d
  mov    0xb8(%rsp),%rsi
  mov    $0x1,%edx
  lea    0x2(%r8),%r10
  lea    (%r15,%rsi,1),%r9
  jmp    L2119
  nopw   0x0(%rax,%rax,1)
L1812:
  mov    %edx,%ecx
  xor    %r11d,%r11d
  sub    %r13d,%ecx
  sub    $0x1,%ecx
  movslq %ecx,%rcx
  cmp    (%rdi,%rcx,1),%sil
  je     L1000
  mov    %r11w,-0x2(%r14,%rdx,2)
  add    $0x1,%rdx
  cmp    %r10,%rdx
  je     L1849
L2119:
  movzbl -0x1(%rdi,%rdx,1),%esi
  cmp    -0x1(%r9,%rdx,1),%sil
  jne    L1812
L1000:
  movzbl %sil,%r11d
  mov    %r11w,-0x2(%r14,%rdx,2)
  add    $0x1,%rdx
  cmp    %r10,%rdx
  jne    L2119
L1849:
  mov    0x18(%rsp),%rdi
  mov    0x58(%rsp),%r11
  lea    0x1(%r8),%r10
  xor    %edx,%edx
  lea    -0x10(%rdi),%r9
  jmp    L777
L2207:
  lea    0x1(%rdx),%rcx
  cmp    %r8,%rdx
  je     L621
L254:
  mov    %rcx,%rdx
L777:
  movzbl (%r11,%rdx,1),%esi
  movswl (%r14,%rdx,2),%edi
  mov    %esi,%ecx
  cmp    %esi,%edi
  jne    L2207
  test   %sil,%sil
  je     L2207
  movzbl (%r15,%rdx,1),%esi
  mov    (%r9),%rdi
  mov    (%rdi,%rsi,4),%edi
  test   %edi,%edi
  je     L2207
  mov    0x18(%rsp),%rdi
  mov    (%rdi),%rdi
  mov    (%rdi,%rsi,4),%esi
  test   %esi,%esi
  je     L2207
  mov    %cl,(%r15,%rdx,1)
  lea    0x1(%rdx),%rcx
  cmp    %r8,%rdx
  jne    L254
  nopl   0x0(%rax)
L621:
  mov    0x64(%rsp),%r11d
  mov    0x80(%rsp),%esi
  lea    (%r10,%rax,1),%r8
  mov    %ebx,0x68(%rsp)
  mov    0x18(%rsp),%r10
  add    %r11d,%esi
  jmp    L1267
  xchg   %ax,%ax
L2236:
  mov    (%r9),%rbx
  movzbl %dl,%edi
  mov    (%rbx,%rdi,4),%edi
  test   %edi,%edi
  je     L2283
L1635:
  movb   $0x0,(%rax)
L1986:
  add    $0x1,%rax
  cmp    %r8,%rax
  je     L560
L1267:
  movzbl (%rax),%edx
  test   %dl,%dl
  je     L1986
  lea    (%r11,%rax,1),%edi
  mov    %eax,%ecx
  movslq %edi,%rdi
  cmp    (%r15,%rdi,1),%dl
  jne    L2236
L2283:
  add    %esi,%ecx
  movslq %ecx,%rcx
  cmp    (%r15,%rcx,1),%dl
  je     L1986
  mov    (%r10),%rcx
  mov    (%rcx,%rdx,4),%ebx
  test   %ebx,%ebx
  jne    L1635
  add    $0x1,%rax
  cmp    %r8,%rax
  jne    L1267
  nopl   (%rax)
L560:
  cmpl   $0xe,0x2c(%rsp)
  mov    0x68(%rsp),%ebx
  jbe    L1139
  mov    0x98(%rsp),%rdx
  xor    %eax,%eax
  pxor   %xmm1,%xmm1
  nopl   (%rax)
L2276:
  movdqu (%r15,%rax,1),%xmm0
  movdqa %xmm0,%xmm3
  punpckhbw %xmm1,%xmm0
  punpcklbw %xmm1,%xmm3
  movups %xmm0,0x10(%rbp,%rax,2)
  movups %xmm3,0x0(%rbp,%rax,2)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L2276
  mov    0x88(%rsp),%eax
  cmp    %r13d,%eax
  je     L1130
L222:
  movslq %eax,%rcx
  movzbl (%r15,%rcx,1),%esi
  lea    (%rcx,%rcx,1),%rdx
  mov    %si,0x0(%rbp,%rcx,2)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x2(%rbp,%rdx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x4(%rbp,%rdx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x6(%rbp,%rdx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x8(%rbp,%rdx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0xa(%rbp,%rdx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0xc(%rbp,%rdx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0xe(%rbp,%rdx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x10(%rbp,%rdx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x12(%rbp,%rdx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x14(%rbp,%rdx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x16(%rbp,%rdx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x18(%rbp,%rdx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1130
  movslq %ecx,%rcx
  add    $0xe,%eax
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x1a(%rbp,%rdx,1)
  cmp    %eax,%r13d
  jle    L1130
  cltq
  movzbl (%r15,%rax,1),%eax
  mov    %ax,0x1c(%rbp,%rdx,1)
  nopl   0x0(%rax,%rax,1)
L1130:
  test   %r12d,%r12d
  jle    L2038
L1292:
  mov    $0x1,%r11d
  xor    %r10d,%r10d
  xor    %eax,%eax
  nopl   0x0(%rax)
L244:
  test   %ebx,%ebx
  jle    L1568
  movslq %eax,%rcx
  mov    %eax,%r8d
  lea    0x1(%rax),%esi
  xor    %eax,%eax
  lea    (%r15,%rcx,1),%rdx
  lea    0x0(%rbp,%rcx,2),%rdi
  jmp    L724
  cs nopw 0x0(%rax,%rax,1)
L81:
  cmpb   $0x0,0x1(%rdx)
  jne    L1706
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
L1706:
  cmp    %r11d,%r12d
  jle    L2355
L938:
  add    %ebx,%eax
  add    %r8d,%eax
  cltq
  cmpb   $0x0,(%r15,%rax,1)
  jne    L1440
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
  nopw   0x0(%rax,%rax,1)
L1440:
  mov    %esi,%eax
  cmp    %ecx,%ebx
  jle    L1568
L2355:
  add    $0x1,%rdx
  add    $0x1,%esi
  add    $0x2,%rdi
  mov    %ecx,%eax
L724:
  cmpb   $0x0,(%rdx)
  lea    0x1(%rax),%ecx
  je     L1440
  test   %r10d,%r10d
  je     L530
  mov    %eax,%r9d
  sub    %ebx,%r9d
  add    %r8d,%r9d
  movslq %r9d,%r9
  cmpb   $0x0,(%r15,%r9,1)
  jne    L530
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
L530:
  test   %eax,%eax
  je     L1240
  cmpb   $0x0,-0x1(%rdx)
  jne    L1240
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
L1240:
  cmp    %ecx,%ebx
  jg     L81
  cmp    %r11d,%r12d
  jg     L938
L1581:
  push   $0x1
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x68(%rsp),%rdi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  test   %r13d,%r13d
  pop    %rax
  pop    %rdx
  movdqa D29(%rip),%xmm2
  jle    L1454
  cmp    $0xf,%r13d
  jle    L1671
L1279:
  mov    0x90(%rsp),%rdx
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L506:
  movdqu 0x0(%rbp,%rax,2),%xmm0
  movdqu 0x10(%rbp,%rax,2),%xmm1
  pand   %xmm2,%xmm0
  pand   %xmm2,%xmm1
  packuswb %xmm1,%xmm0
  movups %xmm0,(%r15,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L506
  mov    0xa0(%rsp),%eax
  cmp    %eax,0x84(%rsp)
  je     L1454
L1192:
  movslq %eax,%rcx
  movzwl 0x0(%rbp,%rcx,2),%esi
  lea    (%rcx,%rcx,1),%rdx
  mov    %sil,(%r15,%rcx,1)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x2(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x4(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x6(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x8(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0xa(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0xc(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0xe(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x10(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x12(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x14(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x16(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x18(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1454
  movzwl 0x1a(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  add    $0xe,%eax
  mov    %sil,(%r15,%rcx,1)
  cmp    %eax,%r13d
  jle    L1454
  movzwl 0x1c(%rbp,%rdx,1),%edx
  cltq
  mov    %dl,(%r15,%rax,1)
  nopl   0x0(%rax)
L1454:
  mov    0x10(%rsp),%rdi
  addq   $0x8,0x18(%rsp)
  add    %rdi,0x48(%rsp)
  add    %rdi,0x58(%rsp)
  mov    0x40(%rsp),%edi
  sub    %r13d,0x64(%rsp)
  cmp    %edi,0x74(%rsp)
  jg     L562
  cmp    %edi,0x70(%rsp)
  jle    L1122
L217:
  mov    0x40(%rsp),%esi
  mov    0xa8(%rsp),%rdi
  mov    %r13d,%r15d
  neg    %r15d
  mov    0x2c(%rsp),%ecx
  mov    %esi,%eax
  movslq %r15d,%r15
  add    $0x1,%esi
  imul   %r13d,%eax
  mov    %rcx,0x68(%rsp)
  mov    %esi,0x58(%rsp)
  cltq
  add    %rax,%rdi
  add    %rax,%r15
  mov    %rdi,0x40(%rsp)
  mov    0x78(%rsp),%rdi
  lea    (%rdi,%rax,1),%rdx
  lea    0x0(%r13,%r13,1),%eax
  add    %rdi,%r15
  mov    %eax,0x74(%rsp)
  mov    %r13d,%eax
  lea    0x1(%rdx,%rcx,1),%rcx
  add    %r13d,%edx
  shr    $0x4,%eax
  neg    %edx
  mov    %rcx,0x48(%rsp)
  movslq %esi,%rcx
  sub    $0x1,%eax
  mov    0xb0(%rsp),%rsi
  mov    %r15,%r8
  mov    %edx,0x50(%rsp)
  add    $0x1,%rax
  shl    $0x4,%rax
  lea    (%rsi,%rcx,8),%rsi
  mov    %rax,0x88(%rsp)
  mov    %r13d,%eax
  and    $0xfffffff0,%eax
  test   %r13d,%r13d
  mov    %rsi,0x18(%rsp)
  mov    %eax,0xa0(%rsp)
  mov    $0x1,%eax
  cmovg  %r13d,%eax
  add    0x10(%rsp),%r15
  mov    %eax,%esi
  mov    %eax,0x80(%rsp)
  shr    $0x4,%eax
  sub    $0x1,%eax
  and    $0xfffffff0,%esi
  add    $0x1,%rax
  mov    %esi,0x84(%rsp)
  shl    $0x4,%rax
  mov    %rax,0x90(%rsp)
  test   %r13d,%r13d
  jle    L1926
  nopw   0x0(%rax,%rax,1)
L1963:
  mov    0x18(%rsp),%rax
  mov    0x68(%rsp),%r9
  lea    -0x10(%rax),%rsi
  xor    %eax,%eax
  jmp    L618
  nopw   0x0(%rax,%rax,1)
L1771:
  lea    0x1(%rax),%rdx
  cmp    %r9,%rax
  je     L1248
L234:
  mov    %rdx,%rax
L618:
  movzbl (%r8,%rax,1),%ecx
  movswl (%r14,%rax,2),%edi
  mov    %ecx,%edx
  cmp    %ecx,%edi
  jne    L1771
  test   %cl,%cl
  je     L1771
  movzbl (%r15,%rax,1),%ecx
  mov    (%rsi),%rdi
  mov    (%rdi,%rcx,4),%r11d
  test   %r11d,%r11d
  je     L1771
  mov    0x18(%rsp),%rdi
  mov    (%rdi),%rdi
  mov    (%rdi,%rcx,4),%r10d
  test   %r10d,%r10d
  je     L1771
  mov    %dl,(%r15,%rax,1)
  lea    0x1(%rax),%rdx
  cmp    %r9,%rax
  jne    L234
  nopw   0x0(%rax,%rax,1)
L1248:
  mov    0x50(%rsp),%r11d
  mov    0x74(%rsp),%edi
  mov    %ebx,0x64(%rsp)
  mov    %r15,%rax
  mov    0x48(%rsp),%r9
  mov    0x18(%rsp),%r10
  add    %r11d,%edi
  jmp    L305
  nop
L363:
  mov    (%rsi),%rbx
  movzbl %dl,%r8d
  mov    (%rbx,%r8,4),%r8d
  test   %r8d,%r8d
  je     L2140
L35:
  movb   $0x0,(%rax)
L432:
  add    $0x1,%rax
  cmp    %rax,%r9
  je     L2224
L305:
  movzbl (%rax),%edx
  test   %dl,%dl
  je     L432
  lea    (%r11,%rax,1),%r8d
  mov    %eax,%ecx
  movslq %r8d,%r8
  cmp    %dl,(%r15,%r8,1)
  jne    L363
L2140:
  add    %edi,%ecx
  movslq %ecx,%rcx
  cmp    %dl,(%r15,%rcx,1)
  je     L432
  mov    (%r10),%rcx
  mov    (%rcx,%rdx,4),%ebx
  test   %ebx,%ebx
  jne    L35
  add    $0x1,%rax
  cmp    %rax,%r9
  jne    L305
L2224:
  cmpl   $0xe,0x2c(%rsp)
  mov    0x64(%rsp),%ebx
  jbe    L1185
  mov    0x88(%rsp),%rdx
  xor    %eax,%eax
  pxor   %xmm1,%xmm1
  nopl   (%rax)
L1763:
  movdqu (%r15,%rax,1),%xmm0
  movdqa %xmm0,%xmm3
  punpckhbw %xmm1,%xmm0
  punpcklbw %xmm1,%xmm3
  movups %xmm0,0x10(%rbp,%rax,2)
  movups %xmm3,0x0(%rbp,%rax,2)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L1763
  mov    0xa0(%rsp),%eax
  cmp    %r13d,%eax
  je     L1394
L1446:
  movslq %eax,%rcx
  movzbl (%r15,%rcx,1),%esi
  lea    (%rcx,%rcx,1),%rdx
  mov    %si,0x0(%rbp,%rcx,2)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x2(%rbp,%rdx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x4(%rbp,%rdx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x6(%rbp,%rdx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x8(%rbp,%rdx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0xa(%rbp,%rdx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0xc(%rbp,%rdx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0xe(%rbp,%rdx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x10(%rbp,%rdx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x12(%rbp,%rdx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x14(%rbp,%rdx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x16(%rbp,%rdx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x18(%rbp,%rdx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1394
  movslq %ecx,%rcx
  add    $0xe,%eax
  movzbl (%r15,%rcx,1),%ecx
  mov    %cx,0x1a(%rbp,%rdx,1)
  cmp    %eax,%r13d
  jle    L1394
  cltq
  movzbl (%r15,%rax,1),%eax
  mov    %ax,0x1c(%rbp,%rdx,1)
  nopl   0x0(%rax,%rax,1)
L1394:
  test   %r12d,%r12d
  jle    L2249
L1110:
  mov    $0x1,%r11d
  xor    %r10d,%r10d
  xor    %eax,%eax
  nopl   0x0(%rax)
L1555:
  test   %ebx,%ebx
  jle    L470
  movslq %eax,%rcx
  mov    %eax,%r8d
  lea    0x1(%rax),%esi
  xor    %eax,%eax
  lea    (%r15,%rcx,1),%rdx
  lea    0x0(%rbp,%rcx,2),%rdi
  jmp    L993
  cs nopw 0x0(%rax,%rax,1)
L1786:
  cmpb   $0x0,0x1(%rdx)
  jne    L1006
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
L1006:
  cmp    %r11d,%r12d
  jle    L1462
L933:
  add    %ebx,%eax
  add    %r8d,%eax
  cltq
  cmpb   $0x0,(%r15,%rax,1)
  jne    L2429
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
  nopw   0x0(%rax,%rax,1)
L2429:
  mov    %esi,%eax
  cmp    %ecx,%ebx
  jle    L470
L1462:
  add    $0x1,%rdx
  add    $0x1,%esi
  add    $0x2,%rdi
  mov    %ecx,%eax
L993:
  cmpb   $0x0,(%rdx)
  lea    0x1(%rax),%ecx
  je     L2429
  test   %r10d,%r10d
  je     L2174
  mov    %eax,%r9d
  sub    %ebx,%r9d
  add    %r8d,%r9d
  movslq %r9d,%r9
  cmpb   $0x0,(%r15,%r9,1)
  jne    L2174
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
L2174:
  test   %eax,%eax
  je     L500
  cmpb   $0x0,-0x1(%rdx)
  jne    L500
  xor    %r9d,%r9d
  mov    %r9w,(%rdi)
L500:
  cmp    %ecx,%ebx
  jg     L1786
  cmp    %r11d,%r12d
  jg     L933
L899:
  push   $0x1
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x60(%rsp),%rdi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %r12d,%ecx
  mov    %ebx,%r8d
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  test   %r13d,%r13d
  pop    %rcx
  pop    %rsi
  movdqa D29(%rip),%xmm2
  jle    L794
  cmp    $0xf,%r13d
  jle    L296
L2191:
  mov    0x90(%rsp),%rdx
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L648:
  movdqu 0x0(%rbp,%rax,2),%xmm0
  movdqu 0x10(%rbp,%rax,2),%xmm1
  pand   %xmm2,%xmm0
  pand   %xmm2,%xmm1
  packuswb %xmm1,%xmm0
  movups %xmm0,(%r15,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L648
  mov    0x84(%rsp),%eax
  cmp    %eax,0x80(%rsp)
  je     L794
L1344:
  movslq %eax,%rcx
  movzwl 0x0(%rbp,%rcx,2),%esi
  lea    (%rcx,%rcx,1),%rdx
  mov    %sil,(%r15,%rcx,1)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x2(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x4(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x6(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x8(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0xa(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0xc(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0xe(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x10(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x12(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x14(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x16(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x18(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L794
  movzwl 0x1a(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  add    $0xe,%eax
  mov    %sil,(%r15,%rcx,1)
  cmp    %eax,%r13d
  jle    L794
  movzwl 0x1c(%rbp,%rdx,1),%edx
  cltq
  mov    %dl,(%r15,%rax,1)
  nopl   0x0(%rax)
L794:
  mov    0x10(%rsp),%rdi
  addq   $0x8,0x18(%rsp)
  add    %rdi,0x40(%rsp)
  mov    0x58(%rsp),%eax
  add    %rdi,0x48(%rsp)
  sub    %r13d,0x50(%rsp)
  cmp    %eax,0x70(%rsp)
  jle    L1122
  add    $0x1,%eax
  mov    %r15,%r8
  add    0x10(%rsp),%r15
  mov    %eax,0x58(%rsp)
  test   %r13d,%r13d
  jg     L1963
L1926:
  test   %r12d,%r12d
  jg     L1110
  push   $0x1
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x60(%rsp),%rdi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %rdi
  pop    %r8
  jmp    L794
  nopl   (%rax)
L1568:
  add    $0x1,%r10d
  add    $0x1,%r11d
  cmp    %r10d,%r12d
  jg     L244
  jmp    L1581
  cs nopw 0x0(%rax,%rax,1)
L470:
  add    $0x1,%r10d
  add    $0x1,%r11d
  cmp    %r10d,%r12d
  jg     L1555
  jmp    L899
  cs nopw 0x0(%rax,%rax,1)
L1122:
  mov    0x70(%rsp),%eax
  mov    $0x2,%edx
  mov    0x78(%rsp),%r15
  cmpl   $0x2,0xa4(%rsp)
  cmovg  %eax,%edx
  imul   %r13d,%eax
  cltq
  add    %rax,%r15
  test   %r13d,%r13d
  jle    L1386
L2041:
  xor    %eax,%eax
  jmp    L1392
  nop
L529:
  add    $0x1,%rax
  cmp    %eax,%r13d
  jle    L1386
L1392:
  cmpb   $0x0,(%r15,%rax,1)
  jne    L529
  test   %r13d,%r13d
  mov    $0x1,%eax
  cmovg  %r13d,%eax
  mov    %eax,%r10d
  cmp    $0xf,%r13d
  jle    L991
  mov    %eax,%ecx
  pxor   %xmm1,%xmm1
  xor    %eax,%eax
  shr    $0x4,%ecx
  shl    $0x4,%rcx
L925:
  movdqu (%r15,%rax,1),%xmm0
  movdqa %xmm0,%xmm2
  punpckhbw %xmm1,%xmm0
  punpcklbw %xmm1,%xmm2
  movups %xmm0,0x10(%rbp,%rax,2)
  movups %xmm2,0x0(%rbp,%rax,2)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L925
  mov    %r10d,%eax
  and    $0xfffffff0,%eax
  cmp    %r10d,%eax
  je     L1251
L2392:
  movslq %eax,%rsi
  movzbl (%r15,%rsi,1),%edi
  lea    (%rsi,%rsi,1),%rcx
  mov    %di,0x0(%rbp,%rsi,2)
  lea    0x1(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x2(%rbp,%rcx,1)
  lea    0x2(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x4(%rbp,%rcx,1)
  lea    0x3(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x6(%rbp,%rcx,1)
  lea    0x4(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x8(%rbp,%rcx,1)
  lea    0x5(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0xa(%rbp,%rcx,1)
  lea    0x6(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0xc(%rbp,%rcx,1)
  lea    0x7(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0xe(%rbp,%rcx,1)
  lea    0x8(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x10(%rbp,%rcx,1)
  lea    0x9(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x12(%rbp,%rcx,1)
  lea    0xa(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x14(%rbp,%rcx,1)
  lea    0xb(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x16(%rbp,%rcx,1)
  lea    0xc(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x18(%rbp,%rcx,1)
  lea    0xd(%rax),%esi
  cmp    %esi,%r13d
  jle    L2030
  movslq %esi,%rsi
  add    $0xe,%eax
  movzbl (%r15,%rsi,1),%esi
  mov    %si,0x1a(%rbp,%rcx,1)
  cmp    %eax,%r13d
  jle    L2030
  cltq
  movzbl (%r15,%rax,1),%eax
  mov    %ax,0x1c(%rbp,%rcx,1)
L2030:
  mov    %edx,%edi
  mov    %r10d,0x10(%rsp)
  mov    %ebx,%ecx
  mov    %r12d,%edx
  imul   %r13d,%edi
  movslq %edi,%rdi
  add    0xa8(%rsp),%rdi
  push   $0x1
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  cmp    $0xf,%r13d
  pop    %rax
  pop    %rdx
  mov    0x10(%rsp),%r10d
  jle    L1114
L2200:
  mov    %r10d,%edx
  movdqa D29(%rip),%xmm1
  xor    %eax,%eax
  shr    $0x4,%edx
  shl    $0x4,%rdx
L1330:
  movdqu 0x0(%rbp,%rax,2),%xmm0
  movdqu 0x10(%rbp,%rax,2),%xmm2
  pand   %xmm1,%xmm0
  pand   %xmm1,%xmm2
  packuswb %xmm2,%xmm0
  movups %xmm0,(%r15,%rax,1)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L1330
  mov    %r10d,%eax
  and    $0xfffffff0,%eax
  and    $0xf,%r10d
  je     L1386
L1008:
  movslq %eax,%rcx
  movzwl 0x0(%rbp,%rcx,2),%esi
  lea    (%rcx,%rcx,1),%rdx
  mov    %sil,(%r15,%rcx,1)
  lea    0x1(%rax),%ecx
  cmp    %r13d,%ecx
  jge    L1386
  movzwl 0x2(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x2(%rax),%ecx
  cmp    %r13d,%ecx
  jge    L1386
  movzwl 0x4(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x3(%rax),%ecx
  cmp    %r13d,%ecx
  jge    L1386
  movzwl 0x6(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x8(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0xa(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0xc(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x7(%rax),%ecx
  cmp    %r13d,%ecx
  jge    L1386
  movzwl 0xe(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x10(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x12(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x14(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x16(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x18(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  mov    %sil,(%r15,%rcx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%r13d
  jle    L1386
  movzwl 0x1a(%rbp,%rdx,1),%esi
  movslq %ecx,%rcx
  add    $0xe,%eax
  mov    %sil,(%r15,%rcx,1)
  cmp    %eax,%r13d
  jle    L1386
  movzwl 0x1c(%rbp,%rdx,1),%edx
  cltq
  mov    %dl,(%r15,%rax,1)
L1386:
  mov    0xa4(%rsp),%esi
  mov    0xb0(%rsp),%rdi
  xor    %eax,%eax
  call   <free_imatrix@plt>
  mov    (%rsp),%rdi
  call   <free@plt>
  mov    %rbp,%rdi
  call   <free@plt>
  mov    %r14,%rdi
  call   <free@plt>
  mov    0x8(%rsp),%rdi
  call   <free@plt>
  mov    0x20(%rsp),%rdi
  add    $0xc8,%rsp
  xor    %eax,%eax
  pop    %rbx
  mov    $0x1,%esi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1110 <free_imatrix@plt>
L1832:
  test   %r12d,%r12d
  jg     L1292
  push   $0x1
  mov    0x8(%rsp),%r15
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   %r15
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x28(%rsp),%r8
  mov    0x80(%rsp),%esi
  mov    0x68(%rsp),%rdi
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  add    $0x20,%rsp
  mov    %r15,%r8
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %r12d,%ecx
  mov    %r15,%r9
  mov    %ebx,%r8d
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %rcx
  pop    %rsi
  jmp    L1454
L1828:
  movl   $0x1,0x40(%rsp)
  jmp    L217
L2038:
  push   $0x1
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x68(%rsp),%rdi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %r11
  movdqa D29(%rip),%xmm2
  pop    %rax
  cmp    $0xf,%r13d
  jg     L1279
L1671:
  xor    %eax,%eax
  jmp    L1192
L2249:
  push   $0x1
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x60(%rsp),%rdi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %r10
  movdqa D29(%rip),%xmm2
  pop    %r11
  cmp    $0xf,%r13d
  jg     L2191
L296:
  xor    %eax,%eax
  jmp    L1344
L1139:
  xor    %eax,%eax
  jmp    L222
L1185:
  xor    %eax,%eax
  jmp    L1446
L1701:
  mov    0xa4(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x70(%rsp)
  mov    0x78(%rsp),%rax
  lea    0x1(%rax),%r10
  lea    -0x1(%r13),%eax
  mov    %eax,0x2c(%rsp)
  jmp    L1843
L259:
  mov    0x10(%rsp),%rdi
  mov    $0x4,%esi
  call   <calloc@plt>
  mov    $0x2,%esi
  mov    $0x1,%edi
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <imatrix@plt>
  mov    0xa4(%rsp),%r15d
  mov    $0x100,%esi
  cltq
  mov    %rax,0x20(%rsp)
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <imatrix@plt>
  cltq
  mov    %rax,0xb0(%rsp)
  test   %r15d,%r15d
  jle    L1386
  mov    0xa4(%rsp),%eax
  lea    -0x1(%r13),%esi
  mov    %esi,0x2c(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x70(%rsp)
  cmp    $0x1,%eax
  jg     L1514
  jmp    L1386
  nopl   (%rax)
L1466:
  mov    0x70(%rsp),%eax
  mov    0x78(%rsp),%r15
  mov    $0x1,%edx
  imul   %r13d,%eax
  cltq
  add    %rax,%r15
  jmp    L2041
L1114:
  xor    %eax,%eax
  jmp    L1008
L1747:
  xor    %eax,%eax
  jmp    L178
L991:
  xor    %eax,%eax
  jmp    L2392
L711:
  xor    %eax,%eax
  jmp    L95
L1251:
  mov    %edx,%edi
  mov    %r10d,0x10(%rsp)
  mov    %ebx,%ecx
  mov    %r12d,%edx
  imul   %r13d,%edi
  movslq %edi,%rdi
  add    0xa8(%rsp),%rdi
  push   $0x1
  push   0x8(%rsp)
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x80(%rsp),%esi
  mov    0x28(%rsp),%r8
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  mov    0x20(%rsp),%r8
  add    $0x20,%rsp
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %ebx,%r8d
  mov    %r12d,%ecx
  mov    $0x1,%edx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %r9
  pop    %r10
  mov    0x10(%rsp),%r10d
  jmp    L2200
L2201:
  push   $0x1
  mov    0x8(%rsp),%r15
  mov    %ebx,%ecx
  mov    %r12d,%edx
  push   %r15
  push   %rbp
  mov    0x50(%rsp),%rax
  mov    0x4(%rax),%eax
  push   %rax
  mov    0x50(%rsp),%rax
  mov    0x28(%rsp),%r8
  mov    0x80(%rsp),%esi
  mov    0xc8(%rsp),%rdi
  mov    0x4(%rax),%r9d
  xor    %eax,%eax
  call   <getJ@plt>
  add    $0x20,%rsp
  mov    %r15,%r8
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <removehole@plt>
  mov    0x20(%rsp),%rdi
  mov    %r15,%r9
  mov    %ebx,%r8d
  mov    $0x1,%edx
  mov    %r12d,%ecx
  mov    (%rdi),%rax
  movl   $0x0,0x4(%rax)
  xor    %eax,%eax
  push   %rdi
  mov    %rbp,%rdi
  push   $0x1
  mov    0x18(%rsp),%rsi
  call   <flood@plt>
  pop    %rax
  pop    %rdx
  jmp    L1938
```

tool_calls: name: disassemble_data
arguments: data_tag: D29
data_type: byte[16]

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

assistant: ```c
void tempofilt(unsigned char *rmap1, int nt, int ny, int nx, int N, unsigned char *cmap, int *offset, int *step) {
  int l, imgsize, it, **done, **appear, iy, ix, i;
  unsigned char *rmap0, *rmap;
  short *rmap2, *rmap3;
  float *J;
  imgsize = ny * nx;
  rmap2 = (short *)calloc(imgsize, sizeof(short));
  rmap3 = (short *)calloc(imgsize, sizeof(short));
  rmap0 = (unsigned char *)calloc(imgsize, sizeof(unsigned char));
  for (l = 0; l < imgsize; l++)
    rmap0[l] = 1;
  J = (float *)calloc(imgsize, sizeof(float));
  done = (int **)imatrix(1, 2);
  appear = (int **)imatrix(nt, 256);
  rmap = rmap1;
  for (it = 0; it < nt; it++) {
    for (l = 0; l < imgsize; l++)
      appear[it][rmap[l]] = 1;
    rmap += imgsize;
  }
  rmap = rmap1;
  for (l = 0; l < imgsize; l++) {
    if (rmap[l] == 0)
      break;
  }
  if (l < imgsize) {
    for (l = 0; l < imgsize; l++)
      rmap2[l] = rmap[l];
    getJ(cmap, N, ny, nx, J, offset[1], step[1], rmap2, rmap0, 1);
    removehole(rmap2, 1, ny, nx, rmap0);
    done[0][1] = 0;
    flood(rmap2, J, 1, ny, nx, rmap0, 1, done);
    for (l = 0; l < imgsize; l++)
      rmap[l] = (unsigned char)rmap2[l];
  }
  for (it = 1; it < nt - 1; it++) {
    if (it < nt - 2) {
      rmap = rmap1 + (it + 1) * imgsize;
      for (l = 0; l < imgsize; l++) {
        if (rmap[l] != rmap[l + imgsize] && rmap[l] != rmap[l - imgsize])
          rmap3[l] = 0;
        else
          rmap3[l] = rmap[l];
      }
    }
    rmap = rmap1 + it * imgsize;
    for (l = 0; l < imgsize; l++) {
      if (rmap[l - imgsize] == rmap3[l] && rmap[l - imgsize] > 0) {
        if (appear[it - 1][rmap[l]] && appear[it + 1][rmap[l]])
          rmap[l] = rmap[l - imgsize];
      }
    }
    for (l = 0; l < imgsize; l++) {
      if (rmap[l] > 0) {
        if (rmap[l] != rmap[l - imgsize] && appear[it - 1][rmap[l]])
          rmap[l] = 0;
        else if (rmap[l] != rmap[l + imgsize] && appear[it + 1][rmap[l]])
          rmap[l] = 0;
      }
    }
    for (l = 0; l < imgsize; l++)
      rmap2[l] = rmap[l];
    l = 0;
    for (iy = 0; iy < ny; iy++) {
      for (ix = 0; ix < nx; ix++) {
        if (rmap[l] > 0) {
          if (iy - 1 >= 0) {
            if (rmap[l - nx] == 0)
              rmap2[l] = 0;
          }
          if (ix - 1 >= 0) {
            if (rmap[l - 1] == 0)
              rmap2[l] = 0;
          }
          if (ix + 1 < nx) {
            if (rmap[l + 1] == 0)
              rmap2[l] = 0;
          }
          if (iy + 1 < ny) {
            if (rmap[l + nx] == 0)
              rmap2[l] = 0;
          }
        }
        l++;
      }
    }
    getJ(cmap + it * imgsize, N, ny, nx, J, offset[1], step[1], rmap2, rmap0, 1);
    removehole(rmap2, 1, ny, nx, rmap0);
    done[0][1] = 0;
    flood(rmap2, J, 1, ny, nx, rmap0, 1, done);
    for (l = 0; l < imgsize; l++)
      rmap[l] = (unsigned char)rmap2[l];
  }
  rmap = rmap1 + (nt - 1) * imgsize;
  for (l = 0; l < imgsize; l++) {
    if (rmap[l] == 0)
      break;
  }
  if (l < imgsize) {
    for (l = 0; l < imgsize; l++)
      rmap2[l] = rmap[l];
    getJ(cmap + it * imgsize, N, ny, nx, J, offset[1], step[1], rmap2, rmap0, 1);
    removehole(rmap2, 1, ny, nx, rmap0);
    done[0][1] = 0;
    flood(rmap2, J, 1, ny, nx, rmap0, 1, done);
    for (l = 0; l < imgsize; l++)
      rmap[l] = (unsigned char)rmap2[l];
  }
  free_imatrix(appear, nt);
  free(rmap0);
  free(rmap2);
  free(rmap3);
  free(J);
  free_imatrix(done, 1);
}
```