// File: /workspace/github_c_makefile_star2_O0/tditlu[P]shadetabler/src/lodepng/lodepng.c
// Function: unfilterScanline
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:
      for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];
      for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + recon[i - bytewidth];
      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) {
        for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1u);
        for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + ((recon[i - bytewidth] + precon[i]) >> 1u);
      } else {
        for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];
        for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + (recon[i - bytewidth] >> 1u);
      }
      break;
    case 4:
      if(precon) {
        for(i = 0; i != bytewidth; ++i) {
          recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/
        }

        /* Unroll independent paths of the paeth predictor. A 6x and 8x version would also be possible but that
        adds too much code. Whether this actually speeds anything up at all depends on compiler and settings. */
        if(bytewidth >= 4) {
          for(; i + 3 < length; i += 4) {
            size_t j = i - bytewidth;
            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];
            unsigned char q0 = precon[j + 0], q1 = precon[j + 1], q2 = precon[j + 2], q3 = precon[j + 3];
            recon[i + 0] = s0 + paethPredictor(r0, p0, q0);
            recon[i + 1] = s1 + paethPredictor(r1, p1, q1);
            recon[i + 2] = s2 + paethPredictor(r2, p2, q2);
            recon[i + 3] = s3 + paethPredictor(r3, p3, q3);
          }
        } else if(bytewidth >= 3) {
          for(; i + 2 < length; i += 3) {
            size_t j = i - bytewidth;
            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];
            unsigned char q0 = precon[j + 0], q1 = precon[j + 1], q2 = precon[j + 2];
            recon[i + 0] = s0 + paethPredictor(r0, p0, q0);
            recon[i + 1] = s1 + paethPredictor(r1, p1, q1);
            recon[i + 2] = s2 + paethPredictor(r2, p2, q2);
          }
        } else if(bytewidth >= 2) {
          for(; i + 1 < length; i += 2) {
            size_t j = i - bytewidth;
            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];
            unsigned char q0 = precon[j + 0], q1 = precon[j + 1];
            recon[i + 0] = s0 + paethPredictor(r0, p0, q0);
            recon[i + 1] = s1 + paethPredictor(r1, p1, q1);
          }
        }

        for(; i != length; ++i) {
          recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth]));
        }
      } else {
        for(i = 0; i != bytewidth; ++i) {
          recon[i] = scanline[i];
        }
        for(i = bytewidth; i < length; ++i) {
          /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/
          recon[i] = (scanline[i] + recon[i - bytewidth]);
        }
      }
      break;
    default: return 36; /*error: invalid filter type given*/
  }
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
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, -0x88(%rbp)
subq $0x4, %rax
ja 0x15b00
movq -0x88(%rbp), %rax
leaq 0x606c(%rip), %rcx      # 0x1b234
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x15207
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 0x151d9
jmp 0x15b09
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x15242
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 0x15214
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x1528d
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rdx
subq -0x28(%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 0x1524a
jmp 0x15b09
cmpq $0x0, -0x20(%rbp)
je 0x152e2
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x152e0
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 0x152a1
jmp 0x1531a
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x15318
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 0x152ea
jmp 0x1531a
jmp 0x15b09
cmpq $0x0, -0x20(%rbp)
je 0x153d3
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x15373
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 0x15332
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x153ce
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rdx
subq -0x28(%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)
jmp 0x1537b
jmp 0x15458
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x15409
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 0x153db
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x15456
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rdx
subq -0x28(%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 0x15411
jmp 0x15458
jmp 0x15b09
cmpq $0x0, -0x20(%rbp)
je 0x15a7b
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x154af
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 0x15470
cmpq $0x4, -0x28(%rbp)
jb 0x156ef
jmp 0x154bc
movq -0x40(%rbp), %rax
addq $0x3, %rax
cmpq -0x38(%rbp), %rax
jae 0x156ea
movq -0x40(%rbp), %rax
subq -0x28(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x49(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x4a(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x4b(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x4c(%rbp)
movq -0x10(%rbp), %rax
movq -0x48(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x4d(%rbp)
movq -0x10(%rbp), %rax
movq -0x48(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x4e(%rbp)
movq -0x10(%rbp), %rax
movq -0x48(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x4f(%rbp)
movq -0x10(%rbp), %rax
movq -0x48(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x51(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x52(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x53(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x54(%rbp)
movq -0x20(%rbp), %rax
movq -0x48(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x55(%rbp)
movq -0x20(%rbp), %rax
movq -0x48(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x56(%rbp)
movq -0x20(%rbp), %rax
movq -0x48(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x57(%rbp)
movq -0x20(%rbp), %rax
movq -0x48(%rbp), %rcx
movb 0x3(%rax,%rcx), %al
movb %al, -0x58(%rbp)
movzbl -0x49(%rbp), %eax
movl %eax, -0x98(%rbp)
movzbl -0x4d(%rbp), %eax
movw %ax, %dx
movzbl -0x51(%rbp), %eax
movw %ax, %cx
movzbl -0x55(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0x98(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movzbl -0x4a(%rbp), %eax
movl %eax, -0x94(%rbp)
movzbl -0x4e(%rbp), %eax
movw %ax, %dx
movzbl -0x52(%rbp), %eax
movw %ax, %cx
movzbl -0x56(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0x94(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movzbl -0x4b(%rbp), %eax
movl %eax, -0x90(%rbp)
movzbl -0x4f(%rbp), %eax
movw %ax, %dx
movzbl -0x53(%rbp), %eax
movw %ax, %cx
movzbl -0x57(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0x90(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movzbl -0x4c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movzbl -0x50(%rbp), %eax
movw %ax, %dx
movzbl -0x54(%rbp), %eax
movw %ax, %cx
movzbl -0x58(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0x8c(%rbp), %eax
movzbl %cl, %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)
jmp 0x154bc
jmp 0x159ed
cmpq $0x3, -0x28(%rbp)
jb 0x158ae
jmp 0x156fc
movq -0x40(%rbp), %rax
addq $0x2, %rax
cmpq -0x38(%rbp), %rax
jae 0x158a9
movq -0x40(%rbp), %rax
subq -0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x61(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x62(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x63(%rbp)
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x64(%rbp)
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x65(%rbp)
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x66(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x67(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x68(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x69(%rbp)
movq -0x20(%rbp), %rax
movq -0x60(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x6a(%rbp)
movq -0x20(%rbp), %rax
movq -0x60(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x6b(%rbp)
movq -0x20(%rbp), %rax
movq -0x60(%rbp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, -0x6c(%rbp)
movzbl -0x61(%rbp), %eax
movl %eax, -0xa4(%rbp)
movzbl -0x64(%rbp), %eax
movw %ax, %dx
movzbl -0x67(%rbp), %eax
movw %ax, %cx
movzbl -0x6a(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0xa4(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movzbl -0x62(%rbp), %eax
movl %eax, -0xa0(%rbp)
movzbl -0x65(%rbp), %eax
movw %ax, %dx
movzbl -0x68(%rbp), %eax
movw %ax, %cx
movzbl -0x6b(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0xa0(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movzbl -0x63(%rbp), %eax
movl %eax, -0x9c(%rbp)
movzbl -0x66(%rbp), %eax
movw %ax, %dx
movzbl -0x69(%rbp), %eax
movw %ax, %cx
movzbl -0x6c(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0x9c(%rbp), %eax
movzbl %cl, %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)
jmp 0x156fc
jmp 0x159eb
cmpq $0x2, -0x28(%rbp)
jb 0x159e9
jmp 0x158bb
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq -0x38(%rbp), %rax
jae 0x159e7
movq -0x40(%rbp), %rax
subq -0x28(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x79(%rbp)
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x7a(%rbp)
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x7b(%rbp)
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x7c(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x7d(%rbp)
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x7e(%rbp)
movq -0x20(%rbp), %rax
movq -0x78(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x7f(%rbp)
movq -0x20(%rbp), %rax
movq -0x78(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x80(%rbp)
movzbl -0x79(%rbp), %eax
movl %eax, -0xac(%rbp)
movzbl -0x7b(%rbp), %eax
movw %ax, %dx
movzbl -0x7d(%rbp), %eax
movw %ax, %cx
movzbl -0x7f(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0xac(%rbp), %eax
movzbl %cl, %ecx
addl %ecx, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movzbl -0x7a(%rbp), %eax
movl %eax, -0xa8(%rbp)
movzbl -0x7c(%rbp), %eax
movw %ax, %dx
movzbl -0x7e(%rbp), %eax
movw %ax, %cx
movzbl -0x80(%rbp), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0xa8(%rbp), %eax
movzbl %cl, %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)
jmp 0x158bb
jmp 0x159e9
jmp 0x159eb
jmp 0x159ed
jmp 0x159ef
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x15a76
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xb0(%rbp)
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
subq -0x28(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movw %ax, %dx
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movw %ax, %cx
movq -0x20(%rbp), %rax
movq -0x40(%rbp), %rsi
subq -0x28(%rbp), %rsi
movzbl (%rax,%rsi), %eax
movswl %dx, %edi
movswl %cx, %esi
movswl %ax, %edx
callq 0x15b20
movb %al, %cl
movl -0xb0(%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 0x159ef
jmp 0x15afe
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x15ab1
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 0x15a83
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x15afc
movq -0x18(%rbp), %rax
movq -0x40(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rdx
subq -0x28(%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 0x15ab9
jmp 0x15afe
jmp 0x15b09
movl $0x24, -0x4(%rbp)
jmp 0x15b10
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xb0, %rsp
popq %rbp
retq
nopl (%rax)