// File: /workspace/github_cpp_makefile_star2_O3/lvandeve[P]lodepng/lodepng.cpp
// Function: unfilter(unsigned char*, unsigned char const*, unsigned int, unsigned int, unsigned int)
static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) {
  /*
  For PNG filter method 0
  this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times)
  out must have enough bytes allocated already, in must have the scanlines + 1 filtertype byte per scanline
  w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel
  in and out are allowed to be the same memory address (but aren't the same size since in has the extra filter bytes)
  */

  unsigned y;
  unsigned char* prevline = 0;

  /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/
  size_t bytewidth = (bpp + 7u) / 8u;
  /*the width of a scanline in bytes, not including the filter type*/
  size_t linebytes = lodepng_get_raw_size_idat(w, 1, bpp) - 1u;

  for(y = 0; y < h; ++y) {
    size_t outindex = linebytes * y;
    size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/
    unsigned char filterType = in[inindex];

    CERROR_TRY_RETURN(unfilterScanline(&out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, linebytes));

    prevline = &out[outindex];
  }

  return 0;
}

// Assembly:
testl %ecx, %ecx
je 0xfbbd
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x20, %rsp
leal 0x7(%r8), %ebx
movl %ebx, %r15d
shrl $0x3, %r15d
movl %edx, %eax
shrl $0x3, %eax
movl %r8d, %r9d
imulq %rax, %r9
andl $0x7, %edx
imull %r8d, %edx
addl $0x7, %edx
shrl $0x3, %edx
leaq (%r9,%rdx), %rbp
addq %rdx, %r9
incq %r9
cmpl $0x1, %r15d
setne %al
leaq 0x1(%r15), %rdx
cmpq %rbp, %rdx
setb %dl
andb %al, %dl
movb %dl, -0x6d(%rsp)
leaq 0x2(%r15), %rax
movq %rax, -0x38(%rsp)
leaq 0x3(%r15), %rax
movq %rax, -0x30(%rsp)
movl %ecx, %eax
movq %rax, -0x10(%rsp)
leaq 0x1(%rsi), %r14
movq %r15, %rax
negq %rax
movq %rax, -0x28(%rsp)
movq %rdi, %rax
subq %r15, %rax
movq %rax, -0x40(%rsp)
movq %rbp, %rax
subq %r15, %rax
movq %rax, -0x60(%rsp)
leaq 0x3(%rsi), %r10
leaq 0x4(%rsi), %r11
leaq (%rdi,%r15), %rcx
addq $0x3, %rcx
pxor %xmm0, %xmm0
movdqa 0x632a2(%rip), %xmm1    # 0x72050
leaq 0x4(%rsi,%r15), %r12
leaq (%rdi,%r15), %rax
movq %rax, -0x80(%rsp)
leaq (%rsi,%r15), %rax
incq %rax
movq %rax, -0x78(%rsp)
xorl %edx, %edx
movq %rdi, %r13
xorl %r8d, %r8d
movq %rsi, (%rsp)
movq %rdi, -0x20(%rsp)
movl %ebx, -0x6c(%rsp)
movq %r15, -0x50(%rsp)
movq %rbp, -0x68(%rsp)
movq %r9, -0x8(%rsp)
movq %r9, %rax
imulq %rdx, %rax
movzbl (%rsi,%rax), %eax
cmpq $0x4, %rax
ja 0xfbc0
leaq 0x634d0(%rip), %r9      # 0x722d8
movslq (%r9,%rax,4), %rax
addq %r9, %rax
movq %r10, 0x18(%rsp)
movq %r11, 0x10(%rsp)
movq %rcx, -0x48(%rsp)
movq %rdx, 0x8(%rsp)
jmpq *%rax
movq %rdi, %rsi
testq %rbp, %rbp
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
je 0xfb45
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %rbp
jne 0xee3d
jmp 0xfb45
testq %r8, %r8
je 0xefbe
cmpl $0x8, %r15d
movq %r12, -0x18(%rsp)
ja 0xf1f3
leaq 0x6347a(%rip), %r9      # 0x722ec
movslq (%r9,%r15,4), %rax
addq %r9, %rax
jmpq *%rax
testq %rbp, %rbp
je 0xf9f0
movq %rdi, %rsi
xorl %r10d, %r10d
xorl %eax, %eax
xorl %ecx, %ecx
movq -0x80(%rsp), %rdi
movzbl (%r8,%rcx), %edx
movzbl %al, %r15d
movl %edx, %eax
subl %r15d, %eax
movl %eax, %r9d
negl %r9d
cmovsl %eax, %r9d
movl $0xff, %ebx
andl %ebx, %r9d
movzbl %r10b, %r10d
movl %r10d, %eax
subl %r15d, %eax
movl %eax, %r11d
negl %r11d
cmovsl %eax, %r11d
andl %ebx, %r11d
movl %r10d, %ebp
subl %r15d, %ebp
subl %r15d, %ebp
addl %edx, %ebp
movl %ebp, %ebx
negl %ebx
cmovsl %ebp, %ebx
movl %edx, %eax
cmpl %r9d, %r11d
jb 0xeee9
movl %r9d, %r11d
movl %r10d, %eax
cmpl %r11d, %ebx
movq -0x68(%rsp), %rbp
jb 0xeef6
movl %eax, %r15d
addb (%r14,%rcx), %r15b
movb %r15b, (%r13,%rcx)
incq %rcx
movl %r15d, %r10d
movl %edx, %eax
cmpq %rcx, %rbp
movq -0x78(%rsp), %r15
jne 0xee93
jmp 0xfb45
movq %rdi, %rsi
testq %r8, %r8
je 0xf019
testq %rbp, %rbp
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
je 0xfb45
xorl %eax, %eax
movb (%r8,%rax), %cl
addb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %rbp
jne 0xef37
jmp 0xfb45
testq %r8, %r8
je 0xf044
cmpl $0x8, -0x6c(%rsp)
jae 0xf093
movq %rdi, %rsi
xorl %ecx, %ecx
xorl %edx, %edx
jmp 0xfb00
movq %rdi, %rsi
cmpl $0x8, -0x6c(%rsp)
jb 0xef8e
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %r15
jne 0xef7d
cmpq %r15, %rbp
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
je 0xfb45
xorl %eax, %eax
movb (%r13,%rax), %cl
addb (%r15,%rax), %cl
movb %cl, (%rdi,%rax)
incq %rax
cmpq %rax, -0x60(%rsp)
jne 0xefa3
jmp 0xfb45
movq %rdi, %rsi
cmpl $0x8, -0x6c(%rsp)
jb 0xefdb
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %r15
jne 0xefca
cmpq %r15, %rbp
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
je 0xfb45
movq -0x50(%rsp), %rax
leaq (%rax,%r13), %rcx
leaq (%r14,%rax), %rdx
xorl %eax, %eax
movb (%r13,%rax), %r8b
addb (%rdx,%rax), %r8b
movb %r8b, (%rcx,%rax)
incq %rax
cmpq %rax, -0x60(%rsp)
jne 0xeffd
jmp 0xfb45
testq %rbp, %rbp
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
je 0xfb45
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %rbp
jne 0xf02e
jmp 0xfb45
movq %rdi, %rsi
cmpl $0x8, -0x6c(%rsp)
jb 0xf061
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %r15
jne 0xf050
cmpq %r15, %rbp
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
je 0xfb45
xorl %ecx, %ecx
movb (%r13,%rcx), %al
shrb %al
addb (%r15,%rcx), %al
movb %al, (%rdi,%rcx)
incq %rcx
cmpq %rcx, -0x60(%rsp)
jne 0xf076
jmp 0xfb45
xorl %ecx, %ecx
movb (%r8,%rcx), %al
shrb %al
addb (%r14,%rcx), %al
movb %al, (%r13,%rcx)
incq %rcx
cmpq %rcx, %r15
jne 0xf095
cmpl $0x20, -0x6c(%rsp)
jb 0xf168
movq -0x30(%rsp), %rax
cmpq %rbp, %rax
jae 0xfaec
movq %rdi, %rsi
leaq (%r8,%rax), %rdx
xorl %ecx, %ecx
movq %r12, %rdi
movq -0x48(%rsp), %r12
movzbl (%r13,%rcx), %eax
movzbl 0x1(%r13,%rcx), %r10d
movzbl 0x2(%r13,%rcx), %r11d
movzbl 0x3(%r13,%rcx), %ebx
movzbl -0x3(%rdx,%rcx), %ebp
addl %eax, %ebp
movzbl -0x2(%rdx,%rcx), %r9d
addl %r10d, %r9d
movzbl -0x1(%rdx,%rcx), %r10d
shrl %ebp
addb -0x3(%rdi,%rcx), %bpl
addl %r11d, %r10d
shrl %r9d
addb -0x2(%rdi,%rcx), %r9b
movzbl (%rdx,%rcx), %eax
shrl %r10d
addb -0x1(%rdi,%rcx), %r10b
addl %ebx, %eax
shrl %eax
addb (%rdi,%rcx), %al
movb %bpl, -0x3(%r12,%rcx)
movq -0x68(%rsp), %rbp
movb %r9b, -0x2(%r12,%rcx)
movb %r10b, -0x1(%r12,%rcx)
movb %al, (%r12,%rcx)
leaq (%r15,%rcx), %rax
addq $0x7, %rax
addq $0x4, %rcx
cmpq %rbp, %rax
jb 0xf0d6
leaq (%r15,%rcx), %rdx
movq %rdi, %r12
movq -0x80(%rsp), %rdi
movq -0x78(%rsp), %r15
jmp 0xfb0a
cmpl $0x3, %r15d
jne 0xfa92
cmpq %rbp, -0x38(%rsp)
jae 0xfaf6
movq %rdi, %rsi
movl $0x3, %edx
movq -0x78(%rsp), %r15
movq %rdx, %rcx
movzbl -0x3(%r13,%rdx), %eax
movzbl -0x2(%r13,%rdx), %edx
movzbl -0x1(%r13,%rcx), %r10d
movzbl (%r8,%rcx), %r9d
addl %eax, %r9d
movzbl 0x1(%r8,%rcx), %eax
addl %edx, %eax
movzbl 0x2(%r8,%rcx), %edx
addl %r10d, %edx
shrl %r9d
addb -0x3(%r11,%rcx), %r9b
shrl %eax
addb -0x2(%r11,%rcx), %al
shrl %edx
addb -0x1(%r11,%rcx), %dl
movb %r9b, (%r13,%rcx)
movb %al, 0x1(%r13,%rcx)
movb %dl, 0x2(%r13,%rcx)
leaq 0x3(%rcx), %rdx
addq $0x5, %rcx
cmpq %rbp, %rcx
jb 0xf18a
leaq -0x3(%rdx), %rcx
jmp 0xfb05
xorl %eax, %eax
movb (%r8,%rax), %cl
addb (%r14,%rax), %cl
movb %cl, (%r13,%rax)
incq %rax
cmpq %rax, %r15
jne 0xf1f5
movq %r15, %r9
jmp 0xf9f3
cmpq $0x6, %rbp
jb 0xf9f0
pxor %xmm3, %xmm3
movl $0x5, %r9d
xorl %edx, %edx
xorl %r12d, %r12d
xorl %ebp, %ebp
xorl %r11d, %r11d
pxor %xmm2, %xmm2
movl $0xff, %r15d
movq -0x80(%rsp), %rdi
movzbl %r11b, %ecx
movzbl -0x1(%r8,%r9), %r11d
movl %r11d, %eax
subl %ecx, %eax
movl %eax, %esi
negl %esi
cmovsl %eax, %esi
andl %r15d, %esi
movzbl %bpl, %ebp
movl %ebp, %eax
subl %ecx, %eax
movl %eax, %r10d
negl %r10d
cmovsl %eax, %r10d
andl %r15d, %r10d
movl %ebp, %ebx
subl %ecx, %ebx
subl %ecx, %ebx
addl %r11d, %ebx
movl %ebx, %eax
negl %eax
cmovsl %ebx, %eax
cmpl %esi, %r10d
cmovael %esi, %r10d
movzbl %r12b, %esi
movzbl (%r8,%r9), %r12d
cmovbl %r11d, %ebp
cmpl %r10d, %eax
cmovbl %ecx, %ebp
addb -0x1(%r14,%r9), %bpl
movl %r12d, %eax
subl %esi, %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
andl %r15d, %ecx
movzbl %dl, %edx
movl %edx, %eax
subl %esi, %eax
movl %eax, %r10d
negl %r10d
cmovsl %eax, %r10d
andl %r15d, %r10d
movl %edx, %ebx
subl %esi, %ebx
subl %esi, %ebx
addl %r12d, %ebx
movl %ebx, %eax
negl %eax
cmovsl %ebx, %eax
cmpl %ecx, %r10d
cmovael %ecx, %r10d
cmovbl %r12d, %edx
cmpl %r10d, %eax
cmovbl %esi, %edx
movdqa %xmm2, %xmm6
punpcklbw %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3],xmm6[4],xmm0[4],xmm6[5],xmm0[5],xmm6[6],xmm0[6],xmm6[7],xmm0[7]
punpcklwd %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3]
movdqa %xmm3, %xmm5
punpcklbw %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3],xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[7],xmm0[7]
addb (%r14,%r9), %dl
punpcklwd %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
movd -0x5(%r8,%r9), %xmm4
movdqa %xmm4, %xmm8
punpcklbw %xmm0, %xmm8    # xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3],xmm8[4],xmm0[4],xmm8[5],xmm0[5],xmm8[6],xmm0[6],xmm8[7],xmm0[7]
punpcklwd %xmm0, %xmm8    # xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3]
movdqa %xmm8, %xmm9
psubd %xmm6, %xmm9
movdqa %xmm6, %xmm10
movdqa %xmm5, %xmm7
pcmpgtd %xmm6, %xmm7
movdqa %xmm5, %xmm11
psubd %xmm6, %xmm11
paddd %xmm6, %xmm6
psubd %xmm6, %xmm5
movd -0x5(%r14,%r9), %xmm6
por %xmm1, %xmm10
paddd %xmm8, %xmm5
pxor %xmm1, %xmm8
pcmpgtd %xmm10, %xmm8
pxor %xmm8, %xmm9
psubd %xmm9, %xmm8
pxor %xmm7, %xmm11
psubd %xmm11, %xmm7
movdqa %xmm5, %xmm9
psrad $0x1f, %xmm9
pxor %xmm9, %xmm5
psubd %xmm9, %xmm5
movdqa %xmm8, %xmm9
pcmpgtd %xmm7, %xmm9
packssdw %xmm9, %xmm9
packsswb %xmm9, %xmm9
movdqa %xmm7, %xmm10
pxor %xmm1, %xmm10
movdqa %xmm4, %xmm11
pand %xmm9, %xmm11
pandn %xmm3, %xmm9
movdqa %xmm8, %xmm3
pxor %xmm1, %xmm3
pcmpgtd %xmm10, %xmm3
pand %xmm3, %xmm7
pandn %xmm8, %xmm3
por %xmm7, %xmm3
pcmpgtd %xmm5, %xmm3
por %xmm11, %xmm9
packssdw %xmm3, %xmm3
packsswb %xmm3, %xmm3
pand %xmm3, %xmm2
pandn %xmm9, %xmm3
por %xmm2, %xmm3
paddb %xmm6, %xmm3
movd %xmm3, -0x5(%r13,%r9)
movb %bpl, -0x1(%r13,%r9)
movb %dl, (%r13,%r9)
addq $0x6, %r9
movdqa %xmm4, %xmm2
cmpq -0x68(%rsp), %r9
jb 0xf23f
addq $-0x5, %r9
movq -0x68(%rsp), %rbp
jmp 0xf9f8
cmpq $0x8, %rbp
jb 0xf9f0
pxor %xmm4, %xmm4
xorl %edx, %edx
pxor %xmm2, %xmm2
movq -0x80(%rsp), %rdi
movdqa %xmm2, %xmm11
punpcklbw %xmm0, %xmm11   # xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1],xmm11[2],xmm0[2],xmm11[3],xmm0[3],xmm11[4],xmm0[4],xmm11[5],xmm0[5],xmm11[6],xmm0[6],xmm11[7],xmm0[7]
movdqa %xmm11, %xmm12
punpcklwd %xmm0, %xmm12   # xmm12 = xmm12[0],xmm0[0],xmm12[1],xmm0[1],xmm12[2],xmm0[2],xmm12[3],xmm0[3]
punpckhwd %xmm0, %xmm11   # xmm11 = xmm11[4],xmm0[4],xmm11[5],xmm0[5],xmm11[6],xmm0[6],xmm11[7],xmm0[7]
movdqa %xmm4, %xmm5
punpcklbw %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3],xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[7],xmm0[7]
movdqa %xmm5, %xmm6
punpcklwd %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3]
punpckhwd %xmm0, %xmm5    # xmm5 = xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[7],xmm0[7]
movq (%r8,%rdx), %xmm3
movdqa %xmm3, %xmm14
punpcklbw %xmm0, %xmm14   # xmm14 = xmm14[0],xmm0[0],xmm14[1],xmm0[1],xmm14[2],xmm0[2],xmm14[3],xmm0[3],xmm14[4],xmm0[4],xmm14[5],xmm0[5],xmm14[6],xmm0[6],xmm14[7],xmm0[7]
movdqa %xmm14, %xmm13
punpcklwd %xmm0, %xmm13   # xmm13 = xmm13[0],xmm0[0],xmm13[1],xmm0[1],xmm13[2],xmm0[2],xmm13[3],xmm0[3]
punpckhwd %xmm0, %xmm14   # xmm14 = xmm14[4],xmm0[4],xmm14[5],xmm0[5],xmm14[6],xmm0[6],xmm14[7],xmm0[7]
movdqa %xmm14, %xmm7
psubd %xmm11, %xmm7
movdqa %xmm13, %xmm8
psubd %xmm12, %xmm8
movdqa %xmm8, %xmm9
psrad $0x1f, %xmm9
pxor %xmm9, %xmm8
psubd %xmm9, %xmm8
movdqa %xmm7, %xmm9
psrad $0x1f, %xmm9
pxor %xmm9, %xmm7
psubd %xmm9, %xmm7
movdqa %xmm5, %xmm9
psubd %xmm11, %xmm9
movdqa %xmm6, %xmm10
psubd %xmm12, %xmm10
movdqa %xmm10, %xmm15
psrad $0x1f, %xmm15
pxor %xmm15, %xmm10
psubd %xmm15, %xmm10
movdqa %xmm9, %xmm15
psrad $0x1f, %xmm15
pxor %xmm15, %xmm9
psubd %xmm15, %xmm9
paddd %xmm12, %xmm12
psubd %xmm12, %xmm6
paddd %xmm11, %xmm11
psubd %xmm11, %xmm5
paddd %xmm14, %xmm5
paddd %xmm13, %xmm6
movdqa %xmm6, %xmm11
psrad $0x1f, %xmm11
pxor %xmm11, %xmm6
psubd %xmm11, %xmm6
movdqa %xmm5, %xmm11
psrad $0x1f, %xmm11
pxor %xmm11, %xmm5
psubd %xmm11, %xmm5
movdqa %xmm7, %xmm12
pcmpgtd %xmm9, %xmm12
movdqa %xmm8, %xmm11
pcmpgtd %xmm10, %xmm11
packssdw %xmm12, %xmm11
packsswb %xmm11, %xmm11
movdqa %xmm10, %xmm12
pxor %xmm1, %xmm12
movdqa %xmm3, %xmm13
pand %xmm11, %xmm13
pandn %xmm4, %xmm11
movdqa %xmm8, %xmm4
pxor %xmm1, %xmm4
pcmpgtd %xmm12, %xmm4
pand %xmm4, %xmm10
pandn %xmm8, %xmm4
por %xmm10, %xmm4
pcmpgtd %xmm6, %xmm4
movdqa %xmm9, %xmm6
pxor %xmm1, %xmm6
movdqa %xmm7, %xmm8
pxor %xmm1, %xmm8
pcmpgtd %xmm6, %xmm8
pand %xmm8, %xmm9
pandn %xmm7, %xmm8
por %xmm9, %xmm8
pcmpgtd %xmm5, %xmm8
packssdw %xmm8, %xmm4
por %xmm13, %xmm11
packsswb %xmm4, %xmm4
pand %xmm4, %xmm2
pandn %xmm11, %xmm4
por %xmm2, %xmm4
movq (%r14,%rdx), %xmm2
paddb %xmm2, %xmm4
movq %xmm4, (%r13,%rdx)
leaq 0x8(%rdx), %r9
addq $0xf, %rdx
movdqa %xmm3, %xmm2
cmpq %rbp, %rdx
movq %r9, %rdx
jb 0xf434
jmp 0xf9f8
cmpq $0x2, %rbp
jb 0xf9f0
movl $0x1, %r9d
xorl %esi, %esi
xorl %r10d, %r10d
xorl %ebx, %ebx
xorl %eax, %eax
movl $0xff, %r15d
movq -0x80(%rsp), %rdi
movzbl -0x1(%r8,%r9), %ecx
movzbl %al, %edx
movl %ecx, %eax
subl %edx, %eax
movl %eax, %r11d
negl %r11d
cmovsl %eax, %r11d
andl %r15d, %r11d
movzbl %bl, %ebx
movl %ebx, %eax
subl %edx, %eax
movl %eax, %ebp
negl %ebp
cmovsl %eax, %ebp
andl %r15d, %ebp
movl %ebx, %r12d
subl %edx, %r12d
subl %edx, %r12d
addl %ecx, %r12d
movl %r12d, %r15d
negl %r15d
cmovsl %r12d, %r15d
movl %ecx, %eax
cmpl %r11d, %ebp
jb 0xf682
movl %r11d, %ebp
movl %ebx, %eax
cmpl %ebp, %r15d
jb 0xf689
movl %eax, %edx
movzbl (%r8,%r9), %r11d
movzbl %r10b, %r10d
movl %r11d, %eax
subl %r10d, %eax
movl %eax, %ebx
negl %ebx
cmovsl %eax, %ebx
movl $0xff, %r15d
andl %r15d, %ebx
movzbl %sil, %esi
movl %esi, %eax
subl %r10d, %eax
movl %eax, %ebp
negl %ebp
cmovsl %eax, %ebp
andl %r15d, %ebp
movl %esi, %r12d
subl %r10d, %r12d
subl %r10d, %r12d
addl %r11d, %r12d
movl %r12d, %r15d
negl %r15d
cmovsl %r12d, %r15d
movl %r11d, %eax
cmpl %ebx, %ebp
jb 0xf6dc
movl %ebx, %ebp
movl %esi, %eax
cmpl %ebp, %r15d
jb 0xf6e4
movl %eax, %r10d
addb -0x1(%r14,%r9), %dl
addb (%r14,%r9), %r10b
movb %dl, -0x1(%r13,%r9)
movb %r10b, (%r13,%r9)
addq $0x2, %r9
movl %r10d, %esi
movl %r11d, %r10d
movl %edx, %ebx
movl %ecx, %eax
movq -0x68(%rsp), %rbp
cmpq %rbp, %r9
movl $0xff, %r15d
jb 0xf635
decq %r9
jmp 0xf9f8
cmpq $0x3, %rbp
jb 0xf9f0
xorl %edx, %edx
xorl %r12d, %r12d
xorl %ebx, %ebx
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r10d, %r10d
xorl %r15d, %r15d
movzbl (%r8,%rdx), %edi
movzbl %r15b, %ebp
movl %edi, %eax
subl %ebp, %eax
movl %eax, %r15d
negl %r15d
cmovsl %eax, %r15d
movl $0xff, %r11d
andl %r11d, %r15d
movzbl %r10b, %r10d
movl %r10d, %eax
subl %ebp, %eax
movl %eax, %r9d
negl %r9d
cmovsl %eax, %r9d
andl %r11d, %r9d
movl %r10d, %r11d
subl %ebp, %r11d
subl %ebp, %r11d
addl %edi, %r11d
movl %r11d, %eax
negl %eax
cmovsl %r11d, %eax
movl %edi, -0x54(%rsp)
cmpl %r15d, %r9d
jb 0xf796
movl %r15d, %r9d
movl %r10d, %edi
cmpl %r9d, %eax
jb 0xf79d
movl %edi, %ebp
movzbl 0x1(%r8,%rdx), %r10d
movzbl %cl, %ecx
movl %r10d, %eax
subl %ecx, %eax
movl %eax, %r9d
negl %r9d
cmovsl %eax, %r9d
movl $0xff, %r11d
andl %r11d, %r9d
movzbl %sil, %esi
movl %esi, %eax
subl %ecx, %eax
movl %eax, %r15d
negl %r15d
cmovsl %eax, %r15d
andl %r11d, %r15d
movl %esi, %r11d
subl %ecx, %r11d
subl %ecx, %r11d
addl %r10d, %r11d
movl %r11d, %eax
negl %eax
cmovsl %r11d, %eax
movl %r10d, %r11d
cmpl %r9d, %r15d
movq -0x80(%rsp), %rdi
jb 0xf7fb
movl %r9d, %r15d
movl %esi, %r11d
cmpl %r15d, %eax
jb 0xf803
movl %r11d, %ecx
movzbl 0x2(%r8,%rdx), %esi
movzbl %bl, %ebx
movl %esi, %eax
subl %ebx, %eax
movl %eax, %r9d
negl %r9d
cmovsl %eax, %r9d
movl $0xff, %r11d
andl %r11d, %r9d
movzbl %r12b, %r12d
movl %r12d, %eax
subl %ebx, %eax
movl %eax, %r15d
negl %r15d
cmovsl %eax, %r15d
andl %r11d, %r15d
movl %r12d, %r11d
subl %ebx, %r11d
subl %ebx, %r11d
addl %esi, %r11d
movl %r11d, %eax
negl %eax
cmovsl %r11d, %eax
movl %esi, %r11d
cmpl %r9d, %r15d
jb 0xf85c
movl %r9d, %r15d
movl %r12d, %r11d
cmpl %r15d, %eax
jb 0xf864
movl %r11d, %ebx
addb (%r14,%rdx), %bpl
addb 0x1(%r14,%rdx), %cl
addb 0x2(%r14,%rdx), %bl
movb %bpl, (%r13,%rdx)
movb %cl, 0x1(%r13,%rdx)
movb %bl, 0x2(%r13,%rdx)
leaq 0x3(%rdx), %r9
addq $0x5, %rdx
movl %ebx, %r12d
movl %esi, %ebx
movl %ecx, %esi
movl %r10d, %ecx
movl %ebp, %r10d
movl -0x54(%rsp), %eax
movl %eax, %r15d
movq -0x68(%rsp), %rbp
cmpq %rbp, %rdx
movq %r9, %rdx
jb 0xf73c
jmp 0xf9f8
cmpq $0x4, %rbp
jb 0xf9f0
pxor %xmm4, %xmm4
xorl %edx, %edx
pxor %xmm2, %xmm2
movq -0x80(%rsp), %rdi
movdqa %xmm2, %xmm6
punpcklbw %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3],xmm6[4],xmm0[4],xmm6[5],xmm0[5],xmm6[6],xmm0[6],xmm6[7],xmm0[7]
punpcklwd %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3]
movdqa %xmm4, %xmm5
punpcklbw %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3],xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[7],xmm0[7]
punpcklwd %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
movd (%r8,%rdx), %xmm3
movdqa %xmm3, %xmm8
punpcklbw %xmm0, %xmm8    # xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3],xmm8[4],xmm0[4],xmm8[5],xmm0[5],xmm8[6],xmm0[6],xmm8[7],xmm0[7]
punpcklwd %xmm0, %xmm8    # xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3]
movdqa %xmm8, %xmm9
psubd %xmm6, %xmm9
movdqa %xmm6, %xmm10
movdqa %xmm5, %xmm7
pcmpgtd %xmm6, %xmm7
movdqa %xmm5, %xmm11
psubd %xmm6, %xmm11
paddd %xmm6, %xmm6
psubd %xmm6, %xmm5
movd (%r14,%rdx), %xmm6
por %xmm1, %xmm10
paddd %xmm8, %xmm5
pxor %xmm1, %xmm8
pcmpgtd %xmm10, %xmm8
pxor %xmm8, %xmm9
psubd %xmm9, %xmm8
pxor %xmm7, %xmm11
psubd %xmm11, %xmm7
movdqa %xmm5, %xmm9
psrad $0x1f, %xmm9
pxor %xmm9, %xmm5
psubd %xmm9, %xmm5
movdqa %xmm8, %xmm9
pcmpgtd %xmm7, %xmm9
packssdw %xmm9, %xmm9
packsswb %xmm9, %xmm9
movdqa %xmm7, %xmm10
pxor %xmm1, %xmm10
movdqa %xmm3, %xmm11
pand %xmm9, %xmm11
pandn %xmm4, %xmm9
movdqa %xmm8, %xmm4
pxor %xmm1, %xmm4
pcmpgtd %xmm10, %xmm4
pand %xmm4, %xmm7
pandn %xmm8, %xmm4
por %xmm7, %xmm4
pcmpgtd %xmm5, %xmm4
por %xmm11, %xmm9
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pand %xmm4, %xmm2
pandn %xmm9, %xmm4
por %xmm2, %xmm4
paddb %xmm6, %xmm4
movd %xmm4, (%r13,%rdx)
leaq 0x4(%rdx), %r9
addq $0x7, %rdx
movdqa %xmm3, %xmm2
cmpq %rbp, %rdx
movq %r9, %rdx
jb 0xf8cc
jmp 0xf9f8
xorl %r9d, %r9d
movq -0x80(%rsp), %rdi
cmpq %rbp, %r9
movq -0x20(%rsp), %rsi
movq -0x18(%rsp), %r12
movq -0x78(%rsp), %r15
je 0xfb45
movq -0x28(%rsp), %rax
leaq (%r8,%rax), %rcx
movzbl (%r8,%r9), %r15d
movzbl (%rcx,%r9), %edx
movl %r15d, %eax
subl %edx, %eax
movl %eax, %r11d
negl %r11d
cmovsl %eax, %r11d
movq -0x40(%rsp), %rax
movzbl (%rax,%r9), %r10d
movl $0xff, %ebp
andl %ebp, %r11d
movl %r10d, %eax
subl %edx, %eax
movl %eax, %ebx
negl %ebx
cmovsl %eax, %ebx
andl %ebp, %ebx
leal (%r15,%r10), %eax
subl %edx, %eax
subl %edx, %eax
movl %eax, %ebp
negl %ebp
cmovsl %eax, %ebp
cmpl %r11d, %ebx
cmovael %r11d, %ebx
cmovbl %r15d, %r10d
movq -0x78(%rsp), %r15
cmpl %ebx, %ebp
movq -0x68(%rsp), %rbp
cmovbl %edx, %r10d
addb (%r14,%r9), %r10b
movb %r10b, (%r13,%r9)
incq %r9
cmpq %r9, %rbp
jne 0xfa19
jmp 0xfb45
cmpb $0x0, -0x6d(%rsp)
je 0xfaec
movq %rdi, %rsi
movl $0x2, %edx
movq %rdx, %rax
movzbl -0x2(%r13,%rdx), %ecx
movzbl -0x1(%r13,%rdx), %edx
movzbl (%r8,%rax), %r9d
addl %ecx, %r9d
movzbl 0x1(%r8,%rax), %ecx
addl %edx, %ecx
shrl %r9d
addb -0x2(%r10,%rax), %r9b
shrl %ecx
addb -0x1(%r10,%rax), %cl
movb %r9b, (%r13,%rax)
movb %cl, 0x1(%r13,%rax)
leaq 0x2(%rax), %rdx
addq $0x3, %rax
cmpq %rbp, %rax
jb 0xfaa1
leaq -0x2(%rdx), %rcx
jmp 0xfb00
movq %rdi, %rsi
xorl %ecx, %ecx
movq %r15, %rdx
jmp 0xfb00
movq %rdi, %rsi
movl $0x3, %edx
xorl %ecx, %ecx
movq -0x78(%rsp), %r15
movq -0x80(%rsp), %rdi
cmpq %rbp, %rdx
je 0xfb45
movq %rbp, %rbx
subq %rdx, %rbx
leaq (%rdx,%r13), %r9
addq %rdx, %r8
addq %r14, %rdx
addq %r13, %rcx
xorl %r10d, %r10d
movzbl (%rcx,%r10), %eax
movzbl (%r8,%r10), %r11d
addl %eax, %r11d
shrl %r11d
addb (%rdx,%r10), %r11b
movb %r11b, (%r9,%r10)
incq %r10
cmpq %r10, %rbx
jne 0xfb25
movq %rbp, %r8
movq 0x8(%rsp), %rdx
imulq %rdx, %r8
movq %rdi, %rax
movq %rsi, %rdi
addq %rsi, %r8
incq %rdx
addq %rbp, %r13
movq -0x8(%rsp), %r9
addq %r9, %r14
addq %rbp, -0x40(%rsp)
movq 0x18(%rsp), %r10
addq %r9, %r10
movq 0x10(%rsp), %r11
addq %r9, %r11
movq -0x48(%rsp), %rcx
addq %rbp, %rcx
addq %r9, %r12
addq %rbp, %rax
movq %rax, -0x80(%rsp)
addq %r9, %r15
movq %r15, -0x78(%rsp)
cmpq -0x10(%rsp), %rdx
movq -0x50(%rsp), %r15
movq (%rsp), %rsi
jne 0xedec
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
retq
movl $0x24, %eax
jmp 0xfbae