// File: /workspace/github_cpp_makefile_star2_O3/alan0201tw[P]RayTracer/include/stb_image.h
// Function: stbi__psd_load(stbi__context*, int*, int*, int*, int, stbi__result_info*, int)
static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)
{
   int pixelCount;
   int channelCount, compression;
   int channel, i;
   int bitdepth;
   int w,h;
   stbi_uc *out;
   STBI_NOTUSED(ri);

   // Check identifier
   if (stbi__get32be(s) != 0x38425053)   // "8BPS"
      return stbi__errpuc("not PSD", "Corrupt PSD image");

   // Check file type version.
   if (stbi__get16be(s) != 1)
      return stbi__errpuc("wrong version", "Unsupported version of PSD image");

   // Skip 6 reserved bytes.
   stbi__skip(s, 6 );

   // Read the number of channels (R, G, B, A, etc).
   channelCount = stbi__get16be(s);
   if (channelCount < 0 || channelCount > 16)
      return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image");

   // Read the rows and columns of the image.
   h = stbi__get32be(s);
   w = stbi__get32be(s);

   // Make sure the depth is 8 bits.
   bitdepth = stbi__get16be(s);
   if (bitdepth != 8 && bitdepth != 16)
      return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit");

   // Make sure the color mode is RGB.
   // Valid options are:
   //   0: Bitmap
   //   1: Grayscale
   //   2: Indexed color
   //   3: RGB color
   //   4: CMYK color
   //   7: Multichannel
   //   8: Duotone
   //   9: Lab color
   if (stbi__get16be(s) != 3)
      return stbi__errpuc("wrong color format", "PSD is not in RGB color format");

   // Skip the Mode Data.  (It's the palette for indexed color; other info for other modes.)
   stbi__skip(s,stbi__get32be(s) );

   // Skip the image resources.  (resolution, pen tool paths, etc)
   stbi__skip(s, stbi__get32be(s) );

   // Skip the reserved data.
   stbi__skip(s, stbi__get32be(s) );

   // Find out if the data is compressed.
   // Known values:
   //   0: no compression
   //   1: RLE compressed
   compression = stbi__get16be(s);
   if (compression > 1)
      return stbi__errpuc("bad compression", "PSD has an unknown compression format");

   // Check size
   if (!stbi__mad3sizes_valid(4, w, h, 0))
      return stbi__errpuc("too large", "Corrupt PSD");

   // Create the destination image.

   if (!compression && bitdepth == 16 && bpc == 16) {
      out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0);
      ri->bits_per_channel = 16;
   } else
      out = (stbi_uc *) stbi__malloc(4 * w*h);

   if (!out) return stbi__errpuc("outofmem", "Out of memory");
   pixelCount = w*h;

   // Initialize the data to zero.
   //memset( out, 0, pixelCount * 4 );

   // Finally, the image data.
   if (compression) {
      // RLE as used by .PSD and .TIFF
      // Loop until you get the number of unpacked bytes you are expecting:
      //     Read the next source byte into n.
      //     If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.
      //     Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.
      //     Else if n is 128, noop.
      // Endloop

      // The RLE-compressed data is preceded by a 2-byte data count for each row in the data,
      // which we're going to just skip.
      stbi__skip(s, h * channelCount * 2 );

      // Read the RLE data by channel.
      for (channel = 0; channel < 4; channel++) {
         stbi_uc *p;

         p = out+channel;
         if (channel >= channelCount) {
            // Fill this channel with default data.
            for (i = 0; i < pixelCount; i++, p += 4)
               *p = (channel == 3 ? 255 : 0);
         } else {
            // Read the RLE data.
            if (!stbi__psd_decode_rle(s, p, pixelCount)) {
               STBI_FREE(out);
               return stbi__errpuc("corrupt", "bad RLE data");
            }
         }
      }

   } else {
      // We're at the raw image data.  It's each channel in order (Red, Green, Blue, Alpha, ...)
      // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.

      // Read the data by channel.
      for (channel = 0; channel < 4; channel++) {
         if (channel >= channelCount) {
            // Fill this channel with default data.
            if (bitdepth == 16 && bpc == 16) {
               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;
               stbi__uint16 val = channel == 3 ? 65535 : 0;
               for (i = 0; i < pixelCount; i++, q += 4)
                  *q = val;
            } else {
               stbi_uc *p = out+channel;
               stbi_uc val = channel == 3 ? 255 : 0;
               for (i = 0; i < pixelCount; i++, p += 4)
                  *p = val;
            }
         } else {
            if (ri->bits_per_channel == 16) {    // output bpc
               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;
               for (i = 0; i < pixelCount; i++, q += 4)
                  *q = (stbi__uint16) stbi__get16be(s);
            } else {
               stbi_uc *p = out+channel;
               if (bitdepth == 16) {  // input bpc
                  for (i = 0; i < pixelCount; i++, p += 4)
                     *p = (stbi_uc) (stbi__get16be(s) >> 8);
               } else {
                  for (i = 0; i < pixelCount; i++, p += 4)
                     *p = stbi__get8(s);
               }
            }
         }
      }
   }

   // remove weird white matte from PSD
   if (channelCount >= 4) {
      if (ri->bits_per_channel == 16) {
         for (i=0; i < w*h; ++i) {
            stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i;
            if (pixel[3] != 0 && pixel[3] != 65535) {
               float a = pixel[3] / 65535.0f;
               float ra = 1.0f / a;
               float inv_a = 65535.0f * (1 - ra);
               pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a);
               pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a);
               pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a);
            }
         }
      } else {
         for (i=0; i < w*h; ++i) {
            unsigned char *pixel = out + 4*i;
            if (pixel[3] != 0 && pixel[3] != 255) {
               float a = pixel[3] / 255.0f;
               float ra = 1.0f / a;
               float inv_a = 255.0f * (1 - ra);
               pixel[0] = (unsigned char) (pixel[0]*ra + inv_a);
               pixel[1] = (unsigned char) (pixel[1]*ra + inv_a);
               pixel[2] = (unsigned char) (pixel[2]*ra + inv_a);
            }
         }
      }
   }

   // convert to desired output format
   if (req_comp && req_comp != 4) {
      if (ri->bits_per_channel == 16)
         out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h);
      else
         out = stbi__convert_format(out, 4, req_comp, w, h);
      if (out == NULL) return out; // stbi__convert_format frees input on failure
   }

   if (comp) *comp = 4;
   *y = h;
   *x = w;

   return out;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %r9, 0x80(%rsp)
