// File: alan0201tw[P]RayTracer/include/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");

   if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG");
   img_width_bytes = (((img_n * x * depth) + 7) >> 3);
   img_len = (img_width_bytes + 1) * y;

   // we used to check for exact match between raw_len and img_len on non-interlaced PNGs,
   // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),
   // so just check for raw_len < img_len always.
   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;
      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;
      }
      prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above

      // 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 0x6c026
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 0x6c032
jmp 0x6c034
jmp 0x6c053
leaq 0x15358(%rip), %rdi     # 0x81393
leaq 0x14f52(%rip), %rsi     # 0x80f94
movl $0x1139, %edx           # imm = 0x1139
leaq 0x1536e(%rip), %rcx     # 0x813bc
callq 0x7310
movl -0x24(%rbp), %edi
movl -0x28(%rbp), %esi
movl -0x58(%rbp), %edx
xorl %ecx, %ecx
callq 0x664e0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x6c08d
leaq 0x15082(%rip), %rdi     # 0x81102
callq 0x56040
movl %eax, -0x4(%rbp)
jmp 0x6d497
movl -0x54(%rbp), %edi
movl -0x24(%rbp), %esi
movl 0x10(%rbp), %edx
movl $0x7, %ecx
callq 0x662a0
cmpl $0x0, %eax
jne 0x6c0b9
leaq 0x1504c(%rip), %rdi     # 0x810f8
callq 0x56040
movl %eax, -0x4(%rbp)
jmp 0x6d497
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)
movl -0x1c(%rbp), %eax
cmpl -0x48(%rbp), %eax
jae 0x6c0f6
leaq 0x15343(%rip), %rdi     # 0x8142c
callq 0x56040
movl %eax, -0x4(%rbp)
jmp 0x6d497
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x28(%rbp), %eax
jae 0x6cc7a
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 -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 0x6c150
leaq 0x152fb(%rip), %rdi     # 0x8143e
callq 0x56040
movl %eax, -0x4(%rbp)
jmp 0x6d497
cmpl $0x8, 0x10(%rbp)
jge 0x6c1a3
movl -0x4c(%rbp), %eax
cmpl -0x24(%rbp), %eax
ja 0x6c160
jmp 0x6c17f
leaq 0x152e6(%rip), %rdi     # 0x8144d
leaq 0x14e26(%rip), %rsi     # 0x80f94
movl $0x114f, %edx           # imm = 0x114F
leaq 0x15242(%rip), %rcx     # 0x813bc
callq 0x7310
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)
movq -0x68(%rbp), %rax
movl -0x44(%rbp), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
cmpl $0x0, -0x40(%rbp)
jne 0x6c1d0
movslq -0x74(%rbp), %rcx
leaq 0x44420(%rip), %rax     # 0xb05e9
movzbl (%rax,%rcx), %eax
movl %eax, -0x74(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6c328
movl -0x74(%rbp), %eax
movq %rax, -0xb0(%rbp)
subq $0x6, %rax
ja 0x6c318
movq -0xb0(%rbp), %rax
leaq 0x13163(%rip), %rcx     # 0x7f368
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 0x6c318
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 0x6c318
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 0x6c318
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 0x6c318
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 0x6d4b0
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 0x6c318
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 0x6c318
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 0x6c31a
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x6c1d7
cmpl $0x8, 0x10(%rbp)
jne 0x6c37a
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x6c342
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 0x6c400
cmpl $0x10, 0x10(%rbp)
jne 0x6c3da
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x6c3a5
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 0x6c3fe
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 0x6c400
cmpl $0x8, 0x10(%rbp)
jl 0x6c412
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
jne 0x6c6a5
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 0x6c68f
movq -0xc0(%rbp), %rax
leaq 0x12f0a(%rip), %rcx     # 0x7f34c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x68(%rbp), %rdi
movq -0x18(%rbp), %rsi
movslq -0x78(%rbp), %rdx
callq 0x7400
jmp 0x6c68f
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6c4ac
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 0x6c468
jmp 0x6c68f
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6c4f7
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 0x6c4b8
jmp 0x6c68f
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6c557
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 0x6c503
jmp 0x6c68f
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6c5d7
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 0x6d4b0
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 0x6c563
jmp 0x6c68f
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6c629
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 0x6c5e3
jmp 0x6c68f
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6c68d
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 0x6d4b0
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 0x6c632
jmp 0x6c68f
movl -0x78(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x6cc6a
movl -0x54(%rbp), %eax
addl $0x1, %eax
cmpl -0x20(%rbp), %eax
jne 0x6c6b2
jmp 0x6c6d1
leaq 0x14da9(%rip), %rdi     # 0x81462
leaq 0x148d4(%rip), %rsi     # 0x80f94
movl $0x118d, %edx           # imm = 0x118D
leaq 0x14cf0(%rip), %rcx     # 0x813bc
callq 0x7310
movl -0x74(%rbp), %eax
movq %rax, -0xd0(%rbp)
subq $0x6, %rax
ja 0x6cc0c
movq -0xd0(%rbp), %rax
leaq 0x12c3d(%rip), %rcx     # 0x7f330
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 0x6c78a
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6c73b
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 0x6c712
jmp 0x6c73d
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 0x6c705
jmp 0x6cc0c
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x6c83c
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6c7ed
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 0x6c7a9
jmp 0x6c7ef
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 0x6c798
jmp 0x6cc0c
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x6c8e9
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6c89a
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 0x6c85b
jmp 0x6c89c
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 0x6c84a
jmp 0x6cc0c
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x6c9ab
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6c95c
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 0x6c908
jmp 0x6c95e
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 0x6c8f7
jmp 0x6cc0c
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x6ca8d
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6ca3e
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 0x6d4b0
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 0x6c9ca
jmp 0x6ca40
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 0x6c9b9
jmp 0x6cc0c
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x6cb41
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6caf2
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 0x6caac
jmp 0x6caf4
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 0x6ca9b
jmp 0x6cc0c
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x1, -0x3c(%rbp)
jb 0x6cc0a
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6cbbb
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 0x6d4b0
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 0x6cb60
jmp 0x6cbbd
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 0x6cb4f
jmp 0x6cc0c
cmpl $0x10, 0x10(%rbp)
jne 0x6cc68
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 0x6cc66
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 0x6cc31
jmp 0x6cc68
jmp 0x6cc6a
jmp 0x6cc6c
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x6c0fd
cmpl $0x8, 0x10(%rbp)
jge 0x6d3f6
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x28(%rbp), %eax
jae 0x6d3f1
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 0x6cd00
movslq 0x10(%rbp), %rcx
leaq 0x12874(%rip), %rax     # 0x7f568
movzbl (%rax,%rcx), %eax
movl %eax, -0xdc(%rbp)
jmp 0x6cd0d
movl $0x1, %eax
movl %eax, -0xdc(%rbp)
jmp 0x6cd0d
movl -0xdc(%rbp), %eax
movb %al, -0x89(%rbp)
cmpl $0x4, 0x10(%rbp)
jne 0x6cdd9
movl -0x24(%rbp), %eax
imull -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x2, -0x50(%rbp)
jl 0x6cda4
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 0x6cd2d
cmpl $0x0, -0x50(%rbp)
jle 0x6cdd4
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 0x6d266
cmpl $0x2, 0x10(%rbp)
jne 0x6cf60
movl -0x24(%rbp), %eax
imull -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x4, -0x50(%rbp)
jl 0x6cec5
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 0x6cded
cmpl $0x0, -0x50(%rbp)
jle 0x6cef5
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 0x6cf28
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 0x6cf5b
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 0x6d264
cmpl $0x1, 0x10(%rbp)
jne 0x6d262
movl -0x24(%rbp), %eax
imull -0x54(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x8, -0x50(%rbp)
jl 0x6d0ff
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 0x6cf74
cmpl $0x0, -0x50(%rbp)
jle 0x6d12f
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 0x6d162
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 0x6d195
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 0x6d1c8
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 0x6d1fb
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 0x6d22e
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 0x6d260
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 0x6d262
jmp 0x6d264
jmp 0x6d266
movl -0x54(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x6d3e1
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 0x6d2f4
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x90(%rbp)
cmpl $0x0, -0x90(%rbp)
jl 0x6d2ef
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 0x6d29c
jmp 0x6d3df
cmpl $0x3, -0x54(%rbp)
jne 0x6d2fc
jmp 0x6d31b
leaq 0x14170(%rip), %rdi     # 0x81473
leaq 0x13c8a(%rip), %rsi     # 0x80f94
movl $0x11e6, %edx           # imm = 0x11E6
leaq 0x140a6(%rip), %rcx     # 0x813bc
callq 0x7310
movl -0x24(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x90(%rbp)
cmpl $0x0, -0x90(%rbp)
jl 0x6d3dd
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 0x6d327
jmp 0x6d3df
jmp 0x6d3e1
jmp 0x6d3e3
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x6cc8b
jmp 0x6d490
cmpl $0x10, 0x10(%rbp)
jne 0x6d48e
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 0x6d48c
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 0x6d424
jmp 0x6d48e
jmp 0x6d490
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)