// File: /workspace/github_cpp_makefile_star2_O1/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 0xffb3
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rsi, %r9
leal 0x7(%r8), %eax
movl %eax, -0x3c(%rsp)
movl %eax, %ebx
shrl $0x3, %ebx
movl %edx, %eax
shrl $0x3, %eax
movl %r8d, %esi
imulq %rax, %rsi
andl $0x7, %edx
imull %r8d, %edx
addl $0x7, %edx
shrl $0x3, %edx
leaq (%rsi,%rdx), %rax
movq %rax, -0x18(%rsp)
leaq (%rsi,%rdx), %r10
incq %r10
movl %ecx, %eax
movq %rax, 0x68(%rsp)
leaq 0x1(%r9), %r14
movq %rbx, %rax
negq %rax
movq %rax, 0x58(%rsp)
movq %rdi, %r13
subq %rbx, %r13
addq %rdx, %rsi
movq %rsi, 0x60(%rsp)
subq %rbx, %rsi
movq %rsi, 0x20(%rsp)
leaq 0x1(%rdi), %rdx
leaq 0x2(%r9), %r11
leaq 0x2(%rdi), %r12
movq %r9, %rcx
movq %r9, 0x70(%rsp)
addq $0x3, %r9
movq %rdi, %rax
movq %rdi, 0x48(%rsp)
addq $0x3, %rdi
leaq 0x4(%rcx), %rsi
addq %rbx, %rax
addq %rbx, %rcx
incq %rcx
xorl %r15d, %r15d
movq 0x48(%rsp), %rbp
xorl %r8d, %r8d
movq %rbx, (%rsp)
movq %r10, 0x18(%rsp)
movq %rcx, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movq %r10, %rax
imulq %r15, %rax
movq 0x70(%rsp), %rcx
movzbl (%rcx,%rax), %eax
cmpq $0x4, %rax
movq %r15, %rcx
ja 0xee17
leaq 0x635b1(%rip), %r15     # 0x721b8
movslq (%r15,%rax,4), %rax
addq %r15, %rax
movq -0x18(%rsp), %r15
jmpq *%rax
xorl %r8d, %r8d
movb $0x1, %al
movl %eax, -0x78(%rsp)
testq %r15, %r15
je 0xee2a
movq %rsi, -0x68(%rsp)
movq %rdx, %r8
xorl %edx, %edx
movl -0x7c(%rsp), %eax
movb (%r14,%rdx), %sil
movb %sil, (%rbp,%rdx)
incq %rdx
cmpq %rdx, %r15
jne 0xec35
jmp 0xee92
testq %r8, %r8
je 0xee33
cmpl $0x8, %ebx
movq %r13, 0x50(%rsp)
movq %rdx, -0x38(%rsp)
movq %r11, 0x10(%rsp)
movq %r12, 0x8(%rsp)
movq %r9, -0x20(%rsp)
movq %rsi, -0x68(%rsp)
movq %rcx, -0x28(%rsp)
ja 0xf268
leaq 0x63545(%rip), %r10     # 0x721cc
movslq (%r10,%rbx,4), %rax
addq %r10, %rax
jmpq *%rax
testq %r15, %r15
movl $0xff, %r12d
je 0xfec2
movq %rdi, %rbx
xorl %edi, %edi
xorl %edx, %edx
xorl %eax, %eax
movzbl (%r8,%rax), %ecx
movzbl %dl, %edx
movl %ecx, %r9d
subl %edx, %r9d
movl %r9d, %esi
negl %esi
cmovsl %r9d, %esi
andl %r12d, %esi
movzbl %dil, %edi
movl %edi, %r10d
subl %edx, %r10d
movl %r10d, %r9d
negl %r9d
cmovsl %r10d, %r9d
andl %r12d, %r9d
movl %edi, %r11d
subl %edx, %r11d
subl %edx, %r11d
addl %ecx, %r11d
movl %r11d, %r10d
negl %r10d
cmovsl %r11d, %r10d
movl %ecx, %r11d
cmpl %esi, %r9d
jb 0xecfd
movl %esi, %r9d
movl %edi, %r11d
cmpl %r9d, %r10d
jb 0xed05
movl %r11d, %edx
addb (%r14,%rax), %dl
movb %dl, (%rbp,%rax)
incq %rax
movl %edx, %edi
movl %ecx, %edx
cmpq %rax, %r15
jne 0xeca8
movq %r15, %r10
movq %rbx, %rdi
jmp 0xfec5
movq %rsi, -0x68(%rsp)
testq %r8, %r8
je 0xee66
movb $0x1, %al
movl %eax, -0x78(%rsp)
testq %r15, %r15
movl -0x7c(%rsp), %eax
je 0xf1f9
movq %r12, 0x8(%rsp)
movq %r11, %r12
movq %rdx, %r11
xorl %edx, %edx
movb (%r8,%rdx), %sil
addb (%r14,%rdx), %sil
movb %sil, (%rbp,%rdx)
incq %rdx
cmpq %rdx, %r15
jne 0xed52
movq %r11, %rdx
movq %r12, %r11
movq 0x8(%rsp), %r12
jmp 0xf1f9
testq %r8, %r8
je 0xee9a
cmpl $0x8, -0x3c(%rsp)
movq %r9, -0x20(%rsp)
jae 0xef11
xorl %r9d, %r9d
jmp 0xef32
movq %rcx, %r15
cmpl $0x8, -0x3c(%rsp)
movq 0x20(%rsp), %r8
jb 0xedb9
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%rbp,%rax)
incq %rax
cmpq %rax, %rbx
jne 0xeda9
movb $0x1, %al
movl %eax, -0x78(%rsp)
cmpq %rbx, -0x18(%rsp)
je 0xef00
movq %rsi, -0x68(%rsp)
movq %rdi, -0x58(%rsp)
movq %r9, %rdi
movq %r12, %r9
movq %r11, %r12
movq %rdx, %r11
xorl %edx, %edx
movq 0x30(%rsp), %rax
movq 0x28(%rsp), %rcx
movb (%rbp,%rdx), %sil
addb (%rcx,%rdx), %sil
movb %sil, (%rax,%rdx)
incq %rdx
cmpq %rdx, %r8
jne 0xedec
movq %r11, %rdx
movq %r12, %r11
movq %r9, %r12
movq %rdi, %r9
movq -0x58(%rsp), %rdi
jmp 0xeefb
movl $0x0, -0x78(%rsp)
movl $0x24, %r8d
movq -0x18(%rsp), %r15
movl -0x7c(%rsp), %eax
jmp 0xf201
movq %rcx, %r8
cmpl $0x8, -0x3c(%rsp)
jb 0xee4f
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%rbp,%rax)
incq %rax
cmpq %rax, %rbx
jne 0xee3f
movb $0x1, %al
movl %eax, -0x78(%rsp)
cmpq %rbx, %r15
jne 0xf0b5
movq %r8, %rcx
jmp 0xef08
xorl %r8d, %r8d
movb $0x1, %al
movl %eax, -0x78(%rsp)
testq %r15, %r15
movl -0x7c(%rsp), %eax
je 0xf261
movq %rdx, %r8
xorl %edx, %edx
movb (%r14,%rdx), %sil
movb %sil, (%rbp,%rdx)
incq %rdx
cmpq %rdx, %r15
jne 0xee81
movq %r8, %rdx
jmp 0xf1f9
movq %rcx, %r15
cmpl $0x8, -0x3c(%rsp)
jb 0xeeb6
xorl %eax, %eax
movb (%r14,%rax), %cl
movb %cl, (%rbp,%rax)
incq %rax
cmpq %rax, %rbx
jne 0xeea6
movb $0x1, %al
movl %eax, -0x78(%rsp)
cmpq %rbx, -0x18(%rsp)
movq 0x20(%rsp), %r8
je 0xef00
movq %rsi, -0x68(%rsp)
movq %rdx, -0x38(%rsp)
xorl %edx, %edx
movq 0x30(%rsp), %rax
movq 0x28(%rsp), %rcx
movb (%rbp,%rdx), %sil
shrb %sil
addb (%rcx,%rdx), %sil
movb %sil, (%rax,%rdx)
incq %rdx
cmpq %rdx, %r8
jne 0xeede
movq -0x38(%rsp), %rdx
movq -0x68(%rsp), %rsi
movq %r15, %rcx
movq -0x18(%rsp), %r15
movl -0x7c(%rsp), %eax
jmp 0xf1fe
movq %rcx, %r10
xorl %eax, %eax
movb (%r8,%rax), %cl
shrb %cl
addb (%r14,%rax), %cl
movb %cl, (%rbp,%rax)
incq %rax
cmpq %rax, %rbx
jne 0xef16
movq %rbx, %r9
movq %r10, %rcx
cmpl $0x20, -0x3c(%rsp)
movq %rdx, -0x38(%rsp)
movq %r11, 0x10(%rsp)
movq %rsi, -0x68(%rsp)
jb 0xf00b
leaq 0x3(%r9), %rax
cmpq %r15, %rax
jae 0xf17f
movq %rcx, -0x28(%rsp)
movq %r12, 0x8(%rsp)
movq %rdi, -0x58(%rsp)
leaq (%rdi,%r9), %rax
leaq (%r8,%r9), %rcx
addq $0x3, %rcx
leaq (%rsi,%r9), %rdx
xorl %r10d, %r10d
movzbl (%rbp,%r10), %edi
movzbl 0x1(%rbp,%r10), %r11d
movzbl 0x2(%rbp,%r10), %ebx
movzbl 0x3(%rbp,%r10), %r12d
movzbl -0x3(%rcx,%r10), %esi
addl %edi, %esi
movzbl -0x2(%rcx,%r10), %edi
addl %r11d, %edi
movzbl -0x1(%rcx,%r10), %r11d
shrl %esi
addb -0x3(%rdx,%r10), %sil
addl %ebx, %r11d
shrl %edi
addb -0x2(%rdx,%r10), %dil
movzbl (%rcx,%r10), %ebx
shrl %r11d
addb -0x1(%rdx,%r10), %r11b
addl %r12d, %ebx
shrl %ebx
addb (%rdx,%r10), %bl
movb %sil, -0x3(%rax,%r10)
movb %dil, -0x2(%rax,%r10)
movb %r11b, -0x1(%rax,%r10)
movb %bl, (%rax,%r10)
leaq (%r9,%r10), %rsi
addq $0x7, %rsi
addq $0x4, %r10
cmpq %r15, %rsi
jb 0xef7b
addq %r10, %r9
movq (%rsp), %rbx
movq -0x38(%rsp), %rdx
movq 0x8(%rsp), %r12
jmp 0xf0ab
cmpl $0x3, %ebx
jne 0xf0fc
leaq 0x2(%r9), %rax
cmpq %r15, %rax
jae 0xf17f
movq %rcx, -0x28(%rsp)
movq %rdi, -0x58(%rsp)
leaq (%r12,%r9), %rax
leaq (%r8,%r9), %rcx
addq $0x2, %rcx
movq -0x20(%rsp), %rdx
addq %r9, %rdx
xorl %r10d, %r10d
movzbl (%rbp,%r10), %esi
movzbl 0x1(%rbp,%r10), %edi
movzbl 0x2(%rbp,%r10), %r11d
movzbl -0x2(%rcx,%r10), %ebx
addl %esi, %ebx
movzbl -0x1(%rcx,%r10), %esi
addl %edi, %esi
movzbl (%rcx,%r10), %edi
addl %r11d, %edi
shrl %ebx
addb -0x2(%rdx,%r10), %bl
shrl %esi
addb -0x1(%rdx,%r10), %sil
shrl %edi
addb (%rdx,%r10), %dil
movb %bl, -0x2(%rax,%r10)
movb %sil, -0x1(%rax,%r10)
movb %dil, (%rax,%r10)
leaq (%r9,%r10), %rsi
addq $0x5, %rsi
addq $0x3, %r10
cmpq %r15, %rsi
jb 0xf042
addq %r10, %r9
movq (%rsp), %rbx
movq -0x38(%rsp), %rdx
movq -0x58(%rsp), %rdi
jmp 0xf173
movq %rsi, -0x68(%rsp)
movq %r9, -0x20(%rsp)
movq %rdx, -0x38(%rsp)
leaq (%rbx,%rbp), %rdx
leaq (%r14,%rbx), %rsi
xorl %r9d, %r9d
movq %r8, %rcx
movl -0x7c(%rsp), %eax
movb (%rbp,%r9), %r8b
addb (%rsi,%r9), %r8b
movb %r8b, (%rdx,%r9)
incq %r9
cmpq %r9, 0x20(%rsp)
jne 0xf0d6
movq -0x38(%rsp), %rdx
movq -0x20(%rsp), %r9
jmp 0xf1f9
cmpl $0x10, -0x3c(%rsp)
jb 0xf17f
leaq 0x1(%r9), %rax
cmpq %r15, %rax
jae 0xf17f
movq %rcx, -0x28(%rsp)
leaq (%rdx,%r9), %rax
leaq (%r8,%r9), %rcx
incq %rcx
leaq (%r11,%r9), %rdx
xorl %r10d, %r10d
movzbl (%rbp,%r10), %esi
movzbl 0x1(%rbp,%r10), %ebx
movzbl -0x1(%rcx,%r10), %r11d
addl %esi, %r11d
movzbl (%rcx,%r10), %esi
addl %ebx, %esi
shrl %r11d
addb -0x1(%rdx,%r10), %r11b
shrl %esi
addb (%rdx,%r10), %sil
movb %r11b, -0x1(%rax,%r10)
movb %sil, (%rax,%r10)
leaq (%r9,%r10), %rsi
addq $0x3, %rsi
addq $0x2, %r10
cmpq %r15, %rsi
jb 0xf123
addq %r10, %r9
movq (%rsp), %rbx
movq -0x38(%rsp), %rdx
movq -0x68(%rsp), %rsi
movq -0x28(%rsp), %rcx
jmp 0xf182
xorl %r10d, %r10d
movb $0x1, %al
movl %eax, -0x78(%rsp)
cmpq %r15, %r9
movl -0x7c(%rsp), %eax
jne 0xf1a2
movq 0x18(%rsp), %r10
movq 0x10(%rsp), %r11
movq -0x20(%rsp), %r9
jmp 0xf1fe
movq %rdi, -0x58(%rsp)
movq 0x60(%rsp), %rdx
subq %r9, %rdx
leaq (%r9,%rbp), %rsi
addq %r9, %r8
addq %r14, %r9
addq %rbp, %r10
xorl %edi, %edi
movzbl (%r10,%rdi), %r11d
movzbl (%r8,%rdi), %ebx
addl %r11d, %ebx
shrl %ebx
addb (%r9,%rdi), %bl
movb %bl, (%rsi,%rdi)
incq %rdi
cmpq %rdi, %rdx
jne 0xf1be
movq (%rsp), %rbx
movq 0x18(%rsp), %r10
movq -0x38(%rsp), %rdx
movq 0x10(%rsp), %r11
movq -0x20(%rsp), %r9
movq -0x58(%rsp), %rdi
movq -0x68(%rsp), %rsi
xorl %r8d, %r8d
cmpb $0x0, -0x78(%rsp)
cmovel %r8d, %eax
je 0xffb8
movl %eax, -0x7c(%rsp)
movq %r15, %r8
imulq %rcx, %r8
addq 0x48(%rsp), %r8
incq %rcx
addq %r15, %rbp
addq %r10, %r14
addq %r15, %r13
addq %r15, %rdx
addq %r10, %r11
addq %r15, %r12
addq %r10, %r9
addq %r15, %rdi
addq %r10, %rsi
movq 0x30(%rsp), %rax
addq %r15, %rax
movq %rcx, %r15
movq 0x28(%rsp), %rcx
addq %r10, %rcx
cmpq 0x68(%rsp), %r15
jne 0xebd9
jmp 0xffb6
movq -0x68(%rsp), %rsi
jmp 0xf201
xorl %eax, %eax
movb (%r8,%rax), %cl
addb (%r14,%rax), %cl
movb %cl, (%rbp,%rax)
incq %rax
cmpq %rax, %rbx
jne 0xf26a
movq %rbx, %r10
jmp 0xfec5
cmpq $0x6, %r15
movl $0xff, %r13d
jb 0xfec2
movq %rdi, -0x58(%rsp)
movl $0x5, %r10d
xorl %eax, %eax
xorl %ebx, %ebx
xorl %esi, %esi
movl $0x0, -0x78(%rsp)
xorl %ecx, %ecx
xorl %r11d, %r11d
xorl %edx, %edx
movl $0x0, -0x6c(%rsp)
movl $0x0, -0x70(%rsp)
xorl %r9d, %r9d
xorl %edi, %edi
movl $0x0, -0x48(%rsp)
movl %r11d, -0xc(%rsp)
movl %ebx, -0x40(%rsp)
movl %eax, -0x4c(%rsp)
movzbl -0x5(%r8,%r10), %eax
movzbl %sil, %r12d
movl %eax, %r11d
subl %r12d, %r11d
movl %r11d, %esi
negl %esi
cmovsl %r11d, %esi
andl %r13d, %esi
movzbl %cl, %ecx
movl %ecx, %ebx
subl %r12d, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
andl %r13d, %r11d
movq %r12, -0x30(%rsp)
leal (%r12,%r12), %ebx
movl %ecx, %r12d
subl %ebx, %r12d
addl %eax, %r12d
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl %eax, -0x5c(%rsp)
movl %eax, %r12d
cmpl %esi, %r11d
jb 0xf33e
movl %esi, %r11d
movl %ecx, %r12d
cmpl %r11d, %ebx
jb 0xf34b
movl %r12d, %eax
movq %rax, -0x30(%rsp)
movzbl -0x4(%r8,%r10), %ebx
movzbl %dl, %r12d
movl %ebx, %edx
subl %r12d, %edx
movl %edx, %ecx
negl %ecx
cmovsl %edx, %ecx
andl %r13d, %ecx
movzbl -0x70(%rsp), %eax
movl %eax, %esi
subl %r12d, %esi
movl %esi, %edx
negl %edx
cmovsl %esi, %edx
andl %r13d, %edx
movl %eax, %r11d
subl %r12d, %r11d
subl %r12d, %r11d
addl %ebx, %r11d
movl %r11d, %esi
negl %esi
cmovsl %r11d, %esi
movl %ebx, -0x4(%rsp)
movl %ebx, %r11d
cmpl %ecx, %edx
jb 0xf39d
movl %ecx, %edx
movl %eax, %r11d
cmpl %edx, %esi
jb 0xf3a4
movl %r11d, %r12d
movzbl -0x3(%r8,%r10), %ebx
movzbl %dil, %edi
movl %ebx, %ecx
subl %edi, %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
andl %r13d, %eax
movzbl -0x48(%rsp), %ecx
movl %ecx, %esi
subl %edi, %esi
movl %esi, %edx
negl %edx
cmovsl %esi, %edx
andl %r13d, %edx
movl %ecx, %r11d
subl %edi, %r11d
subl %edi, %r11d
addl %ebx, %r11d
movl %r11d, %esi
negl %esi
cmovsl %r11d, %esi
movl %ebx, -0x8(%rsp)
movl %ebx, %r11d
cmpl %eax, %edx
jb 0xf3f4
movl %eax, %edx
movl %ecx, %r11d
movq %r12, -0x48(%rsp)
cmpl %edx, %esi
jb 0xf400
movl %r11d, %edi
movzbl -0x2(%r8,%r10), %r12d
movzbl %r9b, %edx
movl %r12d, %ecx
subl %edx, %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
andl %r13d, %eax
movzbl -0x6c(%rsp), %ecx
movl %ecx, %r9d
subl %edx, %r9d
movl %r9d, %esi
negl %esi
cmovsl %r9d, %esi
andl %r13d, %esi
movl %ecx, %r11d
subl %edx, %r11d
subl %edx, %r11d
addl %r12d, %r11d
movl %r11d, %r9d
negl %r9d
cmovsl %r11d, %r9d
movl %r12d, -0x10(%rsp)
cmpl %eax, %esi
jb 0xf454
movl %eax, %esi
movl %ecx, %r12d
cmpl %esi, %r9d
jb 0xf45c
movl %r12d, %edx
movzbl -0x1(%r8,%r10), %r11d
movzbl -0xc(%rsp), %esi
movl %r11d, %ecx
subl %esi, %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
andl %r13d, %eax
movzbl -0x78(%rsp), %ebx
movl %ebx, %r9d
subl %esi, %r9d
movl %r9d, %r12d
negl %r12d
cmovsl %r9d, %r12d
andl %r13d, %r12d
movl %ebx, %ecx
subl %esi, %ecx
subl %esi, %ecx
addl %r11d, %ecx
movl %ecx, %r13d
negl %r13d
cmovsl %ecx, %r13d
movl %r11d, %r9d
cmpl %eax, %r12d
jb 0xf4af
movl %eax, %r12d
movl %ebx, %r9d
cmpl %r12d, %r13d
jb 0xf4b7
movl %r9d, %esi
movq -0x30(%rsp), %rax
movl %eax, %ecx
addb -0x5(%r14,%r10), %cl
movq -0x48(%rsp), %rax
addb -0x4(%r14,%r10), %al
movl %eax, -0x70(%rsp)
movl %edi, %eax
addb -0x3(%r14,%r10), %al
movl %eax, -0x48(%rsp)
movl %edx, %eax
addb -0x2(%r14,%r10), %al
movl %eax, -0x6c(%rsp)
movl %esi, %eax
addb -0x1(%r14,%r10), %al
movl %eax, -0x78(%rsp)
movzbl (%r8,%r10), %edx
movzbl -0x40(%rsp), %edi
movl %edx, %r9d
subl %edi, %r9d
movl %r9d, %esi
negl %esi
cmovsl %r9d, %esi
movl $0xff, %ebx
andl %ebx, %esi
movzbl -0x4c(%rsp), %eax
movl %eax, %r9d
subl %edi, %r9d
movl %r9d, %r13d
negl %r13d
cmovsl %r9d, %r13d
andl %ebx, %r13d
movl %eax, %ebx
subl %edi, %ebx
subl %edi, %ebx
addl %edx, %ebx
movl %ebx, %r12d
negl %r12d
cmovsl %ebx, %r12d
movl %edx, %r9d
cmpl %esi, %r13d
jb 0xf54a
movl %esi, %r13d
movl %eax, %r9d
cmpl %r13d, %r12d
jb 0xf552
movl %r9d, %edi
addb (%r14,%r10), %dil
movb %cl, -0x5(%rbp,%r10)
movl -0x70(%rsp), %eax
movb %al, -0x4(%rbp,%r10)
movl -0x48(%rsp), %eax
movb %al, -0x3(%rbp,%r10)
movl -0x6c(%rsp), %eax
movb %al, -0x2(%rbp,%r10)
movl -0x78(%rsp), %eax
movb %al, -0x1(%rbp,%r10)
movb %dil, (%rbp,%r10)
addq $0x6, %r10
movl %edi, %eax
movl %edx, %ebx
movl -0x5c(%rsp), %esi
movl -0x4(%rsp), %edx
movl -0x10(%rsp), %r9d
movl -0x8(%rsp), %edi
cmpq %r15, %r10
movl $0xff, %r13d
jb 0xf2d3
addq $-0x5, %r10
jmp 0xfebb
cmpq $0x8, %r15
movl $0xff, %r13d
jb 0xfec2
movq %rdi, -0x58(%rsp)
movl $0x7, %r10d
xorl %esi, %esi
xorl %eax, %eax
xorl %edx, %edx
movl $0x0, -0x5c(%rsp)
xorl %edi, %edi
movl $0x0, -0x30(%rsp)
movl $0x0, -0x40(%rsp)
movl $0x0, -0x70(%rsp)
movl $0x0, -0x4c(%rsp)
movl $0x0, -0x48(%rsp)
xorl %r11d, %r11d
movl $0x0, -0x78(%rsp)
xorl %r12d, %r12d
movl $0x0, -0x6c(%rsp)
xorl %r9d, %r9d
xorl %ecx, %ecx
movl %r11d, 0x3c(%rsp)
movl %r12d, 0x44(%rsp)
movl %r9d, -0xc(%rsp)
movl %ecx, -0x8(%rsp)
movzbl -0x7(%r8,%r10), %r11d
movzbl %sil, %r9d
movl %r11d, %esi
subl %r9d, %esi
movl %esi, %ecx
negl %ecx
cmovsl %esi, %ecx
andl %r13d, %ecx
movzbl %al, %eax
movl %eax, %ebx
subl %r9d, %ebx
movl %ebx, %esi
negl %esi
cmovsl %ebx, %esi
andl %r13d, %esi
movl %eax, %r12d
subl %r9d, %r12d
subl %r9d, %r12d
addl %r11d, %r12d
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl %r11d, -0x4(%rsp)
cmpl %ecx, %esi
jb 0xf685
movl %ecx, %esi
movl %eax, %r11d
cmpl %esi, %ebx
jb 0xf68c
movl %r11d, %r9d
movzbl -0x6(%r8,%r10), %r11d
movzbl %dl, %r12d
movl %r11d, %ecx
subl %r12d, %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
andl %r13d, %eax
movzbl -0x5c(%rsp), %ecx
movl %ecx, %esi
subl %r12d, %esi
movl %esi, %edx
negl %edx
cmovsl %esi, %edx
andl %r13d, %edx
movl %ecx, %ebx
subl %r12d, %ebx
subl %r12d, %ebx
addl %r11d, %ebx
movl %ebx, %esi
negl %esi
cmovsl %ebx, %esi
movl %r11d, -0x10(%rsp)
movl %r11d, %ebx
cmpl %eax, %edx
jb 0xf6dc
movl %eax, %edx
movl %ecx, %ebx
cmpl %edx, %esi
jb 0xf6e3
movl %ebx, %r12d
movzbl -0x5(%r8,%r10), %r11d
movzbl %dil, %ecx
movl %r11d, %edx
subl %ecx, %edx
movl %edx, %eax
negl %eax
cmovsl %edx, %eax
andl %r13d, %eax
movzbl -0x30(%rsp), %edx
movl %edx, %edi
subl %ecx, %edi
movl %edi, %esi
negl %esi
cmovsl %edi, %esi
andl %r13d, %esi
movl %edx, %ebx
subl %ecx, %ebx
subl %ecx, %ebx
addl %r11d, %ebx
movl %ebx, %edi
negl %edi
cmovsl %ebx, %edi
movl %r11d, 0x40(%rsp)
movl %r11d, %ebx
cmpl %eax, %esi
jb 0xf72f
movl %eax, %esi
movl %edx, %ebx
movq %r9, -0x30(%rsp)
cmpl %esi, %edi
jb 0xf73a
movl %ebx, %ecx
movzbl -0x4(%r8,%r10), %r9d
movzbl -0x40(%rsp), %edi
movl %r9d, %edx
subl %edi, %edx
movl %edx, %eax
negl %eax
cmovsl %edx, %eax
andl %r13d, %eax
movzbl -0x70(%rsp), %edx
movl %edx, %r11d
subl %edi, %r11d
movl %r11d, %esi
negl %esi
cmovsl %r11d, %esi
andl %r13d, %esi
movl %edx, %ebx
subl %edi, %ebx
subl %edi, %ebx
addl %r9d, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
movl %r9d, -0x40(%rsp)
cmpl %eax, %esi
jb 0xf78c
movl %eax, %esi
movl %edx, %r9d
cmpl %esi, %r11d
jb 0xf794
movl %r9d, %edi
movzbl -0x3(%r8,%r10), %r9d
movzbl -0x4c(%rsp), %edx
movl %r9d, %esi
subl %edx, %esi
movl %esi, %eax
negl %eax
cmovsl %esi, %eax
andl %r13d, %eax
movzbl -0x48(%rsp), %esi
movl %esi, %ebx
subl %edx, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
andl %r13d, %r11d
movl %esi, %r13d
subl %edx, %r13d
subl %edx, %r13d
addl %r9d, %r13d
movl %r13d, %ebx
negl %ebx
cmovsl %r13d, %ebx
movl %r9d, -0x4c(%rsp)
movl %r9d, %r13d
cmpl %eax, %r11d
jb 0xf7ec
movl %eax, %r11d
movl %esi, %r13d
cmpl %r11d, %ebx
movq -0x30(%rsp), %rax
jb 0xf7f9
movl %r13d, %edx
addb -0x7(%r14,%r10), %al
movl %r12d, %esi
addb -0x6(%r14,%r10), %sil
movl %esi, -0x5c(%rsp)
addb -0x5(%r14,%r10), %cl
movl %ecx, -0x30(%rsp)
movl %edi, %ecx
addb -0x4(%r14,%r10), %cl
movl %ecx, -0x70(%rsp)
movzbl -0x2(%r8,%r10), %r9d
movl %edx, %ecx
addb -0x3(%r14,%r10), %cl
movl %ecx, -0x48(%rsp)
movzbl -0x1(%r8,%r10), %r12d
movzbl 0x3c(%rsp), %edx
movl %r9d, %ecx
subl %edx, %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
movl $0xff, %ebx
andl %ebx, %esi
movzbl -0x78(%rsp), %edi
movl %edi, %ecx
subl %edx, %ecx
movl %ecx, %r11d
negl %r11d
cmovsl %ecx, %r11d
movzbl (%r8,%r10), %ecx
andl %ebx, %r11d
movl %edi, %r13d
subl %edx, %r13d
subl %edx, %r13d
addl %r9d, %r13d
movl %r13d, %ebx
negl %ebx
cmovsl %r13d, %ebx
movl %r9d, %r13d
cmpl %esi, %r11d
jb 0xf88b
movl %esi, %r11d
movl %edi, %r13d
cmpl %r11d, %ebx
jb 0xf893
movl %r13d, %edx
addb -0x2(%r14,%r10), %dl
movl %edx, -0x78(%rsp)
movzbl 0x44(%rsp), %edx
movl %r12d, %edi
subl %edx, %edi
movl %edi, %esi
negl %esi
cmovsl %edi, %esi
movl $0xff, %r13d
andl %r13d, %esi
movzbl -0x6c(%rsp), %edi
movl %edi, %ebx
subl %edx, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
andl %r13d, %r11d
movl %edi, %r13d
subl %edx, %r13d
subl %edx, %r13d
addl %r12d, %r13d
movl %r13d, %ebx
negl %ebx
cmovsl %r13d, %ebx
movl %r12d, %r13d
cmpl %esi, %r11d
jb 0xf8ef
movl %esi, %r11d
movl %edi, %r13d
cmpl %r11d, %ebx
jb 0xf8f7
movl %r13d, %edx
addb -0x1(%r14,%r10), %dl
movl %edx, -0x6c(%rsp)
movzbl -0xc(%rsp), %ebx
movl %ecx, %esi
subl %ebx, %esi
movl %esi, %edx
negl %edx
cmovsl %esi, %edx
movl $0xff, %r13d
andl %r13d, %edx
movzbl -0x8(%rsp), %esi
movl %esi, %r11d
subl %ebx, %r11d
movl %r11d, %edi
negl %edi
cmovsl %r11d, %edi
andl %r13d, %edi
movl %esi, %r13d
subl %ebx, %r13d
subl %ebx, %r13d
addl %ecx, %r13d
movl %r13d, %r11d
negl %r11d
cmovsl %r13d, %r11d
movl %ecx, %r13d
cmpl %edx, %edi
jb 0xf952
movl %edx, %edi
movl %esi, %r13d
cmpl %edi, %r11d
jb 0xf95a
movl %r13d, %ebx
addb (%r14,%r10), %bl
movb %al, -0x7(%rbp,%r10)
movl -0x5c(%rsp), %edx
movb %dl, -0x6(%rbp,%r10)
movl -0x30(%rsp), %edx
movb %dl, -0x5(%rbp,%r10)
movl -0x70(%rsp), %edx
movb %dl, -0x4(%rbp,%r10)
movl -0x48(%rsp), %edx
movb %dl, -0x3(%rbp,%r10)
movl -0x78(%rsp), %edx
movb %dl, -0x2(%rbp,%r10)
movl -0x6c(%rsp), %edx
movb %dl, -0x1(%rbp,%r10)
movb %bl, (%rbp,%r10)
addq $0x8, %r10
movl -0x4(%rsp), %esi
movl -0x10(%rsp), %edx
movl 0x40(%rsp), %edi
movl -0x40(%rsp), %r11d
movl %r11d, -0x40(%rsp)
movl -0x4c(%rsp), %r11d
movl %r11d, -0x4c(%rsp)
movl %r9d, %r11d
movl %ecx, %r9d
movl %ebx, %ecx
cmpq %r15, %r10
movl $0xff, %r13d
jb 0xf623
addq $-0x7, %r10
jmp 0xfebb
cmpq $0x2, %r15
jb 0xfec2
movq %rdi, %r13
movl $0x1, %r10d
xorl %edx, %edx
xorl %edi, %edi
xorl %r9d, %r9d
xorl %ecx, %ecx
movzbl -0x1(%r8,%r10), %eax
movzbl %cl, %ecx
movl %eax, %r11d
subl %ecx, %r11d
movl %r11d, %esi
negl %esi
cmovsl %r11d, %esi
movl $0xff, %r12d
andl %r12d, %esi
movzbl %r9b, %r9d
movl %r9d, %ebx
subl %ecx, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
andl %r12d, %r11d
movl %r9d, %r12d
subl %ecx, %r12d
subl %ecx, %r12d
addl %eax, %r12d
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl %eax, %r12d
cmpl %esi, %r11d
jb 0xfa58
movl %esi, %r11d
movl %r9d, %r12d
cmpl %r11d, %ebx
jb 0xfa60
movl %r12d, %ecx
movzbl (%r8,%r10), %r9d
movzbl %dil, %esi
movl %r9d, %r11d
subl %esi, %r11d
movl %r11d, %edi
negl %edi
cmovsl %r11d, %edi
movl $0xff, %r12d
andl %r12d, %edi
movzbl %dl, %edx
movl %edx, %ebx
subl %esi, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
andl %r12d, %r11d
movl %edx, %r12d
subl %esi, %r12d
subl %esi, %r12d
addl %r9d, %r12d
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl %r9d, %r12d
cmpl %edi, %r11d
jb 0xfab8
movl %edi, %r11d
movl %edx, %r12d
cmpl %r11d, %ebx
jb 0xfac0
movl %r12d, %esi
addb -0x1(%r14,%r10), %cl
addb (%r14,%r10), %sil
movb %cl, -0x1(%rbp,%r10)
movb %sil, (%rbp,%r10)
addq $0x2, %r10
movl %esi, %edx
movl %r9d, %edi
movl %ecx, %r9d
movl %eax, %ecx
cmpq %r15, %r10
jb 0xf9fe
decq %r10
movq %r13, %rdi
jmp 0xfec5
cmpq $0x3, %r15
movl $0xff, %r13d
jb 0xfec2
xorl %eax, %eax
xorl %r11d, %r11d
movq $0x0, -0x78(%rsp)
xorl %edx, %edx
xorl %r12d, %r12d
xorl %ebx, %ebx
xorl %esi, %esi
movq %rdi, -0x58(%rsp)
movq %r11, -0x48(%rsp)
movzbl (%r8,%rax), %r11d
movzbl %sil, %r9d
movl %r11d, %ecx
subl %r9d, %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
andl %r13d, %esi
movzbl %bl, %edi
movl %edi, %ecx
subl %r9d, %ecx
movl %ecx, %ebx
negl %ebx
cmovsl %ecx, %ebx
andl %r13d, %ebx
movl %edi, %r10d
subl %r9d, %r10d
subl %r9d, %r10d
addl %r11d, %r10d
movl %r10d, %r13d
negl %r13d
cmovsl %r10d, %r13d
movl %r11d, -0x6c(%rsp)
cmpl %esi, %ebx
jb 0xfb75
movl %esi, %ebx
movl %edi, %r11d
cmpl %ebx, %r13d
jb 0xfb7d
movl %r11d, %r9d
movzbl 0x1(%r8,%rax), %r11d
movzbl %r12b, %r12d
movl %r11d, %ecx
subl %r12d, %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
movl $0xff, %edi
andl %edi, %esi
movzbl %dl, %edx
movl %edx, %ecx
subl %r12d, %ecx
movl %ecx, %r10d
negl %r10d
cmovsl %ecx, %r10d
andl %edi, %r10d
movl %edx, %edi
subl %r12d, %edi
subl %r12d, %edi
addl %r11d, %edi
movl %edi, %r13d
negl %r13d
cmovsl %edi, %r13d
movl %r11d, -0x70(%rsp)
movl %r11d, %ecx
cmpl %esi, %r10d
jb 0xfbd7
movl %esi, %r10d
movl %edx, %ecx
cmpl %r10d, %r13d
jb 0xfbdf
movl %ecx, %r12d
movzbl 0x2(%r8,%rax), %edx
movzbl -0x78(%rsp), %r11d
movl %edx, %ecx
subl %r11d, %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
movl $0xff, %edi
andl %edi, %esi
movzbl -0x48(%rsp), %ebx
movl %ebx, %ecx
subl %r11d, %ecx
movl %ecx, %r10d
negl %r10d
cmovsl %ecx, %r10d
andl %edi, %r10d
movl %ebx, %edi
subl %r11d, %edi
subl %r11d, %edi
addl %edx, %edi
movl %edi, %r13d
negl %r13d
cmovsl %edi, %r13d
movl %edx, %ecx
cmpl %esi, %r10d
jb 0xfc35
movl %esi, %r10d
movl %ebx, %ecx
cmpl %r10d, %r13d
movq -0x58(%rsp), %rdi
jb 0xfc42
movl %ecx, %r11d
addb (%r14,%rax), %r9b
addb 0x1(%r14,%rax), %r12b
addb 0x2(%r14,%rax), %r11b
movb %r9b, (%rbp,%rax)
movb %r12b, 0x1(%rbp,%rax)
movb %r11b, 0x2(%rbp,%rax)
leaq 0x3(%rax), %r10
addq $0x5, %rax
movl %edx, %ecx
movq %rcx, -0x78(%rsp)
movl %r12d, %edx
movl -0x70(%rsp), %ecx
movl %ecx, %r12d
movl %r9d, %ebx
movl -0x6c(%rsp), %ecx
movl %ecx, %esi
cmpq %r15, %rax
movq %r10, %rax
movl $0xff, %r13d
jb 0xfb21
jmp 0xfec5
cmpq $0x4, %r15
movl $0xff, %ebx
jb 0xfec2
movq %rdi, -0x58(%rsp)
movl $0x3, %r10d
xorl %esi, %esi
xorl %r13d, %r13d
xorl %edi, %edi
xorl %r9d, %r9d
xorl %edx, %edx
xorl %r12d, %r12d
xorl %r11d, %r11d
xorl %eax, %eax
movl %r9d, -0x4c(%rsp)
movl %edi, -0x5c(%rsp)
movl %r13d, -0x30(%rsp)
movl %esi, -0x48(%rsp)
movzbl -0x3(%r8,%r10), %edi
movzbl %al, %r9d
movl %edi, %eax
subl %r9d, %eax
movl %eax, %esi
negl %esi
cmovsl %eax, %esi
andl %ebx, %esi
movzbl %r11b, %r11d
movl %r11d, %eax
subl %r9d, %eax
movl $0xff, %ebx
movl %eax, %r13d
negl %r13d
cmovsl %eax, %r13d
andl %ebx, %r13d
movq %r9, -0x78(%rsp)
movl %r11d, %ebx
subl %r9d, %ebx
subl %r9d, %ebx
addl %edi, %ebx
movl %ebx, %eax
negl %eax
cmovsl %ebx, %eax
movl %edi, -0x6c(%rsp)
cmpl %esi, %r13d
jb 0xfd32
movl %esi, %r13d
movl %r11d, %edi
cmpl %r13d, %eax
jb 0xfd3e
movl %edi, %eax
movq %rax, -0x78(%rsp)
movzbl -0x2(%r8,%r10), %edi
movzbl %r12b, %r12d
movl %edi, %eax
subl %r12d, %eax
movl %eax, %esi
negl %esi
cmovsl %eax, %esi
movl $0xff, %r11d
andl %r11d, %esi
movzbl %dl, %edx
movl %edx, %eax
subl %r12d, %eax
movl %eax, %r13d
negl %r13d
cmovsl %eax, %r13d
andl %r11d, %r13d
movl %edx, %r11d
subl %r12d, %r11d
subl %r12d, %r11d
addl %edi, %r11d
movl %r11d, %eax
negl %eax
cmovsl %r11d, %eax
movl %edi, -0x70(%rsp)
movl %edi, %r11d
cmpl %esi, %r13d
movl -0x4c(%rsp), %edi
jb 0xfd9d
movl %esi, %r13d
movl %edx, %r11d
cmpl %r13d, %eax
movl -0x5c(%rsp), %esi
jb 0xfda9
movl %r11d, %r12d
movzbl -0x1(%r8,%r10), %ebx
movzbl %dil, %r9d
movl %ebx, %eax
subl %r9d, %eax
movl %eax, %edx
negl %edx
cmovsl %eax, %edx
movl $0xff, %r11d
andl %r11d, %edx
movzbl %sil, %esi
movl %esi, %eax
subl %r9d, %eax
movl %eax, %edi
negl %edi
cmovsl %eax, %edi
andl %r11d, %edi
movl %esi, %r11d
subl %r9d, %r11d
subl %r9d, %r11d
addl %ebx, %r11d
movl %r11d, %eax
negl %eax
cmovsl %r11d, %eax
movl %ebx, -0x5c(%rsp)
movl %ebx, %r11d
cmpl %edx, %edi
jb 0xfe00
movl %edx, %edi
movl %esi, %r11d
cmpl %edi, %eax
jb 0xfe07
movl %r11d, %r9d
movzbl (%r8,%r10), %r13d
movzbl -0x30(%rsp), %edi
movl %r13d, %edx
subl %edi, %edx
movl %edx, %eax
negl %eax
cmovsl %edx, %eax
movl $0xff, %r11d
andl %r11d, %eax
movzbl -0x48(%rsp), %ecx
movl %ecx, %edx
subl %edi, %edx
movl %edx, %esi
negl %esi
cmovsl %edx, %esi
andl %r11d, %esi
movl %ecx, %ebx
subl %edi, %ebx
subl %edi, %ebx
addl %r13d, %ebx
movl %ebx, %r11d
negl %r11d
cmovsl %ebx, %r11d
movl %r13d, %edx
cmpl %eax, %esi
jb 0xfe57
movl %eax, %esi
movl %ecx, %edx
cmpl %esi, %r11d
jb 0xfe5e
movl %edx, %edi
movq -0x78(%rsp), %rax
addb -0x3(%r14,%r10), %al
addb -0x2(%r14,%r10), %r12b
addb -0x1(%r14,%r10), %r9b
addb (%r14,%r10), %dil
movb %al, -0x3(%rbp,%r10)
movb %r12b, -0x2(%rbp,%r10)
movb %r9b, -0x1(%rbp,%r10)
movb %dil, (%rbp,%r10)
addq $0x4, %r10
movl %edi, %esi
movl %r9d, %edi
movl -0x5c(%rsp), %ecx
movl %ecx, %r9d
movl %r12d, %edx
movl -0x70(%rsp), %r12d
movl %eax, %r11d
movl -0x6c(%rsp), %eax
cmpq %r15, %r10
movl $0xff, %ebx
jb 0xfcc6
addq $-0x3, %r10
movq -0x58(%rsp), %rdi
jmp 0xfec5
xorl %r10d, %r10d
movb $0x1, %al
movl %eax, -0x78(%rsp)
cmpq %r15, %r10
movq 0x50(%rsp), %r13
jne 0xff01
movq (%rsp), %rbx
movq 0x18(%rsp), %r10
movq -0x38(%rsp), %rdx
movq 0x10(%rsp), %r11
movq 0x8(%rsp), %r12
movq -0x20(%rsp), %r9
movq -0x68(%rsp), %rsi
movq -0x28(%rsp), %rcx
jmp 0xef08
movq %rdi, -0x58(%rsp)
movq 0x58(%rsp), %rdx
addq %r8, %rdx
movq -0x28(%rsp), %rcx
movl $0xff, %eax
movzbl (%r8,%r10), %edi
movzbl (%rdx,%r10), %esi
movl %edi, %r9d
subl %esi, %r9d
movl %r9d, %r11d
negl %r11d
cmovsl %r9d, %r11d
movzbl (%r13,%r10), %r9d
andl %eax, %r11d
movl %r9d, %ebx
subl %esi, %ebx
movl %ebx, %r12d
negl %r12d
cmovsl %ebx, %r12d
andl %eax, %r12d
leal (%rdi,%r9), %ebx
subl %esi, %ebx
subl %esi, %ebx
movl %ebx, %r13d
negl %r13d
cmovsl %ebx, %r13d
cmpl %r11d, %r12d
cmovael %r11d, %r12d
cmovbl %edi, %r9d
cmpl %r12d, %r13d
movq 0x50(%rsp), %r13
cmovbl %esi, %r9d
addb (%r14,%r10), %r9b
movb %r9b, (%rbp,%r10)
incq %r10
cmpq %r10, %r15
jne 0xff18
movq (%rsp), %rbx
movq 0x18(%rsp), %r10
movq -0x38(%rsp), %rdx
movq 0x10(%rsp), %r11
movq 0x8(%rsp), %r12
movq -0x20(%rsp), %r9
movq -0x58(%rsp), %rdi
movq -0x68(%rsp), %rsi
jmp 0xef08
xorl %eax, %eax
retq
xorl %eax, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq