// File: /workspace/github_c_makefile_star2_O0/zhiyb[P]png2tlg/./stb_image.h
// Function: stbi__bmp_load(stbi__context*, int*, int*, int*, int, stbi__result_info*)
static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)
{
   stbi_uc *out;
   unsigned int mr=0,mg=0,mb=0,ma=0, all_a;
   stbi_uc pal[256][4];
   int psize=0,i,j,width;
   int flip_vertically, pad, target;
   stbi__bmp_data info;
   STBI_NOTUSED(ri);

   info.all_a = 255;
   if (stbi__bmp_parse_header(s, &info) == NULL)
      return NULL; // error code already set

   flip_vertically = ((int) s->img_y) > 0;
   s->img_y = abs((int) s->img_y);

   mr = info.mr;
   mg = info.mg;
   mb = info.mb;
   ma = info.ma;
   all_a = info.all_a;

   if (info.hsz == 12) {
      if (info.bpp < 24)
         psize = (info.offset - 14 - 24) / 3;
   } else {
      if (info.bpp < 16)
         psize = (info.offset - 14 - info.hsz) >> 2;
   }

   s->img_n = ma ? 4 : 3;
   if (req_comp && req_comp >= 3) // we can directly decode 3 or 4
      target = req_comp;
   else
      target = s->img_n; // if they want monochrome, we'll post-convert

   // sanity-check size
   if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0))
      return stbi__errpuc("too large", "Corrupt BMP");

   out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0);
   if (!out) return stbi__errpuc("outofmem", "Out of memory");
   if (info.bpp < 16) {
      int z=0;
      if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); }
      for (i=0; i < psize; ++i) {
         pal[i][2] = stbi__get8(s);
         pal[i][1] = stbi__get8(s);
         pal[i][0] = stbi__get8(s);
         if (info.hsz != 12) stbi__get8(s);
         pal[i][3] = 255;
      }
      stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4));
      if (info.bpp == 1) width = (s->img_x + 7) >> 3;
      else if (info.bpp == 4) width = (s->img_x + 1) >> 1;
      else if (info.bpp == 8) width = s->img_x;
      else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); }
      pad = (-width)&3;
      if (info.bpp == 1) {
         for (j=0; j < (int) s->img_y; ++j) {
            int bit_offset = 7, v = stbi__get8(s);
            for (i=0; i < (int) s->img_x; ++i) {
               int color = (v>>bit_offset)&0x1;
               out[z++] = pal[color][0];
               out[z++] = pal[color][1];
               out[z++] = pal[color][2];
               if (target == 4) out[z++] = 255;
               if (i+1 == (int) s->img_x) break;
               if((--bit_offset) < 0) {
                  bit_offset = 7;
                  v = stbi__get8(s);
               }
            }
            stbi__skip(s, pad);
         }
      } else {
         for (j=0; j < (int) s->img_y; ++j) {
            for (i=0; i < (int) s->img_x; i += 2) {
               int v=stbi__get8(s),v2=0;
               if (info.bpp == 4) {
                  v2 = v & 15;
                  v >>= 4;
               }
               out[z++] = pal[v][0];
               out[z++] = pal[v][1];
               out[z++] = pal[v][2];
               if (target == 4) out[z++] = 255;
               if (i+1 == (int) s->img_x) break;
               v = (info.bpp == 8) ? stbi__get8(s) : v2;
               out[z++] = pal[v][0];
               out[z++] = pal[v][1];
               out[z++] = pal[v][2];
               if (target == 4) out[z++] = 255;
            }
            stbi__skip(s, pad);
         }
      }
   } else {
      int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0;
      int z = 0;
      int easy=0;
      stbi__skip(s, info.offset - 14 - info.hsz);
      if (info.bpp == 24) width = 3 * s->img_x;
      else if (info.bpp == 16) width = 2*s->img_x;
      else /* bpp = 32 and pad = 0 */ width=0;
      pad = (-width) & 3;
      if (info.bpp == 24) {
         easy = 1;
      } else if (info.bpp == 32) {
         if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)
            easy = 2;
      }
      if (!easy) {
         if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); }
         // right shift amt to put high bit in position #7
         rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr);
         gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg);
         bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb);
         ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma);
      }
      for (j=0; j < (int) s->img_y; ++j) {
         if (easy) {
            for (i=0; i < (int) s->img_x; ++i) {
               unsigned char a;
               out[z+2] = stbi__get8(s);
               out[z+1] = stbi__get8(s);
               out[z+0] = stbi__get8(s);
               z += 3;
               a = (easy == 2 ? stbi__get8(s) : 255);
               all_a |= a;
               if (target == 4) out[z++] = a;
            }
         } else {
            int bpp = info.bpp;
            for (i=0; i < (int) s->img_x; ++i) {
               stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s));
               unsigned int a;
               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount));
               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount));
               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount));
               a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255);
               all_a |= a;
               if (target == 4) out[z++] = STBI__BYTECAST(a);
            }
         }
         stbi__skip(s, pad);
      }
   }

   // if alpha channel is all 0s, replace with all 255s
   if (target == 4 && all_a == 0)
      for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4)
         out[i] = 255;

   if (flip_vertically) {
      stbi_uc t;
      for (j=0; j < (int) s->img_y>>1; ++j) {
         stbi_uc *p1 = out +      j     *s->img_x*target;
         stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target;
         for (i=0; i < (int) s->img_x*target; ++i) {
            t = p1[i]; p1[i] = p2[i]; p2[i] = t;
         }
      }
   }

   if (req_comp && req_comp != target) {
      out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y);
      if (out == NULL) return out; // stbi__convert_format frees input on failure
   }

   *x = s->img_x;
   *y = s->img_y;
   if (comp) *comp = s->img_n;
   return out;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x510, %rsp            # imm = 0x510
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movl %r8d, -0x2c(%rbp)
movq %r9, -0x38(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x0, -0x50(%rbp)
movl $0x0, -0x464(%rbp)
movl $0xff, -0x480(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x49c(%rbp), %rsi
callq 0x1a810
cmpq $0x0, %rax
jne 0x8b76
movq $0x0, -0x8(%rbp)
jmp 0x9948
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4(%rax)
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x474(%rbp)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
movl %ecx, %eax
negl %eax
cmovnsl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x490(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x48c(%rbp), %eax
movl %eax, -0x48(%rbp)
movl -0x488(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x484(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x480(%rbp), %eax
movl %eax, -0x54(%rbp)
cmpl $0xc, -0x494(%rbp)
jne 0x8bfc
cmpl $0x18, -0x49c(%rbp)
jge 0x8bfa
movl -0x498(%rbp), %eax
subl $0xe, %eax
subl $0x18, %eax
movl $0x3, %ecx
cltd
idivl %ecx
movl %eax, -0x464(%rbp)
jmp 0x8c1f
cmpl $0x10, -0x49c(%rbp)
jge 0x8c1d
movl -0x498(%rbp), %eax
subl $0xe, %eax
subl -0x494(%rbp), %eax
sarl $0x2, %eax
movl %eax, -0x464(%rbp)
jmp 0x8c1f
movl -0x50(%rbp), %edx
movl $0x3, %ecx
movl $0x4, %eax
cmpl $0x0, %edx
cmovnel %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x8(%rax)
cmpl $0x0, -0x2c(%rbp)
je 0x8c50
cmpl $0x3, -0x2c(%rbp)
jl 0x8c50
movl -0x2c(%rbp), %eax
movl %eax, -0x47c(%rbp)
jmp 0x8c5d
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x47c(%rbp)
movl -0x47c(%rbp), %edi
movq -0x10(%rbp), %rax
movl (%rax), %esi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %edx
xorl %ecx, %ecx
callq 0x13400
cmpl $0x0, %eax
jne 0x8c9c
leaq 0x17cb1(%rip), %rdi     # 0x20934
callq 0x2680
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
cmovneq %rax, %rax
movq %rax, -0x8(%rbp)
jmp 0x9948
movl -0x47c(%rbp), %edi
movq -0x10(%rbp), %rax
movl (%rax), %esi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %edx
xorl %ecx, %ecx
callq 0x13640
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
jne 0x8ce1
leaq 0x17c76(%rip), %rdi     # 0x2093e
callq 0x2680
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
cmovneq %rax, %rax
movq %rax, -0x8(%rbp)
jmp 0x9948
cmpl $0x10, -0x49c(%rbp)
jge 0x927c
movl $0x0, -0x4a0(%rbp)
cmpl $0x0, -0x464(%rbp)
je 0x8d0d
cmpl $0x100, -0x464(%rbp)    # imm = 0x100
jle 0x8d36
movq -0x40(%rbp), %rdi
callq 0x22a0
leaq 0x1813e(%rip), %rdi     # 0x20e5b
callq 0x2680
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
cmovneq %rax, %rax
movq %rax, -0x8(%rbp)
jmp 0x9948
movl $0x0, -0x468(%rbp)
movl -0x468(%rbp), %eax
cmpl -0x464(%rbp), %eax
jge 0x8dd2
movq -0x10(%rbp), %rdi
callq 0x12e60
movb %al, %cl
movslq -0x468(%rbp), %rax
movb %cl, -0x45e(%rbp,%rax,4)
movq -0x10(%rbp), %rdi
callq 0x12e60
movb %al, %cl
movslq -0x468(%rbp), %rax
movb %cl, -0x45f(%rbp,%rax,4)
movq -0x10(%rbp), %rdi
callq 0x12e60
movb %al, %cl
movslq -0x468(%rbp), %rax
movb %cl, -0x460(%rbp,%rax,4)
cmpl $0xc, -0x494(%rbp)
je 0x8daf
movq -0x10(%rbp), %rdi
callq 0x12e60
movslq -0x468(%rbp), %rax
movb $-0x1, -0x45d(%rbp,%rax,4)
movl -0x468(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x468(%rbp)
jmp 0x8d40
movq -0x10(%rbp), %rdi
movl -0x498(%rbp), %esi
subl $0xe, %esi
subl -0x494(%rbp), %esi
movl -0x464(%rbp), %eax
movl -0x494(%rbp), %r8d
movl $0x4, %ecx
movl $0x3, %edx
cmpl $0xc, %r8d
cmovel %edx, %ecx
imull %ecx, %eax
subl %eax, %esi
callq 0x13350
cmpl $0x1, -0x49c(%rbp)
jne 0x8e2a
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0x7, %eax
shrl $0x3, %eax
movl %eax, -0x470(%rbp)
jmp 0x8e8a
cmpl $0x4, -0x49c(%rbp)
jne 0x8e46
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0x1, %eax
shrl %eax
movl %eax, -0x470(%rbp)
jmp 0x8e88
cmpl $0x8, -0x49c(%rbp)
jne 0x8e5d
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x470(%rbp)
jmp 0x8e86
movq -0x40(%rbp), %rdi
callq 0x22a0
leaq 0x17ff6(%rip), %rdi     # 0x20e63
callq 0x2680
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
cmovneq %rax, %rax
movq %rax, -0x8(%rbp)
jmp 0x9948
jmp 0x8e88
jmp 0x8e8a
xorl %eax, %eax
subl -0x470(%rbp), %eax
andl $0x3, %eax
movl %eax, -0x478(%rbp)
cmpl $0x1, -0x49c(%rbp)
jne 0x9035
movl $0x0, -0x46c(%rbp)
movl -0x46c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x9030
movl $0x7, -0x4a4(%rbp)
movq -0x10(%rbp), %rdi
callq 0x12e60
movzbl %al, %eax
movl %eax, -0x4a8(%rbp)
movl $0x0, -0x468(%rbp)
movl -0x468(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x900d
movl -0x4a8(%rbp), %eax
movl -0x4a4(%rbp), %ecx
sarl %cl, %eax
andl $0x1, %eax
movl %eax, -0x4ac(%rbp)
movslq -0x4ac(%rbp), %rax
movb -0x460(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movslq -0x4ac(%rbp), %rax
movb -0x45f(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movslq -0x4ac(%rbp), %rax
movb -0x45e(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
cmpl $0x4, -0x47c(%rbp)
jne 0x8fb4
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x4a0(%rbp)
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
movl -0x468(%rbp), %eax
addl $0x1, %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jne 0x8fc7
jmp 0x900d
movl -0x4a4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4a4(%rbp)
cmpl $0x0, %eax
jge 0x8ff7
movl $0x7, -0x4a4(%rbp)
movq -0x10(%rbp), %rdi
callq 0x12e60
movzbl %al, %eax
movl %eax, -0x4a8(%rbp)
jmp 0x8ff9
movl -0x468(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x468(%rbp)
jmp 0x8eeb
movq -0x10(%rbp), %rdi
movl -0x478(%rbp), %esi
callq 0x13350
movl -0x46c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x46c(%rbp)
jmp 0x8eb2
jmp 0x9277
movl $0x0, -0x46c(%rbp)
movl -0x46c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x9275
movl $0x0, -0x468(%rbp)
movl -0x468(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x9252
movq -0x10(%rbp), %rdi
callq 0x12e60
movzbl %al, %eax
movl %eax, -0x4b0(%rbp)
movl $0x0, -0x4b4(%rbp)
cmpl $0x4, -0x49c(%rbp)
jne 0x90b1
movl -0x4b0(%rbp), %eax
andl $0xf, %eax
movl %eax, -0x4b4(%rbp)
movl -0x4b0(%rbp), %eax
sarl $0x4, %eax
movl %eax, -0x4b0(%rbp)
movslq -0x4b0(%rbp), %rax
movb -0x460(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movslq -0x4b0(%rbp), %rax
movb -0x45f(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movslq -0x4b0(%rbp), %rax
movb -0x45e(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
cmpl $0x4, -0x47c(%rbp)
jne 0x9151
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x4a0(%rbp)
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
movl -0x468(%rbp), %eax
addl $0x1, %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jne 0x9167
jmp 0x9252
cmpl $0x8, -0x49c(%rbp)
jne 0x9184
movq -0x10(%rbp), %rdi
callq 0x12e60
movzbl %al, %eax
movl %eax, -0x504(%rbp)
jmp 0x9190
movl -0x4b4(%rbp), %eax
movl %eax, -0x504(%rbp)
movl -0x504(%rbp), %eax
movl %eax, -0x4b0(%rbp)
movslq -0x4b0(%rbp), %rax
movb -0x460(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movslq -0x4b0(%rbp), %rax
movb -0x45f(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movslq -0x4b0(%rbp), %rax
movb -0x45e(%rbp,%rax,4), %dl
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
cmpl $0x4, -0x47c(%rbp)
jne 0x923c
movq -0x40(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x4a0(%rbp)
movslq %ecx, %rcx
movb $-0x1, (%rax,%rcx)
jmp 0x923e
movl -0x468(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x468(%rbp)
jmp 0x905c
movq -0x10(%rbp), %rdi
movl -0x478(%rbp), %esi
callq 0x13350
movl -0x46c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x46c(%rbp)
jmp 0x903f
jmp 0x9277
jmp 0x975d
movl $0x0, -0x4b8(%rbp)
movl $0x0, -0x4bc(%rbp)
movl $0x0, -0x4c0(%rbp)
movl $0x0, -0x4c4(%rbp)
movl $0x0, -0x4c8(%rbp)
movl $0x0, -0x4cc(%rbp)
movl $0x0, -0x4d0(%rbp)
movl $0x0, -0x4d4(%rbp)
movl $0x0, -0x4d8(%rbp)
movl $0x0, -0x4dc(%rbp)
movq -0x10(%rbp), %rdi
movl -0x498(%rbp), %esi
subl $0xe, %esi
subl -0x494(%rbp), %esi
callq 0x13350
cmpl $0x18, -0x49c(%rbp)
jne 0x9310
movq -0x10(%rbp), %rax
imull $0x3, (%rax), %eax
movl %eax, -0x470(%rbp)
jmp 0x9335
cmpl $0x10, -0x49c(%rbp)
jne 0x9329
movq -0x10(%rbp), %rax
movl (%rax), %eax
shll %eax
movl %eax, -0x470(%rbp)
jmp 0x9333
movl $0x0, -0x470(%rbp)
jmp 0x9335
xorl %eax, %eax
subl -0x470(%rbp), %eax
andl $0x3, %eax
movl %eax, -0x478(%rbp)
cmpl $0x18, -0x49c(%rbp)
jne 0x935b
movl $0x1, -0x4dc(%rbp)
jmp 0x9396
cmpl $0x20, -0x49c(%rbp)
jne 0x9394
cmpl $0xff, -0x4c(%rbp)
jne 0x9392
cmpl $0xff00, -0x48(%rbp)    # imm = 0xFF00
jne 0x9392
cmpl $0xff0000, -0x44(%rbp)  # imm = 0xFF0000
jne 0x9392
cmpl $0xff000000, -0x50(%rbp) # imm = 0xFF000000
jne 0x9392
movl $0x2, -0x4dc(%rbp)
jmp 0x9394
jmp 0x9396
cmpl $0x0, -0x4dc(%rbp)
jne 0x945a
cmpl $0x0, -0x44(%rbp)
je 0x93b5
cmpl $0x0, -0x48(%rbp)
je 0x93b5
cmpl $0x0, -0x4c(%rbp)
jne 0x93de
movq -0x40(%rbp), %rdi
callq 0x22a0
leaq 0x17aa6(%rip), %rdi     # 0x20e6b
callq 0x2680
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
cmovneq %rax, %rax
movq %rax, -0x8(%rbp)
jmp 0x9948
movl -0x44(%rbp), %edi
callq 0x1ac50
subl $0x7, %eax
movl %eax, -0x4b8(%rbp)
movl -0x44(%rbp), %edi
callq 0x1ad00
movl %eax, -0x4c8(%rbp)
movl -0x48(%rbp), %edi
callq 0x1ac50
subl $0x7, %eax
movl %eax, -0x4bc(%rbp)
movl -0x48(%rbp), %edi
callq 0x1ad00
movl %eax, -0x4cc(%rbp)
movl -0x4c(%rbp), %edi
callq 0x1ac50
subl $0x7, %eax
movl %eax, -0x4c0(%rbp)
movl -0x4c(%rbp), %edi
callq 0x1ad00
movl %eax, -0x4d0(%rbp)
movl -0x50(%rbp), %edi
callq 0x1ac50
subl $0x7, %eax
movl %eax, -0x4c4(%rbp)
movl -0x50(%rbp), %edi
callq 0x1ad00
movl %eax, -0x4d4(%rbp)
movl $0x0, -0x46c(%rbp)
movl -0x46c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x975b
cmpl $0x0, -0x4dc(%rbp)
je 0x9591
movl $0x0, -0x468(%rbp)
movl -0x468(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x958c
movq -0x10(%rbp), %rdi
callq 0x12e60
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rdi
callq 0x12e60
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rdi
callq 0x12e60
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x4d8(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x4d8(%rbp)
cmpl $0x2, -0x4dc(%rbp)
jne 0x9526
movq -0x10(%rbp), %rdi
callq 0x12e60
movzbl %al, %eax
movl %eax, -0x508(%rbp)
jmp 0x9533
movl $0xff, %eax
movl %eax, -0x508(%rbp)
jmp 0x9533
movl -0x508(%rbp), %eax
movb %al, -0x4dd(%rbp)
movzbl -0x4dd(%rbp), %eax
orl -0x54(%rbp), %eax
movl %eax, -0x54(%rbp)
cmpl $0x4, -0x47c(%rbp)
jne 0x9576
movb -0x4dd(%rbp), %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4d8(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
jmp 0x9578
movl -0x468(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x468(%rbp)
jmp 0x948e
jmp 0x9738
movl -0x49c(%rbp), %eax
movl %eax, -0x4e4(%rbp)
movl $0x0, -0x468(%rbp)
movl -0x468(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x9736
cmpl $0x10, -0x4e4(%rbp)
jne 0x95d3
movq -0x10(%rbp), %rdi
callq 0x1a7d0
movl %eax, -0x50c(%rbp)
jmp 0x95e2
movq -0x10(%rbp), %rdi
callq 0x1a790
movl %eax, -0x50c(%rbp)
movl -0x50c(%rbp), %eax
movl %eax, -0x4e8(%rbp)
movl -0x4e8(%rbp), %edi
andl -0x44(%rbp), %edi
movl -0x4b8(%rbp), %esi
movl -0x4c8(%rbp), %edx
callq 0x1ad80
andl $0xff, %eax
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4d8(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x4e8(%rbp), %edi
andl -0x48(%rbp), %edi
movl -0x4bc(%rbp), %esi
movl -0x4cc(%rbp), %edx
callq 0x1ad80
andl $0xff, %eax
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4d8(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x4e8(%rbp), %edi
andl -0x4c(%rbp), %edi
movl -0x4c0(%rbp), %esi
movl -0x4d0(%rbp), %edx
callq 0x1ad80
andl $0xff, %eax
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4d8(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
cmpl $0x0, -0x50(%rbp)
je 0x96ca
movl -0x4e8(%rbp), %edi
andl -0x50(%rbp), %edi
movl -0x4c4(%rbp), %esi
movl -0x4d4(%rbp), %edx
callq 0x1ad80
movl %eax, -0x510(%rbp)
jmp 0x96d7
movl $0xff, %eax
movl %eax, -0x510(%rbp)
jmp 0x96d7
movl -0x510(%rbp), %eax
movl %eax, -0x4ec(%rbp)
movl -0x4ec(%rbp), %eax
orl -0x54(%rbp), %eax
movl %eax, -0x54(%rbp)
cmpl $0x4, -0x47c(%rbp)
jne 0x9720
movl -0x4ec(%rbp), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x40(%rbp), %rax
movl -0x4d8(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4d8(%rbp)
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
jmp 0x9722
movl -0x468(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x468(%rbp)
jmp 0x95a7
jmp 0x9738
movq -0x10(%rbp), %rdi
movl -0x478(%rbp), %esi
callq 0x13350
movl -0x46c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x46c(%rbp)
jmp 0x9464
jmp 0x975d
cmpl $0x4, -0x47c(%rbp)
jne 0x97b1
cmpl $0x0, -0x54(%rbp)
jne 0x97b1
movq -0x10(%rbp), %rax
movl (%rax), %eax
shll $0x2, %eax
movq -0x10(%rbp), %rcx
imull 0x4(%rcx), %eax
subl $0x1, %eax
movl %eax, -0x468(%rbp)
cmpl $0x0, -0x468(%rbp)
jl 0x97af
movq -0x40(%rbp), %rax
movslq -0x468(%rbp), %rcx
movb $-0x1, (%rax,%rcx)
movl -0x468(%rbp), %eax
subl $0x4, %eax
movl %eax, -0x468(%rbp)
jmp 0x9786
jmp 0x97b1
cmpl $0x0, -0x474(%rbp)
je 0x98cb
movl $0x0, -0x46c(%rbp)
movl -0x46c(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %ecx
sarl %ecx
cmpl %ecx, %eax
jge 0x98c9
movq -0x40(%rbp), %rax
movl -0x46c(%rbp), %ecx
movq -0x10(%rbp), %rdx
imull (%rdx), %ecx
imull -0x47c(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x4f8(%rbp)
movq -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %ecx
subl $0x1, %ecx
subl -0x46c(%rbp), %ecx
movq -0x10(%rbp), %rdx
imull (%rdx), %ecx
imull -0x47c(%rbp), %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x500(%rbp)
movl $0x0, -0x468(%rbp)
movl -0x468(%rbp), %eax
movq -0x10(%rbp), %rcx
movl (%rcx), %ecx
imull -0x47c(%rbp), %ecx
cmpl %ecx, %eax
jge 0x98b3
movq -0x4f8(%rbp), %rax
movslq -0x468(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x4ed(%rbp)
movq -0x500(%rbp), %rax
movslq -0x468(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x4f8(%rbp), %rax
movslq -0x468(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0x4ed(%rbp), %dl
movq -0x500(%rbp), %rax
movslq -0x468(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x468(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x468(%rbp)
jmp 0x983b
jmp 0x98b5
movl -0x46c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x46c(%rbp)
jmp 0x97c8
jmp 0x98cb
cmpl $0x0, -0x2c(%rbp)
je 0x9913
movl -0x2c(%rbp), %eax
cmpl -0x47c(%rbp), %eax
je 0x9913
movq -0x40(%rbp), %rdi
movl -0x47c(%rbp), %esi
movl -0x2c(%rbp), %edx
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movl 0x4(%rax), %r8d
callq 0x179c0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
jne 0x9911
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x9948
jmp 0x9913
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
cmpq $0x0, -0x28(%rbp)
je 0x9940
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x510, %rsp            # imm = 0x510
popq %rbp
retq
nopw %cs:(%rax,%rax)