// File: lunasorcery[P]brailify/./stb/stb_image.h
// Function: stbi__create_png_image_raw(stbi__png*, unsigned char*, unsigned int, int, unsigned int, unsigned int, int, int)
static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color)
{
   int bytes = (depth == 16? 2 : 1);
   stbi__context *s = a->s;
   stbi__uint32 i,j,stride = x*out_n*bytes;
   stbi__uint32 img_len, img_width_bytes;
   int k;
   int img_n = s->img_n; // copy it into a local for later

   int output_bytes = out_n*bytes;
   int filter_bytes = img_n*bytes;
   int width = x;

   STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1);
   a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into
   if (!a->out) return stbi__err("outofmem", "Out of memory");

   img_width_bytes = (((img_n * x * depth) + 7) >> 3);
   img_len = (img_width_bytes + 1) * y;
   if (s->img_x == x && s->img_y == y) {
      if (raw_len != img_len) return stbi__err("not enough pixels","Corrupt PNG");
   } else { // interlaced:
      if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG");
   }

   for (j=0; j < y; ++j) {
      stbi_uc *cur = a->out + stride*j;
      stbi_uc *prior = cur - stride;
      int filter = *raw++;

      if (filter > 4)
         return stbi__err("invalid filter","Corrupt PNG");

      if (depth < 8) {
         STBI_ASSERT(img_width_bytes <= x);
         cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place
         filter_bytes = 1;
         width = img_width_bytes;
      }

      // if first row, use special filter that doesn't sample previous row
      if (j == 0) filter = first_row_filter[filter];

      // handle first byte explicitly
      for (k=0; k < filter_bytes; ++k) {
         switch (filter) {
            case STBI__F_none       : cur[k] = raw[k]; break;
            case STBI__F_sub        : cur[k] = raw[k]; break;
            case STBI__F_up         : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;
            case STBI__F_avg        : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break;
            case STBI__F_paeth      : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break;
            case STBI__F_avg_first  : cur[k] = raw[k]; break;
            case STBI__F_paeth_first: cur[k] = raw[k]; break;
         }
      }

      if (depth == 8) {
         if (img_n != out_n)
            cur[img_n] = 255; // first pixel
         raw += img_n;
         cur += out_n;
         prior += out_n;
      } else if (depth == 16) {
         if (img_n != out_n) {
            cur[filter_bytes]   = 255; // first pixel top byte
            cur[filter_bytes+1] = 255; // first pixel bottom byte
         }
         raw += filter_bytes;
         cur += output_bytes;
         prior += output_bytes;
      } else {
         raw += 1;
         cur += 1;
         prior += 1;
      }

      // this is a little gross, so that we don't switch per-pixel or per-component
      if (depth < 8 || img_n == out_n) {
         int nk = (width - 1)*filter_bytes;
         #define STBI__CASE(f) \
             case f:     \
                for (k=0; k < nk; ++k)
         switch (filter) {
            // "none" filter turns into a memcpy here; make that explicit.
            case STBI__F_none:         memcpy(cur, raw, nk); break;
            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;
            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;
            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;
            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;
            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;
         }
         #undef STBI__CASE
         raw += nk;
      } else {
         STBI_ASSERT(img_n+1 == out_n);
         #define STBI__CASE(f) \
             case f:     \
                for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \
                   for (k=0; k < filter_bytes; ++k)
         switch (filter) {
            STBI__CASE(STBI__F_none)         { cur[k] = raw[k]; } break;
            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break;
            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break;
            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break;
            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break;
            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break;
         }
         #undef STBI__CASE

         // the loop above sets the high byte of the pixels' alpha, but for
         // 16 bit png files we also need the low byte set. we'll do that here.
         if (depth == 16) {
            cur = a->out + stride*j; // start at the beginning of the row again
            for (i=0; i < x; ++i,cur+=output_bytes) {
               cur[filter_bytes+1] = 255;
            }
         }
      }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl %ecx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
movl 0x10(%rbp), %edx
movl $0x1, %eax
movl $0x2, %ecx
cmpl $0x10, %edx
cmovel %ecx, %eax
movl %eax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl -0x24(%rbp), %eax
imull -0x20(%rbp), %eax
imull -0x2c(%rbp), %eax
movl %eax, -0x44(%rbp)
movq -0x38(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x54(%rbp)
movl -0x20(%rbp), %eax
imull -0x2c(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x54(%rbp), %eax
imull -0x2c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x20(%rbp), %ecx
movq -0x38(%rbp), %rdx
movb $0x1, %al
cmpl 0x8(%rdx), %ecx
movb %al, -0xa1(%rbp)
je 0x13b76
movl -0x20(%rbp), %eax
movq -0x38(%rbp), %rcx
movl 0x8(%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
sete %al
movb %al, -0xa1(%rbp)
movb -0xa1(%rbp), %al
testb $0x1, %al
jne 0x13b82
jmp 0x13b84
jmp 0x13ba3
leaq 0xceb7(%rip), %rdi      # 0x20a42
leaq 0xcad1(%rip), %rsi      # 0x20663
movl $0x10be, %edx           # imm = 0x10BE
leaq 0xcecd(%rip), %rcx      # 0x20a6b
callq 0x1090
movl -0x24(%rbp), %edi
movl -0x28(%rbp), %esi
movl -0x58(%rbp), %edx
xorl %ecx, %ecx
callq 0xe6f0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x13bdd
leaq 0xcbe9(%rip), %rdi      # 0x207b9
callq 0x13d0
movl %eax, -0x4(%rbp)
jmp 0x14ff2
movl -0x54(%rbp), %eax
imull -0x24(%rbp), %eax
imull 0x10(%rbp), %eax
addl $0x7, %eax
shrl $0x3, %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
imull -0x28(%rbp), %eax
movl %eax, -0x48(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
cmpl -0x24(%rbp), %eax
jne 0x13c33
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0x28(%rbp), %eax
jne 0x13c33
movl -0x1c(%rbp), %eax
cmpl -0x48(%rbp), %eax
je 0x13c31
leaq 0xceb7(%rip), %rdi      # 0x20adb
callq 0x13d0
movl %eax, -0x4(%rbp)
jmp 0x14ff2
jmp 0x13c51
movl -0x1c(%rbp), %eax
cmpl -0x48(%rbp), %eax
jae 0x13c4f
leaq 0xce99(%rip), %rdi      # 0x20adb
callq 0x13d0
movl %eax, -0x4(%rbp)
jmp 0x14ff2
jmp 0x13c51
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x28(%rbp), %eax
jae 0x147d5
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x44(%rbp), %ecx
imull -0x40(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movl -0x44(%rbp), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x18(%rbp)
movzbl (%rax), %eax
movl %eax, -0x74(%rbp)
cmpl $0x4, -0x74(%rbp)
jle 0x13cc0
leaq 0xce3a(%rip), %rdi      # 0x20aed
callq 0x13d0
movl %eax, -0x4(%rbp)
jmp 0x14ff2
cmpl $0x8, 0x10(%rbp)
jge 0x13d13
movl -0x4c(%rbp), %eax
cmpl -0x24(%rbp), %eax
ja 0x13cd0
jmp 0x13cef
leaq 0xce25(%rip), %rdi      # 0x20afc
leaq 0xc985(%rip), %rsi      # 0x20663
movl $0x10d3, %edx           # imm = 0x10D3
leaq 0xcd81(%rip), %rcx      # 0x20a6b
callq 0x1090
movl -0x24(%rbp), %ecx
imull -0x20(%rbp), %ecx
subl -0x4c(%rbp), %ecx
movq -0x68(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x1, -0x5c(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x60(%rbp)
cmpl $0x0, -0x40(%rbp)
jne 0x13d2b
movslq -0x74(%rbp), %rcx
leaq 0x12565(%rip), %rax     # 0x26289
movzbl (%rax,%rcx), %eax
movl %eax, -0x74(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x13e83
movl -0x74(%rbp), %eax
movq %rax, -0xb0(%rbp)
subq $0x6, %rax
ja 0x13e73
movq -0xb0(%rbp), %rax
leaq 0xc478(%rip), %rcx      # 0x201d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e73
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e73
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e73
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e73
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xb4(%rbp)
movq -0x70(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %esi
xorl %edx, %edx
movl %edx, %edi
callq 0x15000
movl %eax, %ecx
movl -0xb4(%rbp), %eax
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e73
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e73
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x13e75
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x13d32
cmpl $0x8, 0x10(%rbp)
jne 0x13ed5
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x13e9d
movq -0x68(%rbp), %rax
movslq -0x54(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x54(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x20(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x20(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x13f5b
cmpl $0x10, 0x10(%rbp)
jne 0x13f35
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x13f00
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movq -0x68(%rbp), %rax
movl -0x5c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x13f59
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x13f5b
cmpl $0x8, 0x10(%rbp)
jl 0x13f6d
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
jne 0x14200
movl -0x60(%rbp), %eax
decl %eax
movl -0x5c(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x78(%rbp)
movl -0x74(%rbp), %eax
movq %rax, -0xc0(%rbp)
subq $0x6, %rax
ja 0x141ea
movq -0xc0(%rbp), %rax
leaq 0xc21f(%rip), %rcx      # 0x201bc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x68(%rbp), %rdi
movq -0x18(%rbp), %rsi
movslq -0x78(%rbp), %rdx
callq 0x10a0
jmp 0x141ea
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x14007
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x68(%rbp), %rcx
movl -0x50(%rbp), %edx
subl -0x5c(%rbp), %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x13fc3
jmp 0x141ea
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x14052
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x14013
jmp 0x141ea
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x140b2
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movq -0x68(%rbp), %rdx
movl -0x50(%rbp), %esi
subl -0x5c(%rbp), %esi
movslq %esi, %rsi
movzbl (%rdx,%rsi), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x1405e
jmp 0x141ea
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x14132
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc4(%rbp)
movq -0x68(%rbp), %rax
movl -0x50(%rbp), %ecx
subl -0x5c(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
movq -0x70(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %esi
movq -0x70(%rbp), %rax
movl -0x50(%rbp), %ecx
subl -0x5c(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
callq 0x15000
movl %eax, %ecx
movl -0xc4(%rbp), %eax
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x140be
jmp 0x141ea
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x14184
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x68(%rbp), %rcx
movl -0x50(%rbp), %edx
subl -0x5c(%rbp), %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x1413e
jmp 0x141ea
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x141e8
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc8(%rbp)
movq -0x68(%rbp), %rax
movl -0x50(%rbp), %ecx
subl -0x5c(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
xorl %edx, %edx
movl %edx, %esi
callq 0x15000
movl %eax, %ecx
movl -0xc8(%rbp), %eax
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x1418d
jmp 0x141ea
movl -0x78(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x147c5
movl -0x54(%rbp), %eax
addl $0x1, %eax
cmpl -0x20(%rbp), %eax
jne 0x1420d
jmp 0x1422c
leaq 0xc8fd(%rip), %rdi      # 0x20b11
leaq 0xc448(%rip), %rsi      # 0x20663
movl $0x1110, %edx           # imm = 0x1110
leaq 0xc844(%rip), %rcx      # 0x20a6b
callq 0x1090
movl -0x74(%rbp), %eax
movq %rax, -0xd0(%rbp)
subq $0x6, %rax
ja 0x14767
movq -0xd0(%rbp), %rax
leaq 0xbf52(%rip), %rcx      # 0x201a0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x142e5
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x14296
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x1426d
jmp 0x14298
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x14260
jmp 0x14767
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x14397
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x14348
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x68(%rbp), %rcx
movl -0x50(%rbp), %edx
subl -0x58(%rbp), %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x14304
jmp 0x1434a
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x142f3
jmp 0x14767
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x14444
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x143f5
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x143b6
jmp 0x143f7
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x143a5
jmp 0x14767
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x14506
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x144b7
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp), %rcx
movslq -0x50(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movq -0x68(%rbp), %rdx
movl -0x50(%rbp), %esi
subl -0x58(%rbp), %esi
movslq %esi, %rsi
movzbl (%rdx,%rsi), %edx
addl %edx, %ecx
sarl %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x14463
jmp 0x144b9
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x14452
jmp 0x14767
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x145e8
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x14599
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xd4(%rbp)
movq -0x68(%rbp), %rax
movl -0x50(%rbp), %ecx
subl -0x58(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
movq -0x70(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %esi
movq -0x70(%rbp), %rax
movl -0x50(%rbp), %ecx
subl -0x58(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
callq 0x15000
movl %eax, %ecx
movl -0xd4(%rbp), %eax
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x14525
jmp 0x1459b
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x14514
jmp 0x14767
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x1469c
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x1464d
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x68(%rbp), %rcx
movl -0x50(%rbp), %edx
subl -0x58(%rbp), %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x14607
jmp 0x1464f
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x145f6
jmp 0x14767
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x14765
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x14716
movq -0x18(%rbp), %rax
movslq -0x50(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xd8(%rbp)
movq -0x68(%rbp), %rax
movl -0x50(%rbp), %ecx
subl -0x58(%rbp), %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
xorl %edx, %edx
movl %edx, %esi
callq 0x15000
movl %eax, %ecx
movl -0xd8(%rbp), %eax
addl %ecx, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x50(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x146bb
jmp 0x14718
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x68(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x5c(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl -0x58(%rbp), %ecx
movq -0x70(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
jmp 0x146aa
jmp 0x14767
cmpl $0x10, 0x10(%rbp)
jne 0x147c3
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x44(%rbp), %ecx
imull -0x40(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jae 0x147c1
movq -0x68(%rbp), %rax
movl -0x5c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
movl -0x58(%rbp), %ecx
movq -0x68(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
jmp 0x1478c
jmp 0x147c3
jmp 0x147c5
jmp 0x147c7
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x13c58
cmpl $0x8, 0x10(%rbp)
jge 0x14f51
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x28(%rbp), %eax
jae 0x14f4c
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x44(%rbp), %ecx
imull -0x40(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x44(%rbp), %ecx
imull -0x40(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movl -0x24(%rbp), %ecx
imull -0x20(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movl -0x4c(%rbp), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
cmpl $0x0, 0x18(%rbp)
jne 0x1485b
movslq 0x10(%rbp), %rcx
leaq 0x11a0d(%rip), %rax     # 0x2625c
movzbl (%rax,%rcx), %eax
movl %eax, -0xdc(%rbp)
jmp 0x14868
movl $0x1, %eax
movl %eax, -0xdc(%rbp)
jmp 0x14868
movl -0xdc(%rbp), %eax
movb %al, -0x89(%rbp)
cmpl $0x4, 0x10(%rbp)
jne 0x14934
movl -0x24(%rbp), %eax
imull -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x2, -0x50(%rbp)
jl 0x148ff
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x4, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
andl $0xf, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movl -0x50(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x50(%rbp)
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x14888
cmpl $0x0, -0x50(%rbp)
jle 0x1492f
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x4, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
jmp 0x14dc1
cmpl $0x2, 0x10(%rbp)
jne 0x14abb
movl -0x24(%rbp), %eax
imull -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x4, -0x50(%rbp)
jl 0x14a20
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x6, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x4, %ecx
andl $0x3, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x2, %ecx
andl $0x3, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
andl $0x3, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movl -0x50(%rbp), %eax
subl $0x4, %eax
movl %eax, -0x50(%rbp)
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x14948
cmpl $0x0, -0x50(%rbp)
jle 0x14a50
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x6, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x1, -0x50(%rbp)
jle 0x14a83
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x4, %ecx
andl $0x3, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x2, -0x50(%rbp)
jle 0x14ab6
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x2, %ecx
andl $0x3, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
jmp 0x14dbf
cmpl $0x1, 0x10(%rbp)
jne 0x14dbd
movl -0x24(%rbp), %eax
imull -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x8, -0x50(%rbp)
jl 0x14c5a
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x7, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x6, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x5, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x4, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x3, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x2, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movl -0x50(%rbp), %eax
subl $0x8, %eax
movl %eax, -0x50(%rbp)
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x14acf
cmpl $0x0, -0x50(%rbp)
jle 0x14c8a
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x7, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x1, -0x50(%rbp)
jle 0x14cbd
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x6, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x2, -0x50(%rbp)
jle 0x14cf0
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x5, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x3, -0x50(%rbp)
jle 0x14d23
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x4, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x4, -0x50(%rbp)
jle 0x14d56
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x3, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x5, -0x50(%rbp)
jle 0x14d89
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl $0x2, %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
cmpl $0x6, -0x50(%rbp)
jle 0x14dbb
movzbl -0x89(%rbp), %eax
movq -0x88(%rbp), %rcx
movzbl (%rcx), %ecx
sarl %ecx
andl $0x1, %ecx
imull %ecx, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
jmp 0x14dbd
jmp 0x14dbf
jmp 0x14dc1
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x14f3c
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x44(%rbp), %ecx
imull -0x40(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
cmpl $0x1, -0x54(%rbp)
jne 0x14e4f
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x90(%rbp)
cmpl $0x0, -0x90(%rbp)
jl 0x14e4a
movq -0x80(%rbp), %rax
movl -0x90(%rbp), %ecx
shll %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
movq -0x80(%rbp), %rax
movslq -0x90(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x80(%rbp), %rax
movl -0x90(%rbp), %ecx
shll %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x90(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x14df7
jmp 0x14f3a
cmpl $0x3, -0x54(%rbp)
jne 0x14e57
jmp 0x14e76
leaq 0xbcc4(%rip), %rdi      # 0x20b22
leaq 0xb7fe(%rip), %rsi      # 0x20663
movl $0x1169, %edx           # imm = 0x1169
leaq 0xbbfa(%rip), %rcx      # 0x20a6b
callq 0x1090
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x90(%rbp)
cmpl $0x0, -0x90(%rbp)
jl 0x14f38
movq -0x80(%rbp), %rax
movl -0x90(%rbp), %ecx
shll $0x2, %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
movq -0x80(%rbp), %rax
imull $0x3, -0x90(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x80(%rbp), %rax
movl -0x90(%rbp), %ecx
shll $0x2, %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq -0x80(%rbp), %rax
imull $0x3, -0x90(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x80(%rbp), %rax
movl -0x90(%rbp), %ecx
shll $0x2, %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq -0x80(%rbp), %rax
imull $0x3, -0x90(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x80(%rbp), %rax
movl -0x90(%rbp), %ecx
shll $0x2, %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x90(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x14e82
jmp 0x14f3a
jmp 0x14f3c
jmp 0x14f3e
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x147e6
jmp 0x14feb
cmpl $0x10, 0x10(%rbp)
jne 0x14fe9
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xa0(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movl -0x24(%rbp), %ecx
imull -0x28(%rbp), %ecx
imull -0x20(%rbp), %ecx
cmpl %ecx, %eax
jae 0x14fe7
movq -0x98(%rbp), %rax
movzbl (%rax), %eax
shll $0x8, %eax
movq -0x98(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
orl %ecx, %eax
movw %ax, %cx
movq -0xa0(%rbp), %rax
movw %cx, (%rax)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0xa0(%rbp), %rax
addq $0x2, %rax
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x98(%rbp)
jmp 0x14f7f
jmp 0x14fe9
jmp 0x14feb
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xe0, %rsp
popq %rbp
retq
nop