// File: lvandeve[P]lodepng/lodepng.cpp
// Function: unfilterScanline(unsigned char*, unsigned char const*, unsigned char const*, unsigned long, unsigned char, unsigned long)
static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon,
                                 size_t bytewidth, unsigned char filterType, size_t length) {
  /*
  For PNG filter method 0
  unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte,
  the filter works byte per byte (bytewidth = 1)
  precon is the previous unfiltered scanline, recon the result, scanline the current one
  the incoming scanlines do NOT include the filtertype byte, that one is given in the parameter filterType instead
  recon and scanline MAY be the same memory address! precon must be disjoint.
  */

  size_t i;
  switch(filterType) {
    case 0:
      for(i = 0; i != length; ++i) recon[i] = scanline[i];
      break;
    case 1: {
      size_t j = 0;
      for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];
      for(i = bytewidth; i != length; ++i, ++j) recon[i] = scanline[i] + recon[j];
      break;
    }
    case 2:
      if(precon) {
        for(i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i];
      } else {
        for(i = 0; i != length; ++i) recon[i] = scanline[i];
      }
      break;
    case 3:
      if(precon) {
        size_t j = 0;
        for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1u);
        /* Unroll independent paths of this predictor. A 6x and 8x version is also possible but that adds
        too much code. Whether this speeds up anything depends on compiler and settings. */
        if(bytewidth >= 4) {
          for(; i + 3 < length; i += 4, j += 4) {
            unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2], s3 = scanline[i + 3];
            unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2], r3 = recon[j + 3];
            unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2], p3 = precon[i + 3];
            recon[i + 0] = s0 + ((r0 + p0) >> 1u);
            recon[i + 1] = s1 + ((r1 + p1) >> 1u);
            recon[i + 2] = s2 + ((r2 + p2) >> 1u);
            recon[i + 3] = s3 + ((r3 + p3) >> 1u);
          }
        } else if(bytewidth >= 3) {
          for(; i + 2 < length; i += 3, j += 3) {
            unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2];
            unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2];
            unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2];
            recon[i + 0] = s0 + ((r0 + p0) >> 1u);
            recon[i + 1] = s1 + ((r1 + p1) >> 1u);
            recon[i + 2] = s2 + ((r2 + p2) >> 1u);
          }
        } else if(bytewidth >= 2) {
          for(; i + 1 < length; i += 2, j += 2) {
            unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1];
            unsigned char r0 = recon[j + 0], r1 = recon[j + 1];
            unsigned char p0 = precon[i + 0], p1 = precon[i + 1];
            recon[i + 0] = s0 + ((r0 + p0) >> 1u);
            recon[i + 1] = s1 + ((r1 + p1) >> 1u);
          }
        }
        for(; i != length; ++i, ++j) recon[i] = scanline[i] + ((recon[j] + precon[i]) >> 1u);
      } else {
        size_t j = 0;
        for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];
        for(i = bytewidth; i != length; ++i, ++j) recon[i] = scanline[i] + (recon[j] >> 1u);
      }
      break;
    case 4:
      if(precon) {
        /* Unroll independent paths of this predictor. Whether this speeds up
        anything depends on compiler and settings. */
        if(bytewidth == 8) {
          unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0;
          unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0;
          unsigned char a4, b4 = 0, c4, d4 = 0, a5, b5 = 0, c5, d5 = 0;
          unsigned char a6, b6 = 0, c6, d6 = 0, a7, b7 = 0, c7, d7 = 0;
          for(i = 0; i + 7 < length; i += 8) {
            c0 = b0; c1 = b1; c2 = b2; c3 = b3;
            c4 = b4; c5 = b5; c6 = b6; c7 = b7;
            b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; b3 = precon[i + 3];
            b4 = precon[i + 4]; b5 = precon[i + 5]; b6 = precon[i + 6]; b7 = precon[i + 7];
            a0 = d0; a1 = d1; a2 = d2; a3 = d3;
            a4 = d4; a5 = d5; a6 = d6; a7 = d7;
            d0 = scanline[i + 0] + paethPredictor(a0, b0, c0);
            d1 = scanline[i + 1] + paethPredictor(a1, b1, c1);
            d2 = scanline[i + 2] + paethPredictor(a2, b2, c2);
            d3 = scanline[i + 3] + paethPredictor(a3, b3, c3);
            d4 = scanline[i + 4] + paethPredictor(a4, b4, c4);
            d5 = scanline[i + 5] + paethPredictor(a5, b5, c5);
            d6 = scanline[i + 6] + paethPredictor(a6, b6, c6);
            d7 = scanline[i + 7] + paethPredictor(a7, b7, c7);
            recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; recon[i + 3] = d3;
            recon[i + 4] = d4; recon[i + 5] = d5; recon[i + 6] = d6; recon[i + 7] = d7;
          }
        } else if(bytewidth == 6) {
          unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0;
          unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0;
          unsigned char a4, b4 = 0, c4, d4 = 0, a5, b5 = 0, c5, d5 = 0;
          for(i = 0; i + 5 < length; i += 6) {
            c0 = b0; c1 = b1; c2 = b2;
            c3 = b3; c4 = b4; c5 = b5;
            b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2];
            b3 = precon[i + 3]; b4 = precon[i + 4]; b5 = precon[i + 5];
            a0 = d0; a1 = d1; a2 = d2;
            a3 = d3; a4 = d4; a5 = d5;
            d0 = scanline[i + 0] + paethPredictor(a0, b0, c0);
            d1 = scanline[i + 1] + paethPredictor(a1, b1, c1);
            d2 = scanline[i + 2] + paethPredictor(a2, b2, c2);
            d3 = scanline[i + 3] + paethPredictor(a3, b3, c3);
            d4 = scanline[i + 4] + paethPredictor(a4, b4, c4);
            d5 = scanline[i + 5] + paethPredictor(a5, b5, c5);
            recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2;
            recon[i + 3] = d3; recon[i + 4] = d4; recon[i + 5] = d5;
          }
        } else if(bytewidth == 4) {
          unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0;
          unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0;
          for(i = 0; i + 3 < length; i += 4) {
            c0 = b0; c1 = b1; c2 = b2; c3 = b3;
            b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; b3 = precon[i + 3];
            a0 = d0; a1 = d1; a2 = d2; a3 = d3;
            d0 = scanline[i + 0] + paethPredictor(a0, b0, c0);
            d1 = scanline[i + 1] + paethPredictor(a1, b1, c1);
            d2 = scanline[i + 2] + paethPredictor(a2, b2, c2);
            d3 = scanline[i + 3] + paethPredictor(a3, b3, c3);
            recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; recon[i + 3] = d3;
          }
        } else if(bytewidth == 3) {
          unsigned char a0, b0 = 0, c0, d0 = 0;
          unsigned char a1, b1 = 0, c1, d1 = 0;
          unsigned char a2, b2 = 0, c2, d2 = 0;
          for(i = 0; i + 2 < length; i += 3) {
            c0 = b0; c1 = b1; c2 = b2;
            b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2];
            a0 = d0; a1 = d1; a2 = d2;
            d0 = scanline[i + 0] + paethPredictor(a0, b0, c0);
            d1 = scanline[i + 1] + paethPredictor(a1, b1, c1);
            d2 = scanline[i + 2] + paethPredictor(a2, b2, c2);
            recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2;
          }
        } else if(bytewidth == 2) {
          unsigned char a0, b0 = 0, c0, d0 = 0;
          unsigned char a1, b1 = 0, c1, d1 = 0;
          for(i = 0; i + 1 < length; i += 2) {
            c0 = b0; c1 = b1;
            b0 = precon[i + 0];
            b1 = precon[i + 1];
            a0 = d0; a1 = d1;
            d0 = scanline[i + 0] + paethPredictor(a0, b0, c0);
            d1 = scanline[i + 1] + paethPredictor(a1, b1, c1);
            recon[i + 0] = d0;
            recon[i + 1] = d1;
          }
        } else if(bytewidth == 1) {
          unsigned char a, b = 0, c, d = 0;
          for(i = 0; i != length; ++i) {
            c = b;
            b = precon[i];
            a = d;
            d = scanline[i] + paethPredictor(a, b, c);
            recon[i] = d;
          }
        } else {
          /* Normally not a possible case, but this would handle it correctly */
          for(i = 0; i != bytewidth; ++i) {
            recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/
          }
        }
        /* finish any remaining bytes */
        for(; i != length; ++i) {
          recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth]));
        }
      } else {
        size_t j = 0;
        for(i = 0; i != bytewidth; ++i) {
          recon[i] = scanline[i];
        }
        for(i = bytewidth; i != length; ++i, ++j) {
          /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/
          recon[i] = (scanline[i] + recon[j]);
        }
      }
      break;
    default: return 36; /*error: invalid filter type given*/
  }
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movb %r8b, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movb %al, -0x29(%rbp)
movq %r9, -0x38(%rbp)
movzbl -0x29(%rbp), %eax
movq %rax, -0xe8(%rbp)
subq $0x4, %rax
ja 0x18d46
movq -0xe8(%rbp), %rax
leaq 0x97ab4(%rip), %rcx     # 0xaf1fc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x17787
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x17759
jmp 0x18d4f
movq $0x0, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x177ca
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1779c
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x1781d
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x48(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x177d2
jmp 0x18d4f
cmpq $0x0, -0x20(%rbp)
je 0x17872
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x17870
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x20(%rbp), %rcx
movq -0x40(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x17831
jmp 0x178aa
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x178a8
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1787a
jmp 0x178aa
jmp 0x18d4f
cmpq $0x0, -0x20(%rbp)
je 0x17cda
movq $0x0, -0x50(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x1790b
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x20(%rbp), %rcx
movq -0x40(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x178ca
cmpq $0x4, -0x28(%rbp)
jb 0x17a7c
jmp 0x17918
movq -0x40(%rbp), %rax
addq $0x3, %rax
cmpq -0x38(%rbp), %rax
jae 0x17a77
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x51(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x52(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x53(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x54(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x55(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x56(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x57(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x58(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x59(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x5a(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x5b(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x5c(%rbp)
movzbl -0x51(%rbp), %eax
movzbl -0x55(%rbp), %ecx
movzbl -0x59(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movzbl -0x52(%rbp), %eax
movzbl -0x56(%rbp), %ecx
movzbl -0x5a(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movzbl -0x53(%rbp), %eax
movzbl -0x57(%rbp), %ecx
movzbl -0x5b(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movzbl -0x54(%rbp), %eax
movzbl -0x58(%rbp), %ecx
movzbl -0x5c(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x3(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x40(%rbp)
movq -0x50(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x50(%rbp)
jmp 0x17918
jmp 0x17c78
cmpq $0x3, -0x28(%rbp)
jb 0x17ba0
jmp 0x17a89
movq -0x40(%rbp), %rax
addq $0x2, %rax
cmpq -0x38(%rbp), %rax
jae 0x17b9b
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x5d(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x5e(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x5f(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x60(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x61(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x62(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x63(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x64(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x65(%rbp)
movzbl -0x5d(%rbp), %eax
movzbl -0x60(%rbp), %ecx
movzbl -0x63(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movzbl -0x5e(%rbp), %eax
movzbl -0x61(%rbp), %ecx
movzbl -0x64(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movzbl -0x5f(%rbp), %eax
movzbl -0x62(%rbp), %ecx
movzbl -0x65(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x40(%rbp)
movq -0x50(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x50(%rbp)
jmp 0x17a89
jmp 0x17c76
cmpq $0x2, -0x28(%rbp)
jb 0x17c74
jmp 0x17bad
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq -0x38(%rbp), %rax
jae 0x17c72
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x66(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x67(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq -0x50(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x69(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x6a(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x6b(%rbp)
movzbl -0x66(%rbp), %eax
movzbl -0x68(%rbp), %ecx
movzbl -0x6a(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movzbl -0x67(%rbp), %eax
movzbl -0x69(%rbp), %ecx
movzbl -0x6b(%rbp), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x40(%rbp)
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
jmp 0x17bad
jmp 0x17c74
jmp 0x17c76
jmp 0x17c78
jmp 0x17c7a
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x17cd5
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movq -0x20(%rbp), %rdx
movq -0x40(%rbp), %rsi
movzbl (%rdx,%rsi), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x17c7a
jmp 0x17d6f
movq $0x0, -0x78(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x17d18
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x17cea
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x17d6d
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x78(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x17d20
jmp 0x17d6f
jmp 0x18d4f
cmpq $0x0, -0x20(%rbp)
je 0x18ca5
cmpq $0x8, -0x28(%rbp)
jne 0x181df
movb $0x0, -0x7a(%rbp)
movb $0x0, -0x7c(%rbp)
movb $0x0, -0x7e(%rbp)
movb $0x0, -0x80(%rbp)
movb $0x0, -0x82(%rbp)
movb $0x0, -0x84(%rbp)
movb $0x0, -0x86(%rbp)
movb $0x0, -0x88(%rbp)
movb $0x0, -0x8a(%rbp)
movb $0x0, -0x8c(%rbp)
movb $0x0, -0x8e(%rbp)
movb $0x0, -0x90(%rbp)
movb $0x0, -0x92(%rbp)
movb $0x0, -0x94(%rbp)
movb $0x0, -0x96(%rbp)
movb $0x0, -0x98(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x7, %rax
cmpq -0x38(%rbp), %rax
jae 0x181da
movb -0x7a(%rbp), %al
movb %al, -0x7b(%rbp)
movb -0x7e(%rbp), %al
movb %al, -0x7f(%rbp)
movb -0x82(%rbp), %al
movb %al, -0x83(%rbp)
movb -0x86(%rbp), %al
movb %al, -0x87(%rbp)
movb -0x8a(%rbp), %al
movb %al, -0x8b(%rbp)
movb -0x8e(%rbp), %al
movb %al, -0x8f(%rbp)
movb -0x92(%rbp), %al
movb %al, -0x93(%rbp)
movb -0x96(%rbp), %al
movb %al, -0x97(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x7a(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x7e(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x82(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x86(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x4(%rax,%rcx), %al
movb %al, -0x8a(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x5(%rax,%rcx), %al
movb %al, -0x8e(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x6(%rax,%rcx), %al
movb %al, -0x92(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x7(%rax,%rcx), %al
movb %al, -0x96(%rbp)
movb -0x7c(%rbp), %al
movb %al, -0x79(%rbp)
movb -0x80(%rbp), %al
movb %al, -0x7d(%rbp)
movb -0x84(%rbp), %al
movb %al, -0x81(%rbp)
movb -0x88(%rbp), %al
movb %al, -0x85(%rbp)
movb -0x8c(%rbp), %al
movb %al, -0x89(%rbp)
movb -0x90(%rbp), %al
movb %al, -0x8d(%rbp)
movb -0x94(%rbp), %al
movb %al, -0x91(%rbp)
movb -0x98(%rbp), %al
movb %al, -0x95(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x108(%rbp)
movb -0x79(%rbp), %cl
movb -0x7a(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x7b(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x108(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x7c(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %eax
movl %eax, -0x104(%rbp)
movb -0x7d(%rbp), %cl
movb -0x7e(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x7f(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x104(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x80(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %eax
movl %eax, -0x100(%rbp)
movb -0x81(%rbp), %cl
movb -0x82(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x83(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x100(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x84(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x3(%rax,%rcx), %eax
movl %eax, -0xfc(%rbp)
movb -0x85(%rbp), %cl
movb -0x86(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x87(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0xfc(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x88(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x4(%rax,%rcx), %eax
movl %eax, -0xf8(%rbp)
movb -0x89(%rbp), %cl
movb -0x8a(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x8b(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0xf8(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x8c(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x5(%rax,%rcx), %eax
movl %eax, -0xf4(%rbp)
movb -0x8d(%rbp), %cl
movb -0x8e(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x8f(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0xf4(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x90(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x6(%rax,%rcx), %eax
movl %eax, -0xf0(%rbp)
movb -0x91(%rbp), %cl
movb -0x92(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x93(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0xf0(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x94(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x7(%rax,%rcx), %eax
movl %eax, -0xec(%rbp)
movb -0x95(%rbp), %cl
movb -0x96(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x97(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0xec(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x98(%rbp)
movb -0x7c(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0x80(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movb -0x84(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movb -0x88(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x3(%rax,%rcx)
movb -0x8c(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x4(%rax,%rcx)
movb -0x90(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x5(%rax,%rcx)
movb -0x94(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x6(%rax,%rcx)
movb -0x98(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x7(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x40(%rbp)
jmp 0x17df6
jmp 0x18c23
cmpq $0x6, -0x28(%rbp)
jne 0x1856b
movb $0x0, -0x9a(%rbp)
movb $0x0, -0x9c(%rbp)
movb $0x0, -0x9e(%rbp)
movb $0x0, -0xa0(%rbp)
movb $0x0, -0xa2(%rbp)
movb $0x0, -0xa4(%rbp)
movb $0x0, -0xa6(%rbp)
movb $0x0, -0xa8(%rbp)
movb $0x0, -0xaa(%rbp)
movb $0x0, -0xac(%rbp)
movb $0x0, -0xae(%rbp)
movb $0x0, -0xb0(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x5, %rax
cmpq -0x38(%rbp), %rax
jae 0x18566
movb -0x9a(%rbp), %al
movb %al, -0x9b(%rbp)
movb -0x9e(%rbp), %al
movb %al, -0x9f(%rbp)
movb -0xa2(%rbp), %al
movb %al, -0xa3(%rbp)
movb -0xa6(%rbp), %al
movb %al, -0xa7(%rbp)
movb -0xaa(%rbp), %al
movb %al, -0xab(%rbp)
movb -0xae(%rbp), %al
movb %al, -0xaf(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x9a(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x9e(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0xa2(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0xa6(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x4(%rax,%rcx), %al
movb %al, -0xaa(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x5(%rax,%rcx), %al
movb %al, -0xae(%rbp)
movb -0x9c(%rbp), %al
movb %al, -0x99(%rbp)
movb -0xa0(%rbp), %al
movb %al, -0x9d(%rbp)
movb -0xa4(%rbp), %al
movb %al, -0xa1(%rbp)
movb -0xa8(%rbp), %al
movb %al, -0xa5(%rbp)
movb -0xac(%rbp), %al
movb %al, -0xa9(%rbp)
movb -0xb0(%rbp), %al
movb %al, -0xad(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x120(%rbp)
movb -0x99(%rbp), %cl
movb -0x9a(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x9b(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x120(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0x9c(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %eax
movl %eax, -0x11c(%rbp)
movb -0x9d(%rbp), %cl
movb -0x9e(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x9f(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x11c(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xa0(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %eax
movl %eax, -0x118(%rbp)
movb -0xa1(%rbp), %cl
movb -0xa2(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xa3(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x118(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xa4(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x3(%rax,%rcx), %eax
movl %eax, -0x114(%rbp)
movb -0xa5(%rbp), %cl
movb -0xa6(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xa7(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x114(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xa8(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x4(%rax,%rcx), %eax
movl %eax, -0x110(%rbp)
movb -0xa9(%rbp), %cl
movb -0xaa(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xab(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x110(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xac(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x5(%rax,%rcx), %eax
movl %eax, -0x10c(%rbp)
movb -0xad(%rbp), %cl
movb -0xae(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xaf(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x10c(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xb0(%rbp)
movb -0x9c(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0xa0(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movb -0xa4(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movb -0xa8(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x3(%rax,%rcx)
movb -0xac(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x4(%rax,%rcx)
movb -0xb0(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x5(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x6, %rax
movq %rax, -0x40(%rbp)
jmp 0x18246
jmp 0x18c21
cmpq $0x4, -0x28(%rbp)
jne 0x187db
movb $0x0, -0xb2(%rbp)
movb $0x0, -0xb4(%rbp)
movb $0x0, -0xb6(%rbp)
movb $0x0, -0xb8(%rbp)
movb $0x0, -0xba(%rbp)
movb $0x0, -0xbc(%rbp)
movb $0x0, -0xbe(%rbp)
movb $0x0, -0xc0(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x3, %rax
cmpq -0x38(%rbp), %rax
jae 0x187d6
movb -0xb2(%rbp), %al
movb %al, -0xb3(%rbp)
movb -0xb6(%rbp), %al
movb %al, -0xb7(%rbp)
movb -0xba(%rbp), %al
movb %al, -0xbb(%rbp)
movb -0xbe(%rbp), %al
movb %al, -0xbf(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xb2(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0xb6(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0xba(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0xbe(%rbp)
movb -0xb4(%rbp), %al
movb %al, -0xb1(%rbp)
movb -0xb8(%rbp), %al
movb %al, -0xb5(%rbp)
movb -0xbc(%rbp), %al
movb %al, -0xb9(%rbp)
movb -0xc0(%rbp), %al
movb %al, -0xbd(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x130(%rbp)
movb -0xb1(%rbp), %cl
movb -0xb2(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xb3(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x130(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xb4(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %eax
movl %eax, -0x12c(%rbp)
movb -0xb5(%rbp), %cl
movb -0xb6(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xb7(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x12c(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xb8(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %eax
movl %eax, -0x128(%rbp)
movb -0xb9(%rbp), %cl
movb -0xba(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xbb(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x128(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xbc(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x3(%rax,%rcx), %eax
movl %eax, -0x124(%rbp)
movb -0xbd(%rbp), %cl
movb -0xbe(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xbf(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x124(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xc0(%rbp)
movb -0xb4(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0xb8(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movb -0xbc(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movb -0xc0(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x3(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x40(%rbp)
jmp 0x185b6
jmp 0x18c1f
cmpq $0x3, -0x28(%rbp)
jne 0x189bd
movb $0x0, -0xc2(%rbp)
movb $0x0, -0xc4(%rbp)
movb $0x0, -0xc6(%rbp)
movb $0x0, -0xc8(%rbp)
movb $0x0, -0xca(%rbp)
movb $0x0, -0xcc(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x2, %rax
cmpq -0x38(%rbp), %rax
jae 0x189b8
movb -0xc2(%rbp), %al
movb %al, -0xc3(%rbp)
movb -0xc6(%rbp), %al
movb %al, -0xc7(%rbp)
movb -0xca(%rbp), %al
movb %al, -0xcb(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xc2(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0xc6(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0xca(%rbp)
movb -0xc4(%rbp), %al
movb %al, -0xc1(%rbp)
movb -0xc8(%rbp), %al
movb %al, -0xc5(%rbp)
movb -0xcc(%rbp), %al
movb %al, -0xc9(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x13c(%rbp)
movb -0xc1(%rbp), %cl
movb -0xc2(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xc3(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x13c(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xc4(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %eax
movl %eax, -0x138(%rbp)
movb -0xc5(%rbp), %cl
movb -0xc6(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xc7(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x138(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xc8(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %eax
movl %eax, -0x134(%rbp)
movb -0xc9(%rbp), %cl
movb -0xca(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xcb(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x134(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xcc(%rbp)
movb -0xc4(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0xc8(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movb -0xcc(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x40(%rbp)
jmp 0x18818
jmp 0x18c1d
cmpq $0x2, -0x28(%rbp)
jne 0x18b11
movb $0x0, -0xce(%rbp)
movb $0x0, -0xd0(%rbp)
movb $0x0, -0xd2(%rbp)
movb $0x0, -0xd4(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq -0x38(%rbp), %rax
jae 0x18b0c
movb -0xce(%rbp), %al
movb %al, -0xcf(%rbp)
movb -0xd2(%rbp), %al
movb %al, -0xd3(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xce(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0xd2(%rbp)
movb -0xd0(%rbp), %al
movb %al, -0xcd(%rbp)
movb -0xd4(%rbp), %al
movb %al, -0xd1(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x144(%rbp)
movb -0xcd(%rbp), %cl
movb -0xce(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xcf(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x144(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xd0(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %eax
movl %eax, -0x140(%rbp)
movb -0xd1(%rbp), %cl
movb -0xd2(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xd3(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x140(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xd4(%rbp)
movb -0xd0(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0xd4(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x40(%rbp)
jmp 0x189ec
jmp 0x18c1b
cmpq $0x1, -0x28(%rbp)
jne 0x18bd0
movb $0x0, -0xd6(%rbp)
movb $0x0, -0xd8(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x18bce
movb -0xd6(%rbp), %al
movb %al, -0xd7(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xd6(%rbp)
movb -0xd8(%rbp), %al
movb %al, -0xd5(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x148(%rbp)
movb -0xd5(%rbp), %cl
movb -0xd6(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0xd7(%rbp), %edx
callq 0x18d70
movb %al, %cl
movl -0x148(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, -0xd8(%rbp)
movb -0xd8(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x18b32
jmp 0x18c19
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x18c17
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x20(%rbp), %rcx
movq -0x40(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x18bd8
jmp 0x18c19
jmp 0x18c1b
jmp 0x18c1d
jmp 0x18c1f
jmp 0x18c21
jmp 0x18c23
jmp 0x18c25
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x18ca0
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x14c(%rbp)
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
subq -0x28(%rbp), %rcx
movb (%rax,%rcx), %sil
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
subq -0x28(%rbp), %rcx
movzbl %sil, %edi
movzbl %dl, %esi
movzbl (%rax,%rcx), %edx
callq 0x18d70
movb %al, %cl
movl -0x14c(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x18c25
jmp 0x18d44
movq $0x0, -0xe0(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x18ce6
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x18cb8
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x18d42
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0xe0(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0xe0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe0(%rbp)
jmp 0x18cee
jmp 0x18d44
jmp 0x18d4f
movl $0x24, -0x4(%rbp)
jmp 0x18d56
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopw %cs:(%rax,%rax)