movl %r8d, %r14d
movq %rcx, %rbp
movq %rdx, %r12
movq %rsi, %r15
movq %rdi, %r13
callq 0x31b23
movl %eax, %ebx
shll $0x10, %ebx
movq %r13, %rdi
callq 0x31b23
orl %ebx, %eax
cmpl $0x38425053, %eax       # imm = 0x38425053
jne 0x2c7c2
movq %r13, %rdi
callq 0x31b23
cmpl $0x1, %eax
jne 0x2c7ce
cmpq $0x0, 0x10(%r13)
je 0x2c7da
movq 0xb8(%r13), %rax
movq 0xc0(%r13), %rdx
movl %edx, %ecx
subl %eax, %ecx
cmpl $0x5, %ecx
jg 0x2c7e1
movq %rdx, 0xb8(%r13)
movq 0x28(%r13), %rdi
movl $0x6, %esi
subl %ecx, %esi
callq *0x18(%r13)
jmp 0x2c7ec
leaq 0x137e7(%rip), %rax     # 0x3ffb0
jmp 0x2c8f8
leaq 0x137e3(%rip), %rax     # 0x3ffb8
jmp 0x2c8f8
movq 0xb8(%r13), %rax
addq $0x6, %rax
movq %rax, 0xb8(%r13)
movq %r13, %rdi
callq 0x31b23
cmpl $0x11, %eax
jb 0x2c805
leaq 0x137c6(%rip), %rax     # 0x3ffc6
jmp 0x2c8f8
movl %eax, 0x1c(%rsp)
movq %r13, %rdi
callq 0x31b23
movq %rax, 0x28(%rsp)
movq %r13, %rdi
callq 0x31b23
movl %eax, %ebx
movq %r13, %rdi
callq 0x31b23
movq %rax, 0x20(%rsp)
movq %r13, %rdi
callq 0x31b23
movq %rax, 0x48(%rsp)
movq %r13, %rdi
callq 0x31b23
cmpl $0x8, %eax
je 0x2c850
cmpl $0x10, %eax
jne 0x2c8f1
movl %eax, 0x40(%rsp)
movq %r13, %rdi
callq 0x31b23
cmpl $0x3, %eax
jne 0x2c8e8
movq %rbx, 0x38(%rsp)
movl %r14d, 0x18(%rsp)
movq %r13, %rdi
callq 0x31b23
movl %eax, %ebx
shll $0x10, %ebx
movq %r13, %rdi
callq 0x31b23
orl %eax, %ebx
movq %r13, %rdi
movl %ebx, %esi
callq 0x31d5a
movq %r13, %rdi
callq 0x31b23
movl %eax, %ebx
shll $0x10, %ebx
movq %r13, %rdi
callq 0x31b23
orl %eax, %ebx
movq %r13, %rdi
movl %ebx, %esi
callq 0x31d5a
movq %r13, %rdi
callq 0x31b23
movl %eax, %ebx
shll $0x10, %ebx
movq %r13, %rdi
callq 0x31b23
orl %eax, %ebx
movq %r13, %rdi
movl %ebx, %esi
callq 0x31d5a
movq %r13, %rdi
callq 0x31b23
cmpl $0x2, %eax
jb 0x2c916
leaq 0x1371d(%rip), %rax     # 0x40003
jmp 0x2c8f8
leaq 0x13701(%rip), %rax     # 0x3fff0
jmp 0x2c8f8
leaq 0x136e2(%rip), %rax     # 0x3ffda
movq %rax, 0x22bc9(%rip)     # 0x4f4c8
xorl %edi, %edi
movq %rdi, %rax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %eax, %r14d
movq 0x28(%rsp), %rcx
shll $0x10, %ecx
movq 0x38(%rsp), %rax
movq %rcx, 0x28(%rsp)
leal (%rcx,%rax), %edx
movq 0x20(%rsp), %rcx
shll $0x10, %ecx
movq 0x48(%rsp), %rax
movq %rcx, 0x20(%rsp)
leal (%rcx,%rax), %esi
movl $0x4, %edi
movl %esi, 0x8(%rsp)
movl %edx, 0xc(%rsp)
xorl %ecx, %ecx
callq 0x31db0
testl %eax, %eax
je 0x2c99a
movl 0x100(%rsp), %ebx
cmpl $0x10, %ebx
jne 0x2c9a6
cmpl $0x10, 0x40(%rsp)
jne 0x2c9a6
testl %r14d, %r14d
jne 0x2c9a6
movl $0x8, %edi
movl 0x8(%rsp), %esi
movl 0xc(%rsp), %edx
xorl %ecx, %ecx
callq 0x31ec4
movq %rax, %rcx
movq 0x80(%rsp), %rax
movl $0x10, (%rax)
jmp 0x2c9bd
leaq 0x12fe1(%rip), %rax     # 0x3f982
jmp 0x2c8f8
movl 0xc(%rsp), %eax
imull 0x8(%rsp), %eax
shll $0x2, %eax
movslq %eax, %rdi
callq 0x64c0
movq %rax, %rcx
movq %rcx, 0x30(%rsp)
testq %rcx, %rcx
je 0x2d15c
movq %rbp, 0xa0(%rsp)
movq %r12, 0xa8(%rsp)
movq %r15, 0xb0(%rsp)
movl 0x8(%rsp), %ecx
movl 0xc(%rsp), %eax
imull %eax, %ecx
movl %ecx, (%rsp)
testl %r14d, %r14d
je 0x2d17e
movl 0x1c(%rsp), %ebx
movl %ebx, %esi
imull %eax, %esi
addl %esi, %esi
movq %r13, %rdi
callq 0x31d5a
leaq 0x38(%r13), %r14
leaq 0x39(%r13), %rax
movq %rax, 0x60(%rsp)
movl %ebx, %eax
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
movl %edi, %eax
movq 0x20(%rsp), %r8
orl %r8d, %eax
movq 0x38(%rsp), %rdx
movl %edx, %ecx
movq 0x28(%rsp), %rsi
orl %esi, %ecx
imull %eax, %ecx
decq %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, 0x90(%rsp)
movq 0x30(%rsp), %rax
leaq 0x3c(%rax), %rbp
leal (%rdi,%r8), %eax
leal (%rdx,%rsi), %r15d
imull %eax, %r15d
addq $0xf, %r15
andq $-0x10, %r15
xorl %eax, %eax
movdqa 0xf8a2(%rip), %xmm7     # 0x3c320
pcmpeqd %xmm8, %xmm8
movq %r14, 0x58(%rsp)
movq %r15, 0x78(%rsp)
movq %rax, 0x50(%rsp)
cmpq 0x40(%rsp), %rax
jae 0x2ccc8
cmpl $0x0, (%rsp)
jle 0x2d142
movq 0x30(%rsp), %rax
movq 0x50(%rsp), %rcx
leaq (%rax,%rcx), %r12
xorl %eax, %eax
movl (%rsp), %ebx
movl %eax, 0x10(%rsp)
movq 0xb8(%r13), %rdx
movq 0xc0(%r13), %rax
cmpq %rax, %rdx
jae 0x2cae0
leaq 0x1(%rdx), %rcx
movq %rcx, 0xb8(%r13)
movb (%rdx), %dl
jmp 0x2cb40
cmpl $0x0, 0x30(%r13)
je 0x2cb09
movq 0x28(%r13), %rdi
movl 0x34(%r13), %edx
movq %r14, %rsi
callq *0x10(%r13)
testl %eax, %eax
je 0x2cb0e
cltq
addq %r14, %rax
movb (%r14), %dl
movq 0x60(%rsp), %rcx
jmp 0x2cb25
xorl %r15d, %r15d
jmp 0x2cb63
movl $0x0, 0x30(%r13)
movb $0x0, 0x38(%r13)
xorl %edx, %edx
movq 0x60(%rsp), %rcx
movq %rcx, %rax
movq %rax, 0xc0(%r13)
movq %rcx, 0xb8(%r13)
movdqa 0xf7e5(%rip), %xmm7     # 0x3c320
pcmpeqd %xmm8, %xmm8
cmpb $-0x80, %dl
jne 0x2cb4e
movl 0x10(%rsp), %eax
jmp 0x2ccb8
movzbl %dl, %r15d
testb %dl, %dl
js 0x2cc09
cmpl %r15d, %ebx
jbe 0x2d168
incl %r15d
movl %r15d, %ebx
movq 0x58(%rsp), %r14
movq 0xb8(%r13), %rax
cmpq 0xc0(%r13), %rax
jae 0x2cb8d
leaq 0x1(%rax), %rcx
movq %rcx, 0xb8(%r13)
movb (%rax), %al
jmp 0x2cbed
cmpl $0x0, 0x30(%r13)
je 0x2cbb7
movq 0x28(%r13), %rdi
movl 0x34(%r13), %edx
movq %r14, %rsi
callq *0x10(%r13)
testl %eax, %eax
je 0x2cbbb
movslq %eax, %rcx
addq %r14, %rcx
movb (%r14), %al
movq 0x60(%rsp), %rdx
jmp 0x2cbd2
xorl %eax, %eax
jmp 0x2cbed
movl $0x0, 0x30(%r13)
movb $0x0, 0x38(%r13)
xorl %eax, %eax
movq 0x60(%rsp), %rdx
movq %rdx, %rcx
movdqa 0xf746(%rip), %xmm7     # 0x3c320
pcmpeqd %xmm8, %xmm8
movq %rcx, 0xc0(%r13)
movq %rdx, 0xb8(%r13)
movb %al, (%r12)
addq $0x4, %r12
decl %ebx
jne 0x2cb6e
movl 0x10(%rsp), %eax
addl %r15d, %eax
jmp 0x2ccb3
movl $0x101, %r14d           # imm = 0x101
subl %r15d, %r14d
cmpl %ebx, %r14d
ja 0x2d168
cmpq %rax, %rcx
jae 0x2cc2f
leaq 0x1(%rcx), %rax
movq %rax, 0xb8(%r13)
movb (%rcx), %al
jmp 0x2cc93
cmpl $0x0, 0x30(%r13)
je 0x2cc5d
movq 0x28(%r13), %rdi
movl 0x34(%r13), %edx
movq 0x58(%rsp), %rbx
movq %rbx, %rsi
callq *0x10(%r13)
testl %eax, %eax
je 0x2cc61
movslq %eax, %rcx
addq %rbx, %rcx
movb (%rbx), %al
movq 0x60(%rsp), %rdx
jmp 0x2cc78
xorl %eax, %eax
jmp 0x2cc93
movl $0x0, 0x30(%r13)
movb $0x0, 0x38(%r13)
xorl %eax, %eax
movq 0x60(%rsp), %rdx
movq %rdx, %rcx
movdqa 0xf6a0(%rip), %xmm7     # 0x3c320
pcmpeqd %xmm8, %xmm8
movq %rcx, 0xc0(%r13)
movq %rdx, 0xb8(%r13)
addl $0xfffffeff, %r15d      # imm = 0xFFFFFEFF
movb %al, (%r12)
addq $0x4, %r12
incl %r15d
jne 0x2cc9a
movl 0x10(%rsp), %eax
addl %r14d, %eax
movq 0x58(%rsp), %r14
movq 0x78(%rsp), %r15
movl (%rsp), %ebx
subl %eax, %ebx
jg 0x2caba
jmp 0x2d142
cmpl $0x0, (%rsp)
jle 0x2d142
cmpq $0x3, 0x50(%rsp)
sete %al
negb %al
xorl %ecx, %ecx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, %xmm2
por 0x1080b(%rip), %xmm2    # 0x3d500
movdqa 0x90(%rsp), %xmm1
pxor %xmm7, %xmm1
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
movd %xmm5, %edx
testb $0x1, %dl
je 0x2cd4e
movb %al, -0x3c(%rbp,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
movd %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2cd77
movb %al, -0x38(%rbp,%rcx,4)
movdqa %xmm0, %xmm3
por 0x1076d(%rip), %xmm3    # 0x3d4f0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
movd %xmm5, %edx
shrl $0x10, %edx
testb $0x1, %dl
je 0x2cdcf
movb %al, -0x34(%rbp,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
movd %xmm2, %edx
shrl $0x18, %edx
testb $0x1, %dl
je 0x2ce03
movb %al, -0x30(%rbp,%rcx,4)
movdqa %xmm0, %xmm2
por 0x106d1(%rip), %xmm2    # 0x3d4e0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x2, %xmm5, %edx
testb $0x1, %dl
je 0x2ce60
movb %al, -0x2c(%rbp,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x2, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2ce8a
movb %al, -0x28(%rbp,%rcx,4)
movdqa %xmm0, %xmm3
por 0x1063a(%rip), %xmm3    # 0x3d4d0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x3, %xmm5, %edx
testb $0x1, %dl
je 0x2cee0
movb %al, -0x24(%rbp,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x3, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2cf15
movb %al, -0x20(%rbp,%rcx,4)
movdqa %xmm0, %xmm2
por 0x1059f(%rip), %xmm2    # 0x3d4c0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x4, %xmm5, %edx
testb $0x1, %dl
je 0x2cf72
movb %al, -0x1c(%rbp,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x4, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2cf9c
movb %al, -0x18(%rbp,%rcx,4)
movdqa %xmm0, %xmm3
por 0x10508(%rip), %xmm3    # 0x3d4b0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x5, %xmm5, %edx
testb $0x1, %dl
je 0x2cff2
movb %al, -0x14(%rbp,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x5, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d027
movb %al, -0x10(%rbp,%rcx,4)
movdqa %xmm0, %xmm2
por 0x1046d(%rip), %xmm2    # 0x3d4a0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x6, %xmm5, %edx
testb $0x1, %dl
je 0x2d084
movb %al, -0xc(%rbp,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x6, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d0ae
movb %al, -0x8(%rbp,%rcx,4)
por 0x103da(%rip), %xmm0    # 0x3d490
pxor %xmm7, %xmm0
movdqa %xmm0, %xmm3
pcmpgtd %xmm1, %xmm3
pshufd $0xa0, %xmm3, %xmm2     # xmm2 = xmm3[0,0,2,2]
pcmpeqd %xmm1, %xmm0
pshufd $0xf5, %xmm0, %xmm0     # xmm0 = xmm0[1,1,3,3]
movdqa %xmm0, %xmm4
pand %xmm2, %xmm4
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm1, %xmm4
packssdw %xmm4, %xmm3
pxor %xmm8, %xmm3
packssdw %xmm3, %xmm3
packsswb %xmm3, %xmm3
pextrw $0x7, %xmm3, %edx
testb $0x1, %dl
je 0x2d100
movb %al, -0x4(%rbp,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm0, %xmm0     # xmm0 = xmm0[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm0
pshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
por %xmm0, %xmm1
pxor %xmm8, %xmm1
packssdw %xmm1, %xmm0
packsswb %xmm0, %xmm0
pextrw $0x7, %xmm0, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d135
movb %al, (%rbp,%rcx,4)
addq $0x10, %rcx
cmpq %rcx, %r15
jne 0x2ccdf
movq 0x50(%rsp), %rax
incq %rax
incq %rbp
cmpq $0x4, %rax
jne 0x2ca8d
jmp 0x2da80
leaq 0x12829(%rip), %rax     # 0x3f98c
jmp 0x2c8f8
movq 0x30(%rsp), %rdi
callq 0x6490
leaq 0x130df(%rip), %rax     # 0x40258
jmp 0x2c8f8
xorl $0x10, %ebx
movl 0x40(%rsp), %eax
xorl $0x10, %eax
orl %ebx, %eax
sete 0x7(%rsp)
leaq 0x38(%r13), %rax
movq %rax, 0xb8(%rsp)
leaq 0x39(%r13), %rax
movq %rax, 0x88(%rsp)
movl 0x1c(%rsp), %eax
movq %rax, 0xc0(%rsp)
movq 0x48(%rsp), %rdi
movl %edi, %eax
movq 0x20(%rsp), %r8
orl %r8d, %eax
movq 0x38(%rsp), %rdx
movl %edx, %ecx
movq 0x28(%rsp), %rsi
orl %esi, %ecx
imull %eax, %ecx
decq %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, 0x60(%rsp)
movq 0x30(%rsp), %rbp
leaq 0x3c(%rbp), %r14
leal (%rdi,%r8), %eax
leal (%rdx,%rsi), %ecx
imull %eax, %ecx
leaq 0xf(%rcx), %rax
andq $-0x10, %rax
movq %rax, 0x58(%rsp)
leaq 0x38(%rbp), %r12
movq %rcx, 0x10(%rsp)
leaq 0x7(%rcx), %rax
andq $-0x8, %rax
movq %rax, 0x78(%rsp)
xorl %ecx, %ecx
movdqa 0xf0fa(%rip), %xmm7     # 0x3c320
pcmpeqd %xmm8, %xmm8
movq %rbp, 0x90(%rsp)
cmpq 0xc0(%rsp), %rcx
movq %rcx, 0x50(%rsp)
jae 0x2d291
movq 0x80(%rsp), %rax
cmpl $0x10, (%rax)
jne 0x2d4e1
cmpl $0x0, (%rsp)
jle 0x2da5b
xorl %r15d, %r15d
movq %r13, %rdi
callq 0x31b23
pcmpeqd %xmm8, %xmm8
movdqa 0xf0ab(%rip), %xmm7     # 0x3c320
movq 0x90(%rsp), %rcx
movw %ax, (%rcx,%r15,8)
incq %r15
cmpl %r15d, 0x10(%rsp)
jne 0x2d260
jmp 0x2da5b
cmpb $0x0, 0x7(%rsp)
je 0x2d51f
xorl %eax, %eax
cmpq $0x3, %rcx
sete %cl
cmpl $0x0, (%rsp)
jle 0x2da5b
movb %cl, %al
negl %eax
xorl %ecx, %ecx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, %xmm2
por 0x10235(%rip), %xmm2    # 0x3d500
movdqa 0x60(%rsp), %xmm1
pxor %xmm7, %xmm1
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
movd %xmm5, %edx
testb $0x1, %dl
je 0x2d323
movw %ax, -0x38(%r12,%rcx,8)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
movd %xmm2, %edx
shrl $0x10, %edx
testb $0x1, %dl
je 0x2d34a
movw %ax, -0x30(%r12,%rcx,8)
movdqa %xmm0, %xmm3
por 0x1019a(%rip), %xmm3    # 0x3d4f0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
pextrw $0x2, %xmm5, %edx
testb $0x1, %dl
je 0x2d39e
movw %ax, -0x28(%r12,%rcx,8)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
pextrw $0x3, %xmm2, %edx
testb $0x1, %dl
je 0x2d3ce
movw %ax, -0x20(%r12,%rcx,8)
movdqa %xmm0, %xmm2
por 0x10106(%rip), %xmm2    # 0x3d4e0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
pextrw $0x4, %xmm5, %edx
testb $0x1, %dl
je 0x2d429
movw %ax, -0x18(%r12,%rcx,8)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
pextrw $0x5, %xmm2, %edx
testb $0x1, %dl
je 0x2d44e
movw %ax, -0x10(%r12,%rcx,8)
por 0x1007a(%rip), %xmm0    # 0x3d4d0
pxor %xmm7, %xmm0
movdqa %xmm0, %xmm3
pcmpgtd %xmm1, %xmm3
pshufd $0xa0, %xmm3, %xmm2     # xmm2 = xmm3[0,0,2,2]
pcmpeqd %xmm1, %xmm0
pshufd $0xf5, %xmm0, %xmm0     # xmm0 = xmm0[1,1,3,3]
movdqa %xmm0, %xmm4
pand %xmm2, %xmm4
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm1, %xmm4
packssdw %xmm4, %xmm3
pxor %xmm8, %xmm3
packssdw %xmm3, %xmm3
pextrw $0x6, %xmm3, %edx
testb $0x1, %dl
je 0x2d49e
movw %ax, -0x8(%r12,%rcx,8)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm0, %xmm0     # xmm0 = xmm0[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm0
pshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
por %xmm0, %xmm1
pxor %xmm8, %xmm1
packssdw %xmm1, %xmm0
pextrw $0x7, %xmm0, %edx
testb $0x1, %dl
je 0x2d4cd
movw %ax, (%r12,%rcx,8)
addq $0x8, %rcx
cmpq %rcx, 0x78(%rsp)
jne 0x2d2b5
jmp 0x2da5b
cmpl $0x10, 0x40(%rsp)
jne 0x2d9aa
cmpl $0x0, (%rsp)
jle 0x2da5b
xorl %ebx, %ebx
movq %r13, %rdi
callq 0x31b23
pcmpeqd %xmm8, %xmm8
movdqa 0xee13(%rip), %xmm7     # 0x3c320
movb %ah, (%rbp,%rbx,4)
incq %rbx
cmpl %ebx, 0x10(%rsp)
jne 0x2d4f8
jmp 0x2da5b
cmpq $0x3, %rcx
sete %al
cmpl $0x0, (%rsp)
jle 0x2da5b
negb %al
xorl %ecx, %ecx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, %xmm2
por 0xffb6(%rip), %xmm2     # 0x3d500
movdqa 0x60(%rsp), %xmm1
pxor %xmm7, %xmm1
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
movd %xmm5, %edx
testb $0x1, %dl
je 0x2d5a1
movb %al, -0x3c(%r14,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
movd %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d5cb
movb %al, -0x38(%r14,%rcx,4)
movdqa %xmm0, %xmm3
por 0xff19(%rip), %xmm3     # 0x3d4f0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
movd %xmm5, %edx
shrl $0x10, %edx
testb $0x1, %dl
je 0x2d624
movb %al, -0x34(%r14,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
movd %xmm2, %edx
shrl $0x18, %edx
testb $0x1, %dl
je 0x2d659
movb %al, -0x30(%r14,%rcx,4)
movdqa %xmm0, %xmm2
por 0xfe7b(%rip), %xmm2     # 0x3d4e0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x2, %xmm5, %edx
testb $0x1, %dl
je 0x2d6b7
movb %al, -0x2c(%r14,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x2, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d6e2
movb %al, -0x28(%r14,%rcx,4)
movdqa %xmm0, %xmm3
por 0xfde2(%rip), %xmm3     # 0x3d4d0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x3, %xmm5, %edx
testb $0x1, %dl
je 0x2d739
movb %al, -0x24(%r14,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x3, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d76f
movb %al, -0x20(%r14,%rcx,4)
movdqa %xmm0, %xmm2
por 0xfd45(%rip), %xmm2     # 0x3d4c0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x4, %xmm5, %edx
testb $0x1, %dl
je 0x2d7cd
movb %al, -0x1c(%r14,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x4, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d7f8
movb %al, -0x18(%r14,%rcx,4)
movdqa %xmm0, %xmm3
por 0xfcac(%rip), %xmm3     # 0x3d4b0
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm2     # xmm2 = xmm4[0,0,2,2]
pcmpeqd %xmm1, %xmm3
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
movdqa %xmm3, %xmm5
pand %xmm2, %xmm5
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm4, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x5, %xmm5, %edx
testb $0x1, %dl
je 0x2d84f
movb %al, -0x14(%r14,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm3, %xmm3     # xmm3 = xmm3[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm3
pshufhw $0x84, %xmm4, %xmm2     # xmm2 = xmm4[0,1,2,3,4,5,4,6]
por %xmm3, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x5, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d885
movb %al, -0x10(%r14,%rcx,4)
movdqa %xmm0, %xmm2
por 0xfc0f(%rip), %xmm2     # 0x3d4a0
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm4
pcmpgtd %xmm1, %xmm4
pshufd $0xa0, %xmm4, %xmm3     # xmm3 = xmm4[0,0,2,2]
pshuflw $0xe8, %xmm3, %xmm5     # xmm5 = xmm3[0,2,2,3,4,5,6,7]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm2, %xmm6     # xmm6 = xmm2[0,2,2,3,4,5,6,7]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm4, %xmm5     # xmm5 = xmm4[0,2,2,3,4,5,6,7]
por %xmm6, %xmm5
pxor %xmm8, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x6, %xmm5, %edx
testb $0x1, %dl
je 0x2d8e3
movb %al, -0xc(%r14,%rcx,4)
pand %xmm3, %xmm2
por %xmm4, %xmm2
packssdw %xmm2, %xmm2
pxor %xmm8, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm2
pextrw $0x6, %xmm2, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d90e
movb %al, -0x8(%r14,%rcx,4)
por 0xfb7a(%rip), %xmm0     # 0x3d490
pxor %xmm7, %xmm0
movdqa %xmm0, %xmm3
pcmpgtd %xmm1, %xmm3
pshufd $0xa0, %xmm3, %xmm2     # xmm2 = xmm3[0,0,2,2]
pcmpeqd %xmm1, %xmm0
pshufd $0xf5, %xmm0, %xmm0     # xmm0 = xmm0[1,1,3,3]
movdqa %xmm0, %xmm4
pand %xmm2, %xmm4
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm1, %xmm4
packssdw %xmm4, %xmm3
pxor %xmm8, %xmm3
packssdw %xmm3, %xmm3
packsswb %xmm3, %xmm3
pextrw $0x7, %xmm3, %edx
testb $0x1, %dl
je 0x2d961
movb %al, -0x4(%r14,%rcx,4)
pshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm0, %xmm0     # xmm0 = xmm0[0,1,2,3,4,5,4,6]
pand %xmm2, %xmm0
pshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
por %xmm0, %xmm1
pxor %xmm8, %xmm1
packssdw %xmm1, %xmm0
packsswb %xmm0, %xmm0
pextrw $0x7, %xmm0, %edx
shrl $0x8, %edx
testb $0x1, %dl
je 0x2d996
movb %al, (%r14,%rcx,4)
addq $0x10, %rcx
cmpq %rcx, 0x58(%rsp)
jne 0x2d534
jmp 0x2da5b
cmpl $0x0, (%rsp)
jle 0x2da5b
movq 0xb8(%r13), %rcx
movq 0xc0(%r13), %rax
xorl %r15d, %r15d
cmpq %rax, %rcx
jae 0x2d9dc
leaq 0x1(%rcx), %rsi
movq %rsi, 0xb8(%r13)
movb (%rcx), %dl
movq %rsi, %rcx
jmp 0x2da48
cmpl $0x0, 0x30(%r13)
je 0x2da0f
movq 0x28(%r13), %rdi
movl 0x34(%r13), %edx
movq 0xb8(%rsp), %rbx
movq %rbx, %rsi
callq *0x10(%r13)
testl %eax, %eax
je 0x2da13
cltq
addq %rbx, %rax
movb (%rbx), %dl
movq 0x88(%rsp), %rcx
jmp 0x2da2d
xorl %edx, %edx
jmp 0x2da48
movl $0x0, 0x30(%r13)
movb $0x0, 0x38(%r13)
xorl %edx, %edx
movq 0x88(%rsp), %rcx
movq %rcx, %rax
movdqa 0xe8eb(%rip), %xmm7     # 0x3c320
pcmpeqd %xmm8, %xmm8
movq %rax, 0xc0(%r13)
movq %rcx, 0xb8(%r13)
movb %dl, (%rbp,%r15,4)
incq %r15
cmpl %r15d, 0x10(%rsp)
jne 0x2d9c5
movq 0x50(%rsp), %rcx
incq %rcx
incq %r14
addq $0x2, %r12
incq %rbp
addq $0x2, 0x90(%rsp)
cmpq $0x4, %rcx
jne 0x2d233
cmpl $0x4, 0x1c(%rsp)
movq 0xb0(%rsp), %rbx
movq 0xa8(%rsp), %r14
movq 0xa0(%rsp), %r15
movq 0x30(%rsp), %rdi
jb 0x2dc3b
movq 0x80(%rsp), %rax
cmpl $0x10, (%rax)
jne 0x2db7b
cmpl $0x0, (%rsp)
jle 0x2dc3b
movq 0x48(%rsp), %rax
addl 0x20(%rsp), %eax
movq 0x38(%rsp), %rdx
addl 0x28(%rsp), %edx
imull %eax, %edx
xorl %eax, %eax
movss 0xf982(%rip), %xmm0     # 0x3d464
movss 0xe71a(%rip), %xmm1     # 0x3c204
pxor %xmm2, %xmm2
movzwl 0x6(%rdi,%rax,8), %ecx
testl %ecx, %ecx
je 0x2db6a
cmpl $0xffff, %ecx           # imm = 0xFFFF
je 0x2db6a
movzwl %cx, %ecx
xorps %xmm3, %xmm3
cvtsi2ss %ecx, %xmm3
divss %xmm0, %xmm3
movaps %xmm1, %xmm4
divss %xmm3, %xmm4
movaps %xmm1, %xmm3
subss %xmm4, %xmm3
mulss %xmm0, %xmm3
movd (%rdi,%rax,8), %xmm5
punpcklwd %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
cvtdq2ps %xmm5, %xmm5
movaps %xmm4, %xmm6
shufps $0x0, %xmm4, %xmm6      # xmm6 = xmm6[0,0],xmm4[0,0]
mulps %xmm5, %xmm6
movaps %xmm3, %xmm5
shufps $0x0, %xmm3, %xmm5      # xmm5 = xmm5[0,0],xmm3[0,0]
addps %xmm6, %xmm5
cvttps2dq %xmm5, %xmm5
pshuflw $0xe8, %xmm5, %xmm5     # xmm5 = xmm5[0,2,2,3,4,5,6,7]
movd %xmm5, (%rdi,%rax,8)
movzwl 0x4(%rdi,%rax,8), %ecx
xorps %xmm5, %xmm5
cvtsi2ss %ecx, %xmm5
mulss %xmm4, %xmm5
addss %xmm3, %xmm5
cvttss2si %xmm5, %ecx
movw %cx, 0x4(%rdi,%rax,8)
incq %rax
cmpq %rax, %rdx
jne 0x2daee
jmp 0x2dc3b
cmpl $0x0, (%rsp)
jle 0x2dc3b
movq 0x48(%rsp), %rax
addl 0x20(%rsp), %eax
movq 0x38(%rsp), %rdx
addl 0x28(%rsp), %edx
imull %eax, %edx
xorl %eax, %eax
movss 0xe6a8(%rip), %xmm0     # 0x3c24c
movss 0xe658(%rip), %xmm1     # 0x3c204
movzbl 0x3(%rdi,%rax,4), %ecx
testl %ecx, %ecx
je 0x2dc2f
cmpl $0xff, %ecx
je 0x2dc2f
movzbl %cl, %ecx
xorps %xmm2, %xmm2
cvtsi2ss %ecx, %xmm2
divss %xmm0, %xmm2
movaps %xmm1, %xmm3
divss %xmm2, %xmm3
movaps %xmm1, %xmm2
subss %xmm3, %xmm2
mulss %xmm0, %xmm2
movzbl (%rdi,%rax,4), %ecx
xorps %xmm4, %xmm4
cvtsi2ss %ecx, %xmm4
mulss %xmm3, %xmm4
addss %xmm2, %xmm4
cvttss2si %xmm4, %ecx
movb %cl, (%rdi,%rax,4)
movzbl 0x1(%rdi,%rax,4), %ecx
xorps %xmm4, %xmm4
cvtsi2ss %ecx, %xmm4
mulss %xmm3, %xmm4
addss %xmm2, %xmm4
cvttss2si %xmm4, %ecx
movb %cl, 0x1(%rdi,%rax,4)
movzbl 0x2(%rdi,%rax,4), %ecx
xorps %xmm4, %xmm4
cvtsi2ss %ecx, %xmm4
mulss %xmm3, %xmm4
addss %xmm2, %xmm4
cvttss2si %xmm4, %ecx
movb %cl, 0x2(%rdi,%rax,4)
incq %rax
cmpq %rax, %rdx
jne 0x2dbac
testl $0xfffffffb, 0x18(%rsp) # imm = 0xFFFFFFFB
je 0x2dc6d
movq 0x80(%rsp), %rax
cmpl $0x10, (%rax)
movl 0xc(%rsp), %ebp
movl $0x4, %esi
jne 0x2dc73
movl 0x18(%rsp), %edx
movl 0x8(%rsp), %ecx
movl %ebp, %r8d
callq 0x34181
jmp 0x2dc83
movl 0xc(%rsp), %ebp
jmp 0x2dc8f
movl 0x18(%rsp), %edx
movl 0x8(%rsp), %ecx
movl %ebp, %r8d
callq 0x33d4f
movq %rax, %rdi
testq %rax, %rax
je 0x2c8ff
testq %r15, %r15
je 0x2dc9b
movl $0x4, (%r15)
movl %ebp, (%r14)
movl 0x8(%rsp), %eax
movl %eax, (%rbx)
jmp 0x2c901