// File: /workspace/github_c_makefile_star2_O3/wkoszek[P]mini_gzip/miniz.c
// Function: tinfl_decompress
tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags)
{
  static const int s_length_base[31] = { 3,4,5,6,7,8,9,10,11,13, 15,17,19,23,27,31,35,43,51,59, 67,83,99,115,131,163,195,227,258,0,0 };
  static const int s_length_extra[31]= { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };
  static const int s_dist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};
  static const int s_dist_extra[32] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
  static const mz_uint8 s_length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };
  static const int s_min_table_sizes[3] = { 257, 1, 4 };

  tinfl_status status = TINFL_STATUS_FAILED; mz_uint32 num_bits, dist, counter, num_extra; tinfl_bit_buf_t bit_buf;
  const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size;
  mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size;
  size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start;

  // Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter).
  if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) { *pIn_buf_size = *pOut_buf_size = 0; return TINFL_STATUS_BAD_PARAM; }

  num_bits = r->m_num_bits; bit_buf = r->m_bit_buf; dist = r->m_dist; counter = r->m_counter; num_extra = r->m_num_extra; dist_from_out_buf_start = r->m_dist_from_out_buf_start;
  TINFL_CR_BEGIN

  bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; r->m_z_adler32 = r->m_check_adler32 = 1;
  if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)
  {
    TINFL_GET_BYTE(1, r->m_zhdr0); TINFL_GET_BYTE(2, r->m_zhdr1);
    counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8));
    if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4)))));
    if (counter) { TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); }
  }

  do
  {
    TINFL_GET_BITS(3, r->m_final, 3); r->m_type = r->m_final >> 1;
    if (r->m_type == 0)
    {
      TINFL_SKIP_BITS(5, num_bits & 7);
      for (counter = 0; counter < 4; ++counter) { if (num_bits) TINFL_GET_BITS(6, r->m_raw_header[counter], 8); else TINFL_GET_BYTE(7, r->m_raw_header[counter]); }
      if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) { TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); }
      while ((counter) && (num_bits))
      {
        TINFL_GET_BITS(51, dist, 8);
        while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); }
        *pOut_buf_cur++ = (mz_uint8)dist;
        counter--;
      }
      while (counter)
      {
        size_t n; while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); }
        while (pIn_buf_cur >= pIn_buf_end)
        {
          if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT)
          {
            TINFL_CR_RETURN(38, TINFL_STATUS_NEEDS_MORE_INPUT);
          }
          else
          {
            TINFL_CR_RETURN_FOREVER(40, TINFL_STATUS_FAILED);
          }
        }
        n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter);
        TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); pIn_buf_cur += n; pOut_buf_cur += n; counter -= (mz_uint)n;
      }
    }
    else if (r->m_type == 3)
    {
      TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED);
    }
    else
    {
      if (r->m_type == 1)
      {
        mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i;
        r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);
        for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8;
      }
      else
      {
        for (counter = 0; counter < 3; counter++) { TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); r->m_table_sizes[counter] += s_min_table_sizes[counter]; }
        MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); for (counter = 0; counter < r->m_table_sizes[2]; counter++) { mz_uint s; TINFL_GET_BITS(14, s, 3); r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; }
        r->m_table_sizes[2] = 19;
      }
      for ( ; (int)r->m_type >= 0; r->m_type--)
      {
        int tree_next, tree_cur; tinfl_huff_table *pTable;
        mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; pTable = &r->m_tables[r->m_type]; MZ_CLEAR_OBJ(total_syms); MZ_CLEAR_OBJ(pTable->m_look_up); MZ_CLEAR_OBJ(pTable->m_tree);
        for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) total_syms[pTable->m_code_size[i]]++;
        used_syms = 0, total = 0; next_code[0] = next_code[1] = 0;
        for (i = 1; i <= 15; ++i) { used_syms += total_syms[i]; next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); }
        if ((65536 != total) && (used_syms > 1))
        {
          TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED);
        }
        for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index)
        {
          mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index]; if (!code_size) continue;
          cur_code = next_code[code_size]++; for (l = code_size; l > 0; l--, cur_code >>= 1) rev_code = (rev_code << 1) | (cur_code & 1);
          if (code_size <= TINFL_FAST_LOOKUP_BITS) { mz_int16 k = (mz_int16)((code_size << 9) | sym_index); while (rev_code < TINFL_FAST_LOOKUP_SIZE) { pTable->m_look_up[rev_code] = k; rev_code += (1 << code_size); } continue; }
          if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) { pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; }
          rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1);
          for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--)
          {
            tree_cur -= ((rev_code >>= 1) & 1);
            if (!pTable->m_tree[-tree_cur - 1]) { pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; } else tree_cur = pTable->m_tree[-tree_cur - 1];
          }
          tree_cur -= ((rev_code >>= 1) & 1); pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index;
        }
        if (r->m_type == 2)
        {
          for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]); )
          {
            mz_uint s; TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); if (dist < 16) { r->m_len_codes[counter++] = (mz_uint8)dist; continue; }
            if ((dist == 16) && (!counter))
            {
              TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED);
            }
            num_extra = "\02\03\07"[dist - 16]; TINFL_GET_BITS(18, s, num_extra); s += "\03\03\013"[dist - 16];
            TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); counter += s;
          }
          if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter)
          {
            TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED);
          }
          TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]); TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]);
        }
      }
      for ( ; ; )
      {
        mz_uint8 *pSrc;
        for ( ; ; )
        {
          if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2))
          {
            TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]);
            if (counter >= 256)
              break;
            while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); }
            *pOut_buf_cur++ = (mz_uint8)counter;
          }
          else
          {
            int sym2; mz_uint code_len;
#if TINFL_USE_64BIT_BITBUF
            if (num_bits < 30) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); pIn_buf_cur += 4; num_bits += 32; }
#else
            if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; }
#endif
            if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)
              code_len = sym2 >> 9;
            else
            {
              code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0);
            }
            counter = sym2; bit_buf >>= code_len; num_bits -= code_len;
            if (counter & 256)
              break;

#if !TINFL_USE_64BIT_BITBUF
            if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; }
#endif
            if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)
              code_len = sym2 >> 9;
            else
            {
              code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0);
            }
            bit_buf >>= code_len; num_bits -= code_len;

            pOut_buf_cur[0] = (mz_uint8)counter;
            if (sym2 & 256)
            {
              pOut_buf_cur++;
              counter = sym2;
              break;
            }
            pOut_buf_cur[1] = (mz_uint8)sym2;
            pOut_buf_cur += 2;
          }
        }
        if ((counter &= 511) == 256) break;

        num_extra = s_length_extra[counter - 257]; counter = s_length_base[counter - 257];
        if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(25, extra_bits, num_extra); counter += extra_bits; }

        TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]);
        num_extra = s_dist_extra[dist]; dist = s_dist_base[dist];
        if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(27, extra_bits, num_extra); dist += extra_bits; }

        dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start;
        if ((dist > dist_from_out_buf_start) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))
        {
          TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED);
        }

        pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask);

        if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end)
        {
          while (counter--)
          {
            while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); }
            *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask];
          }
          continue;
        }
#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES
        else if ((counter >= 9) && (counter <= dist))
        {
          const mz_uint8 *pSrc_end = pSrc + (counter & ~7);
          do
          {
            ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0];
            ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1];
            pOut_buf_cur += 8;
          } while ((pSrc += 8) < pSrc_end);
          if ((counter &= 7) < 3)
          {
            if (counter)
            {
              pOut_buf_cur[0] = pSrc[0];
              if (counter > 1)
                pOut_buf_cur[1] = pSrc[1];
              pOut_buf_cur += counter;
            }
            continue;
          }
        }
#endif
        do
        {
          pOut_buf_cur[0] = pSrc[0];
          pOut_buf_cur[1] = pSrc[1];
          pOut_buf_cur[2] = pSrc[2];
          pOut_buf_cur += 3; pSrc += 3;
        } while ((int)(counter -= 3) > 2);
        if ((int)counter > 0)
        {
          pOut_buf_cur[0] = pSrc[0];
          if ((int)counter > 1)
            pOut_buf_cur[1] = pSrc[1];
          pOut_buf_cur += counter;
        }
      }
    }
  } while (!(r->m_final & 1));
  if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)
  {
    TINFL_SKIP_BITS(32, num_bits & 7); for (counter = 0; counter < 4; ++counter) { mz_uint s; if (num_bits) TINFL_GET_BITS(41, s, 8); else TINFL_GET_BYTE(42, s); r->m_z_adler32 = (r->m_z_adler32 << 8) | s; }
  }
  TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE);
  TINFL_CR_FINISH

common_exit:
  r->m_num_bits = num_bits; r->m_bit_buf = bit_buf; r->m_dist = dist; r->m_counter = counter; r->m_num_extra = num_extra; r->m_dist_from_out_buf_start = dist_from_out_buf_start;
  *pIn_buf_size = pIn_buf_cur - pIn_buf_next; *pOut_buf_size = pOut_buf_cur - pOut_buf_next;
  if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0))
  {
    const mz_uint8 *ptr = pOut_buf_next; size_t buf_len = *pOut_buf_size;
    mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; size_t block_len = buf_len % 5552;
    while (buf_len)
    {
      for (i = 0; i + 7 < block_len; i += 8, ptr += 8)
      {
        s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1;
        s1 += ptr[4], s2 += s1; s1 += ptr[5], s2 += s1; s1 += ptr[6], s2 += s1; s1 += ptr[7], s2 += s1;
      }
      for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1;
      s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552;
    }
    r->m_check_adler32 = (s2 << 16) + s1; if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) status = TINFL_STATUS_ADLER32_MISMATCH;
  }
  return status;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rcx, %r12
movl 0x180(%rsp), %eax
andl $0x4, %eax
xorl %ecx, %ecx
negl %eax
sbbq %rcx, %rcx
cmpq %r12, %r8
jb 0x25f4
movq %r8, %r14
movq %rsi, %rbp
movq %rdi, %r15
movq (%r9), %rsi
addq %r8, %rsi
movq %r12, %rax
notq %rax
movq %rsi, 0x50(%rsp)
addq %rsi, %rax
orq %rax, %rcx
leaq 0x1(%rcx), %rdi
movq %rdi, %rax
andq %rcx, %rax
jne 0x25f4
movq %rcx, 0x80(%rsp)
movq %rdx, 0x78(%rsp)
movq %r9, 0x98(%rsp)
movl (%r15), %eax
movl 0x4(%r15), %r11d
movq 0x40(%r15), %r13
movl 0x28(%r15), %r10d
movl 0x2c(%r15), %ebx
movl 0x30(%r15), %r9d
movq 0x48(%r15), %rcx
movq %rcx, 0x40(%rsp)
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
xorl %edx, %edx
cmpq $0x35, %rax
movq %rbp, 0x90(%rsp)
ja 0x29a2
movq 0x78(%rsp), %rcx
movq (%rcx), %rcx
leaq (%rcx,%rbp), %rsi
movq %rsi, 0x10(%rsp)
leaq 0x5c0c(%rip), %rsi      # 0x81e0
movslq (%rsi,%rax,4), %r8
addq %rsi, %r8
movq %r15, 0x48(%rsp)
jmpq *%r8
movq %r14, %r12
xorl %esi, %esi
movl 0x180(%rsp), %edi
jmp 0x2be7
xorl %eax, %eax
movq %rax, (%r9)
movq %rax, (%rdx)
movl $0xfffffffd, %eax       # imm = 0xFFFFFFFD
jmp 0x2d72
movq %r12, 0x20(%rsp)
movq %r14, %r12
movl %ebx, %ecx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2d84
movq %r12, 0x20(%rsp)
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %rcx
jmp 0x31e0
movq %r12, 0x20(%rsp)
testq %rcx, %rcx
jle 0x29e1
movq %rbp, %rax
incq %rbp
movzbl (%rax), %esi
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2f8b
movl $0x0, 0xc(%rsp)
movb $0x1, %dl
movq %r14, %r12
movb $0x1, %sil
jmp 0x25e8
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x39da
movzbl (%rbp), %esi
incq %rbp
jmp 0x39e2
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x3e69
movzbl (%rbp), %esi
incq %rbp
jmp 0x3e75
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0xc(%r15)
movl $0x0, 0x8(%r15)
movl $0x1, 0x20(%r15)
movl 0x180(%rsp), %eax
testb $0x1, %al
jne 0x29b3
movq %r12, 0x20(%rsp)
xorl %r13d, %r13d
movq %r14, %r12
xorl %r9d, %r9d
xorl %ebx, %ebx
xorl %r10d, %r10d
xorl %r11d, %r11d
jmp 0x2b83
movq %r12, 0x20(%rsp)
movq %r14, %r12
movl 0x180(%rsp), %edi
jmp 0x31d0
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x3339
movzbl (%rbp), %esi
incq %rbp
jmp 0x3341
testq %rcx, %rcx
jle 0x29f5
movq %r12, 0x20(%rsp)
movq %rbp, %rax
incq %rbp
movzbl (%rax), %esi
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2a12
movq %r12, 0x20(%rsp)
testq %rcx, %rcx
jle 0x2a27
movq %rbp, %rax
incq %rbp
movb (%rax), %al
movb %al, 0x2930(%r15,%rbx)
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2fb3
testq %rcx, %rcx
jle 0x2a3b
movq %rbp, %rax
incq %rbp
movzbl (%rax), %eax
movl %eax, 0x8(%r15)
movq 0x10(%rsp), %rcx
jmp 0x2ad0
testq %rcx, %rcx
jle 0x2ad9
movzbl (%rbp), %esi
incq %rbp
jmp 0x2aea
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x2e61
movzbl (%rbp), %esi
incq %rbp
jmp 0x2dd8
movq %r12, 0x20(%rsp)
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x3f1d
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x30f9
movzbl (%rbp), %esi
incq %rbp
jmp 0x3101
testq %rcx, %rcx
jle 0x2a42
movq %rbp, %rax
incq %rbp
movzbl (%rax), %esi
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2a5a
testq %rcx, %rcx
jle 0x2a6f
movq %rbp, %rax
incq %rbp
movzbl (%rax), %esi
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x4046
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x40f9
movzbl (%rbp), %esi
incq %rbp
jmp 0x4105
testq %rcx, %rcx
jle 0x2a83
movq %rbp, %rax
incq %rbp
movzbl (%rax), %esi
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x4068
movq %r12, 0x20(%rsp)
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x3198
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x2e9c
movzbl (%rbp), %esi
incq %rbp
jmp 0x2e81
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x3bfd
movzbl (%rbp), %esi
incq %rbp
jmp 0x3c09
movq %r12, 0x20(%rsp)
movq %r14, %r12
testq %rcx, %rcx
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jle 0x41b0
movzbl (%rbp), %esi
incq %rbp
jmp 0x41bc
movq %r12, 0x20(%rsp)
testq %rcx, %rcx
jle 0x2a97
movq %rbp, %rax
incq %rbp
movzbl (%rax), %esi
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x3176
movq %r14, %r12
xorl %esi, %esi
movl 0x180(%rsp), %edi
jmp 0x2bea
testq %rcx, %rcx
movq 0x10(%rsp), %rcx
jle 0x2aab
movq %rbp, %rax
incq %rbp
movzbl (%rax), %eax
movl %eax, 0x8(%r15)
xorl %r13d, %r13d
xorl %r9d, %r9d
xorl %ebx, %ebx
xorl %r10d, %r10d
xorl %r11d, %r11d
jmp 0x2ad0
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2f83
xorl %esi, %esi
movl 0x180(%rsp), %edi
testb $0x2, %dil
movq 0x10(%rsp), %r8
jne 0x2bc4
movq %r12, 0x20(%rsp)
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
movq %r14, %r12
jmp 0x2ed8
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2f41
movq 0x10(%rsp), %rcx
jmp 0x2ab9
xorl %esi, %esi
movl 0x180(%rsp), %edi
testb $0x2, %dil
movq 0x10(%rsp), %r8
jne 0x2bd5
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
movq %r14, %r12
jmp 0x3f09
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x403e
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x3ff0
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x316e
xorl %r13d, %r13d
xorl %r9d, %r9d
xorl %ebx, %ebx
xorl %r10d, %r10d
xorl %r11d, %r11d
movl 0x180(%rsp), %eax
testb $0x2, %al
jne 0x2bab
movl $0x0, 0x8(%r15)
cmpq %rcx, %rbp
jb 0x27d4
xorl %esi, %esi
movl 0x180(%rsp), %eax
testb $0x2, %al
jne 0x2b94
movl 0x8(%r15), %eax
movl %eax, %ecx
shll $0x8, %ecx
orl %esi, %ecx
imulq $0x8421085, %rcx, %rdx  # imm = 0x8421085
shrq $0x20, %rdx
movl %ecx, %r8d
subl %edx, %r8d
shrl %r8d
addl %edx, %r8d
shrl $0x4, %r8d
movl %r8d, %edx
shll $0x5, %edx
subl %edx, %r8d
addl %ecx, %r8d
movl %esi, %ecx
andl $0x20, %ecx
orl %r8d, %ecx
movl %eax, %edx
andl $0xf, %edx
xorl $0x8, %edx
orl %ecx, %edx
setne %dl
movl %esi, 0xc(%r15)
movl 0x180(%rsp), %ecx
testb $0x4, %cl
jne 0x2b75
movl %eax, %ecx
shrl $0x4, %ecx
movl $0x100, %eax            # imm = 0x100
shlq %cl, %rax
cmpl $0x8001, %eax           # imm = 0x8001
setae %cl
cmpq %rax, %rdi
setb %al
orb %cl, %al
xorl %ebx, %ebx
orb %dl, %al
je 0x2b7b
movl $0x1, %ebx
movl $0x24, %eax
xorl %edx, %edx
jmp 0x25e3
xorl %ebx, %ebx
testb %dl, %dl
jne 0x2b64
movq %r12, 0x20(%rsp)
movq %r14, %r12
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x2fce
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x2, %eax
movq %r14, %r12
jmp 0x25e8
movb $0x1, %dl
movl $0x1, %eax
xorl %esi, %esi
movq %r14, %r12
movl $0x1, 0xc(%rsp)
jmp 0x25e8
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x5, %eax
jmp 0x2be4
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x20, %eax
movq %r14, %r12
movl %eax, (%r15)
movl %r11d, 0x4(%r15)
movq %r13, 0x40(%r15)
movl %r10d, 0x28(%r15)
movl %ebx, 0x2c(%r15)
movl %r9d, 0x30(%r15)
movq 0x40(%rsp), %rax
movq %rax, 0x48(%r15)
subq 0x90(%rsp), %rbp
movq 0x78(%rsp), %rax
movq %rbp, (%rax)
subq %r14, %r12
movq 0x98(%rsp), %rax
movq %r12, (%rax)
testb $0x9, %dil
sete %al
xorb $0x1, %dl
orb %al, %dl
jne 0x2d6e
movl %edi, %r11d
movl 0x20(%r15), %ecx
movzwl %cx, %edi
shrl $0x10, %ecx
testq %r12, %r12
je 0x2d42
movq %r12, %rax
shrq $0x4, %rax
movabsq $0x179baa6bb6398b7, %rdx # imm = 0x179BAA6BB6398B7
mulq %rdx
shrq %rdx
imulq $0x15b0, %rdx, %rdx     # imm = 0x15B0
movq %r12, %rax
subq %rdx, %rax
movl $0x80078071, %edx       # imm = 0x80078071
xorl %r8d, %r8d
cmpq $0x8, %rax
jb 0x2cea
movzbl (%r14,%r8), %r9d
addl %edi, %r9d
addl %r9d, %ecx
movzbl 0x1(%r14,%r8), %edi
addl %r9d, %edi
addl %edi, %ecx
movzbl 0x2(%r14,%r8), %r9d
addl %edi, %r9d
addl %r9d, %ecx
movzbl 0x3(%r14,%r8), %edi
addl %r9d, %edi
addl %edi, %ecx
movzbl 0x4(%r14,%r8), %r9d
addl %edi, %r9d
addl %r9d, %ecx
movzbl 0x5(%r14,%r8), %edi
addl %r9d, %edi
addl %edi, %ecx
movzbl 0x6(%r14,%r8), %r9d
addl %edi, %r9d
addl %r9d, %ecx
movzbl 0x7(%r14,%r8), %edi
addl %r9d, %edi
addl %edi, %ecx
addq $0x8, %r8
leal 0x7(%r8), %r9d
cmpl %eax, %r9d
jb 0x2c7f
addq %r8, %r14
movq %rax, %r9
subq %r8, %r9
jbe 0x2d0a
xorl %r8d, %r8d
movzbl (%r14,%r8), %r10d
addl %r10d, %edi
addl %edi, %ecx
incq %r8
cmpq %r8, %r9
jne 0x2cf5
addq %r9, %r14
movl %edi, %r8d
imulq %rdx, %r8
shrq $0x2f, %r8
imull $0xfff1, %r8d, %r8d     # imm = 0xFFF1
subl %r8d, %edi
movl %ecx, %r8d
imulq %rdx, %r8
shrq $0x2f, %r8
imull $0xfff1, %r8d, %r8d     # imm = 0xFFF1
subl %r8d, %ecx
subq %rax, %r12
movl $0x15b0, %eax           # imm = 0x15B0
jne 0x2c76
shll $0x10, %ecx
orl %edi, %ecx
movl %ecx, 0x20(%r15)
testb %sil, %sil
movl 0xc(%rsp), %eax
je 0x2d72
xorl %eax, %eax
testb $0x1, %r11b
je 0x2d72
xorl %eax, %eax
cmpl 0x10(%r15), %ecx
sete %al
leal -0x2(,%rax,2), %eax
jmp 0x2d72
movl 0xc(%rsp), %eax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq 0x50(%rsp), %r12
movq 0x40(%rsp), %rax
movq 0x80(%rsp), %rbx
jae 0x2dc0
movq %rax, %rsi
incq %rax
movl %r10d, %edx
subq %rdx, %rsi
andq %rbx, %rsi
movq 0x20(%rsp), %rdx
movb (%rdx,%rsi), %dl
movb %dl, (%r12)
incq %r12
movq %rax, 0x40(%rsp)
jmp 0x422f
movl $0x2, 0xc(%rsp)
movb $0x1, %dl
movl $0x35, %eax
xorl %esi, %esi
movl %ecx, %ebx
jmp 0x2be7
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
movl %ebx, %esi
cmpl $0xf, %r11d
jae 0x3b11
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0x1cb0(%r15,%rax,2), %eax
testl %eax, %eax
js 0x2e1b
movzwl %ax, %ecx
cmpl $0x200, %ecx            # imm = 0x200
jb 0x2e58
shrl $0x9, %eax
cmpl %eax, %r11d
jae 0x2e51
jmp 0x2e58
cmpl $0xb, %r11d
jb 0x2e58
movl $0xc, %ecx
leal -0x2(%rcx), %edx
notl %eax
cltq
btq %rdx, %r13
adcq $0x0, %rax
movswl 0x24b0(%r15,%rax,2), %eax
testl %eax, %eax
jns 0x2e4c
leal 0x1(%rcx), %edx
cmpl %ecx, %r11d
movl %edx, %ecx
jae 0x2e26
testw %ax, %ax
js 0x2e58
movl %ebx, %esi
jmp 0x3b11
cmpq %r8, %rbp
jb 0x27fd
xorl %esi, %esi
testb $0x2, %dil
je 0x2dd8
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x10, %eax
jmp 0x2be7
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
cmpl %r9d, %r11d
jae 0x2eb8
cmpq %r8, %rbp
jb 0x2919
xorl %esi, %esi
testb $0x2, %dil
je 0x2e81
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x19, %eax
jmp 0x2be7
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %r9d, %ecx
shll %cl, %eax
notl %eax
movl %r13d, %edx
shrq %cl, %r13
andl %eax, %edx
addl %ebx, %edx
subl %r9d, %r11d
movl %edx, %ebx
jmp 0x3f4c
movl %r11d, %ecx
andb $0x7, %cl
shrq %cl, %r13
andl $-0x8, %r11d
xorl %ebx, %ebx
cmpl $0x3, %ebx
ja 0x2efd
testl %r11d, %r11d
je 0x2f24
cmpl $0x7, %r11d
ja 0x2fa1
jmp 0x2f68
movzwl 0x2930(%r15), %ebx
movzwl 0x2932(%r15), %eax
xorl %ebx, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x313b
movl $0x27, %eax
jmp 0x312e
xorl %r11d, %r11d
cmpq %r8, %rbp
jae 0x2f41
movb (%rbp), %al
incq %rbp
movl %ebx, %ecx
movb %al, 0x2930(%r15,%rcx)
xorl %r11d, %r11d
jmp 0x2fb3
testb $0x2, %dil
jne 0x2f54
movl %ebx, %eax
movb $0x0, 0x2930(%r15,%rax)
jmp 0x2fb3
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x7, %eax
jmp 0x30e9
cmpq %r8, %rbp
jae 0x2f83
movzbl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
incq %rbp
orq %rax, %r13
addl $0x8, %r11d
jmp 0x2fa1
xorl %esi, %esi
testb $0x2, %dil
jne 0x2fba
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
leal 0x8(%r11), %eax
cmpl $-0x9, %r11d
movl %eax, %r11d
ja 0x2f68
movl %ebx, %eax
movb %r13b, 0x2930(%r15,%rax)
shrq $0x8, %r13
addl $-0x8, %r11d
incl %ebx
jmp 0x2ee7
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x6, %eax
jmp 0x2be7
cmpl $0x2, %r11d
jbe 0x30f0
movl %r13d, %ecx
andl $0x7, %ecx
movl %ecx, 0x18(%r15)
shrq $0x3, %r13
addl $-0x3, %r11d
movl %ecx, %eax
shrl %eax
movl %eax, 0x1c(%r15)
cmpl $0x2, %ecx
jb 0x2ed8
cmpl $0x1, %eax
je 0x3015
xorl %edx, %edx
cmpl $0x3, %eax
jne 0x3290
movl $0xa, %eax
jmp 0x30e9
movq %rbp, 0x38(%rsp)
movl %r9d, 0x1c(%rsp)
leaq 0x50(%r15), %rdi
movabsq $0x2000000120, %rax     # imm = 0x2000000120
movq %rax, 0x34(%r15)
movaps 0x5dc8(%rip), %xmm0     # 0x8e00
movups %xmm0, 0xdf0(%r15)
movups %xmm0, 0xe00(%r15)
movl $0x90, %edx
movl $0x8, %esi
movq %r11, %r15
movq %r10, %rbp
callq 0x10a0
movq 0x10(%rsp), %r8
movq %rbp, %r10
movq %r15, %r11
movq 0x48(%rsp), %r15
movaps 0x5d9c(%rip), %xmm0     # 0x8e10
movups %xmm0, 0xe0(%r15)
movups %xmm0, 0xf0(%r15)
movups %xmm0, 0x100(%r15)
movups %xmm0, 0x110(%r15)
movups %xmm0, 0x120(%r15)
movups %xmm0, 0x130(%r15)
movups %xmm0, 0x140(%r15)
movdqa 0x5d6c(%rip), %xmm0     # 0x8e20
movdqu %xmm0, 0x150(%r15)
movabsq $0x707070707070707, %rax # imm = 0x707070707070707
movq %rax, 0x160(%r15)
movabsq $0x808080808080808, %rax # imm = 0x808080808080808
movq %rax, 0x168(%r15)
movl $0x1, %ecx
jmp 0x33ca
xorl %esi, %esi
jmp 0x2be7
cmpq %r8, %rbp
jb 0x283f
xorl %esi, %esi
testb $0x2, %dil
jne 0x311a
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
cmpl $0x3, %r11d
jae 0x2fd8
jmp 0x30f0
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x3, %eax
jmp 0x2be7
xorl %edx, %edx
jmp 0x30e9
movb %r10b, (%r12)
incq %r12
decl %ebx
testl %ebx, %ebx
je 0x314c
testl %r11d, %r11d
je 0x314c
cmpl $0x7, %r11d
ja 0x318c
jmp 0x3153
movq %r10, 0x30(%rsp)
jmp 0x31c7
cmpq %r8, %rbp
jae 0x316e
movzbl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
incq %rbp
orq %rax, %r13
addl $0x8, %r11d
jmp 0x318c
xorl %esi, %esi
testb $0x2, %dil
jne 0x31b3
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
leal 0x8(%r11), %eax
cmpl $-0x9, %r11d
movl %eax, %r11d
ja 0x3153
movzbl %r13b, %r10d
shrq $0x8, %r13
addl $-0x8, %r11d
cmpq 0x50(%rsp), %r12
jb 0x3132
movl $0x2, 0xc(%rsp)
movb $0x1, %dl
movl $0x34, %eax
jmp 0x30e9
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x33, %eax
jmp 0x2be7
testl %ebx, %ebx
je 0x3247
movq 0x30(%rsp), %r10
cmpq 0x50(%rsp), %r12
movq 0x10(%rsp), %rcx
jae 0x3268
cmpq %rcx, %rbp
jae 0x3258
movq %r10, 0x30(%rsp)
movq 0x50(%rsp), %rax
subq %r12, %rax
movq %rcx, %r15
subq %rbp, %r15
cmpq %r15, %rax
cmovbq %rax, %r15
movl %ebx, %eax
cmpq %rax, %r15
cmovaeq %rax, %r15
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movl %r9d, 0x1c(%rsp)
movq %r12, 0x28(%rsp)
movq %r11, %r12
callq 0x10e0
movl 0x180(%rsp), %edi
movq %r12, %r11
movq 0x28(%rsp), %r12
movl 0x1c(%rsp), %r9d
addq %r15, %rbp
addq %r15, %r12
subl %r15d, %ebx
movq 0x48(%rsp), %r15
jmp 0x31c7
xorl %ebx, %ebx
movq 0x30(%rsp), %r10
movq 0x10(%rsp), %r8
jmp 0x3ef4
testb $0x2, %dil
jne 0x327c
movl $0x28, %eax
jmp 0x312e
movl $0x2, 0xc(%rsp)
movb $0x1, %dl
movl $0x9, %eax
jmp 0x30e9
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x26, %eax
jmp 0x30e9
cmpl $0x2, %edx
ja 0x32e0
movl %edx, %esi
leaq 0x5c5d(%rip), %rax      # 0x8efb
movb (%rsi,%rax), %cl
movsbl %cl, %eax
cmpl %eax, %r11d
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jb 0x332e
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
shll %cl, %edi
movl %r13d, %r8d
movl %eax, %ecx
shrq %cl, %r13
notl %edi
andl %edi, %r8d
subl %eax, %r11d
leaq 0x522d(%rip), %rax      # 0x8500
addl (%rax,%rsi,4), %r8d
movl %r8d, 0x34(%r15,%rsi,4)
incl %edx
jmp 0x3290
leaq 0x1b90(%r15), %rdi
xorl %ebx, %ebx
movl $0x120, %edx            # imm = 0x120
xorl %esi, %esi
movq %rbp, 0x38(%rsp)
movl %r9d, %r15d
movq %r12, 0x28(%rsp)
movq %r11, %r12
movq %r10, %rbp
callq 0x10a0
movq %rbp, %r10
movq %r12, %r11
movq 0x28(%rsp), %r12
movl %r15d, %r9d
movq 0x48(%rsp), %r15
movq 0x38(%rsp), %rbp
movl 0x180(%rsp), %edi
movq 0x10(%rsp), %r8
jmp 0x337e
movl %edx, %ebx
cmpq %r8, %rbp
jb 0x2745
xorl %esi, %esi
testb $0x2, %dil
jne 0x336a
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
movl %ebx, %esi
leaq 0x5ba4(%rip), %rax      # 0x8efb
movb (%rsi,%rax), %cl
movsbl %cl, %eax
movl %ebx, %edx
cmpl %eax, %r11d
jae 0x32b5
jmp 0x332e
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0xb, %eax
jmp 0x2be7
cmpl 0x3c(%r15), %ebx
jae 0x33b4
cmpl $0x2, %r11d
jbe 0x39d1
movl %r13d, %eax
andb $0x7, %al
shrq $0x3, %r13
addl $-0x3, %r11d
movl %ebx, %ecx
leaq 0x563c(%rip), %rdx      # 0x89e0
movzbl (%rcx,%rdx), %ecx
movb %al, 0x1b90(%r15,%rcx)
incl %ebx
jmp 0x337e
movq %rbp, 0x38(%rsp)
movl %r9d, 0x1c(%rsp)
movl $0x13, 0x3c(%r15)
movl 0x1c(%r15), %ecx
movq 0x40(%rsp), %rax
testl %ecx, %ecx
js 0x3988
movq %r10, 0x30(%rsp)
movq %r12, 0x28(%rsp)
movq %r11, 0x58(%rsp)
movq %rax, 0x40(%rsp)
movq %r13, 0x60(%rsp)
movl %ecx, 0x74(%rsp)
movl %ecx, %ebp
imulq $0xda0, %rbp, %rax      # imm = 0xDA0
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax), %r15
addq $0x50, %r15
pxor %xmm0, %xmm0
movdqa %xmm0, 0xf0(%rsp)
movdqa %xmm0, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
movdqa %xmm0, 0xc0(%rsp)
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax), %r12
addq $0x170, %r12            # imm = 0x170
xorl %r13d, %r13d
movl $0xc80, %edx            # imm = 0xC80
movq %r12, %rdi
xorl %esi, %esi
callq 0x10a0
movq 0x48(%rsp), %rax
movl 0x34(%rax,%rbp,4), %ebp
testq %rbp, %rbp
je 0x3478
xorl %eax, %eax
movzbl (%r15,%rax), %ecx
incl 0xc0(%rsp,%rcx,4)
incq %rax
cmpq %rax, %rbp
jne 0x3464
movq $0x0, 0x100(%rsp)
xorl %ecx, %ecx
xorl %eax, %eax
movq 0x30(%rsp), %r10
movl 0xc4(%rsp,%rcx,4), %edx
addl %edx, %eax
addl %edx, %r13d
addl %r13d, %r13d
movl %r13d, 0x108(%rsp,%rcx,4)
incq %rcx
cmpq $0xf, %rcx
jne 0x348d
cmpl $0x10000, %r13d         # imm = 0x10000
setne %cl
cmpl $0x2, %eax
setae %al
testb %al, %cl
movq 0x58(%rsp), %r11
movq 0x10(%rsp), %r8
jne 0x39a3
testq %rbp, %rbp
movq 0x60(%rsp), %r13
je 0x396f
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
movdqa 0x5944(%rip), %xmm0     # 0x8e30
movdqa 0x594c(%rip), %xmm1     # 0x8e40
movdqa 0x5954(%rip), %xmm2     # 0x8e50
movdqa 0x58ec(%rip), %xmm3     # 0x8df0
movdqa 0x5954(%rip), %xmm4     # 0x8e60
pcmpeqd %xmm5, %xmm5
movq %rbp, 0x88(%rsp)
movzbl (%r15,%rdx), %ecx
testl %ecx, %ecx
je 0x3963
movl 0x100(%rsp,%rcx,4), %r9d
leal 0x1(%r9), %eax
movl %eax, 0x100(%rsp,%rcx,4)
xorl %r8d, %r8d
movl %ecx, %r10d
movl %r8d, %edi
movl %r9d, %eax
andl $0x1, %eax
leal (%rax,%rdi,2), %r8d
shrl %r9d
decl %r10d
jne 0x353e
addl %edi, %edi
cmpb $0xa, %cl
ja 0x38d0
cmpl $0x3ff, %edi            # imm = 0x3FF
ja 0x38ed
movl %ecx, %r8d
shll $0x9, %r8d
movl $0x1, %r11d
shlq %cl, %r11
movl %edx, %r9d
orl %r8d, %r9d
orl %eax, %edi
movl %edi, %eax
addl %r11d, %eax
xorl %r8d, %r8d
cmpl $0x400, %eax            # imm = 0x400
setb %r8b
cmpq $0x401, %rax            # imm = 0x401
movl $0x400, %r10d           # imm = 0x400
cmovaeq %rax, %r10
subq %r8, %r10
subq %rax, %r10
shrq %cl, %r10
leaq (%r8,%r10), %rax
addq %r8, %r10
addq $0x8, %r10
andq $-0x8, %r10
movl $0x3, %r8d
shlq %cl, %r8
movq %r8, 0xb8(%rsp)
movl $0x5, %r8d
shlq %cl, %r8
movq %r8, 0xb0(%rsp)
movq %rax, %xmm6
pshufd $0x44, %xmm6, %xmm6     # xmm6 = xmm6[0,1,0,1]
movl $0x6, %ebp
shlq %cl, %rbp
movl $0x7, %r13d
shlq %cl, %r13
leaq (%r11,%r11), %rax
movq %rax, 0xa8(%rsp)
movq %r11, 0x68(%rsp)
leaq (,%r11,4), %rax
movq %rax, 0xa0(%rsp)
pxor %xmm4, %xmm6
xorl %r8d, %r8d
movq %r8, %r11
shlq %cl, %r11
addq %rdi, %r11
movq %r8, %xmm7
pshufd $0x44, %xmm7, %xmm7     # xmm7 = xmm7[0,1,0,1]
movdqa %xmm7, %xmm8
por %xmm3, %xmm8
pxor %xmm4, %xmm8
movdqa %xmm8, %xmm10
pcmpgtd %xmm6, %xmm10
pshufd $0xa0, %xmm10, %xmm9    # xmm9 = xmm10[0,0,2,2]
pshuflw $0xe8, %xmm9, %xmm11    # xmm11 = xmm9[0,2,2,3,4,5,6,7]
pcmpeqd %xmm6, %xmm8
pshufd $0xf5, %xmm8, %xmm8     # xmm8 = xmm8[1,1,3,3]
pshuflw $0xe8, %xmm8, %xmm12    # xmm12 = xmm8[0,2,2,3,4,5,6,7]
pand %xmm11, %xmm12
pshufd $0xf5, %xmm10, %xmm10   # xmm10 = xmm10[1,1,3,3]
pshuflw $0xe8, %xmm10, %xmm11   # xmm11 = xmm10[0,2,2,3,4,5,6,7]
por %xmm12, %xmm11
pxor %xmm5, %xmm11
packssdw %xmm11, %xmm11
movd %xmm11, %eax
testb $0x1, %al
je 0x3697
movw %r9w, (%r12,%r11,2)
pand %xmm9, %xmm8
por %xmm10, %xmm8
packssdw %xmm8, %xmm8
pxor %xmm5, %xmm8
packssdw %xmm8, %xmm8
movd %xmm8, %eax
shrl $0x10, %eax
testb $0x1, %al
je 0x36c9
movq 0x68(%rsp), %rax
addq %r11, %rax
movw %r9w, (%r12,%rax,2)
movdqa %xmm7, %xmm9
por %xmm2, %xmm9
pxor %xmm4, %xmm9
movdqa %xmm9, %xmm10
pcmpgtd %xmm6, %xmm10
pshufd $0xa0, %xmm10, %xmm8    # xmm8 = xmm10[0,0,2,2]
pcmpeqd %xmm6, %xmm9
pshufd $0xf5, %xmm9, %xmm9     # xmm9 = xmm9[1,1,3,3]
movdqa %xmm9, %xmm11
pand %xmm8, %xmm11
pshufd $0xf5, %xmm10, %xmm10   # xmm10 = xmm10[1,1,3,3]
por %xmm10, %xmm11
packssdw %xmm11, %xmm11
pxor %xmm5, %xmm11
packssdw %xmm11, %xmm11
pextrw $0x2, %xmm11, %eax
testb $0x1, %al
je 0x3731
movq 0xa8(%rsp), %rax
addq %r11, %rax
movw %r9w, (%r12,%rax,2)
pshufhw $0x84, %xmm8, %xmm8     # xmm8 = xmm8[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm9, %xmm9     # xmm9 = xmm9[0,1,2,3,4,5,4,6]
pand %xmm8, %xmm9
pshufhw $0x84, %xmm10, %xmm8    # xmm8 = xmm10[0,1,2,3,4,5,4,6]
por %xmm9, %xmm8
pxor %xmm5, %xmm8
packssdw %xmm8, %xmm8
pextrw $0x3, %xmm8, %eax
testb $0x1, %al
je 0x3771
movq 0xb8(%rsp), %rax
addq %r11, %rax
movw %r9w, (%r12,%rax,2)
movdqa %xmm7, %xmm8
por %xmm1, %xmm8
pxor %xmm4, %xmm8
movdqa %xmm8, %xmm10
pcmpgtd %xmm6, %xmm10
pshufd $0xa0, %xmm10, %xmm9    # xmm9 = xmm10[0,0,2,2]
pshuflw $0xe8, %xmm9, %xmm11    # xmm11 = xmm9[0,2,2,3,4,5,6,7]
pcmpeqd %xmm6, %xmm8
pshufd $0xf5, %xmm8, %xmm8     # xmm8 = xmm8[1,1,3,3]
pshuflw $0xe8, %xmm8, %xmm12    # xmm12 = xmm8[0,2,2,3,4,5,6,7]
pand %xmm11, %xmm12
pshufd $0xf5, %xmm10, %xmm10   # xmm10 = xmm10[1,1,3,3]
pshuflw $0xe8, %xmm10, %xmm11   # xmm11 = xmm10[0,2,2,3,4,5,6,7]
por %xmm12, %xmm11
pxor %xmm5, %xmm11
packssdw %xmm11, %xmm11
pextrw $0x4, %xmm11, %eax
testb $0x1, %al
je 0x37e1
movq 0xa0(%rsp), %rax
addq %r11, %rax
movw %r9w, (%r12,%rax,2)
pand %xmm9, %xmm8
por %xmm10, %xmm8
packssdw %xmm8, %xmm8
pxor %xmm5, %xmm8
packssdw %xmm8, %xmm8
pextrw $0x5, %xmm8, %eax
testb $0x1, %al
je 0x3814
movq 0xb0(%rsp), %rax
addq %r11, %rax
movw %r9w, (%r12,%rax,2)
por %xmm0, %xmm7
pxor %xmm4, %xmm7
movdqa %xmm7, %xmm9
pcmpgtd %xmm6, %xmm9
pshufd $0xa0, %xmm9, %xmm8     # xmm8 = xmm9[0,0,2,2]
pcmpeqd %xmm6, %xmm7
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
movdqa %xmm7, %xmm10
pand %xmm8, %xmm10
pshufd $0xf5, %xmm9, %xmm9     # xmm9 = xmm9[1,1,3,3]
por %xmm9, %xmm10
packssdw %xmm10, %xmm10
pxor %xmm5, %xmm10
packssdw %xmm10, %xmm10
pextrw $0x6, %xmm10, %eax
testb $0x1, %al
je 0x386c
leaq (%r11,%rbp), %rax
movw %r9w, (%r12,%rax,2)
pshufhw $0x84, %xmm8, %xmm8     # xmm8 = xmm8[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm7, %xmm7     # xmm7 = xmm7[0,1,2,3,4,5,4,6]
pand %xmm8, %xmm7
pshufhw $0x84, %xmm9, %xmm8     # xmm8 = xmm9[0,1,2,3,4,5,4,6]
por %xmm7, %xmm8
pxor %xmm5, %xmm8
packssdw %xmm8, %xmm7
pextrw $0x7, %xmm7, %eax
testb $0x1, %al
je 0x38a2
addq %r13, %r11
movw %r9w, (%r12,%r11,2)
addq $0x8, %r8
cmpq %r8, %r10
jne 0x3620
movq 0x60(%rsp), %r13
movq 0x58(%rsp), %r11
movq 0x30(%rsp), %r10
movq 0x10(%rsp), %r8
movq 0x88(%rsp), %rbp
jmp 0x3963
andl $0x3ff, %r8d            # imm = 0x3FF
movswl (%r12,%r8,2), %r9d
testl %r9d, %r9d
movq 0x30(%rsp), %r10
je 0x38f4
movl %esi, %eax
movl %r9d, %esi
jmp 0x38fc
movq 0x30(%rsp), %r10
jmp 0x395e
movw %si, (%r12,%r8,2)
leal -0x2(%rsi), %eax
shrl $0x9, %edi
cmpl $0xb, %ecx
jne 0x3909
movl %eax, %r8d
jmp 0x3946
notl %esi
btl $0x1, %edi
adcl $0x0, %esi
movslq %esi, %rsi
movswl 0x920(%r15,%rsi,2), %r9d
testl %r9d, %r9d
je 0x392b
movl %eax, %r8d
movl %r9d, %eax
jmp 0x3938
movw %ax, 0x920(%r15,%rsi,2)
leal -0x2(%rax), %r8d
movl %eax, %esi
shrl %edi
decl %ecx
movl %r8d, %eax
cmpl $0xb, %ecx
ja 0x3909
notl %esi
btl $0x1, %edi
adcl $0x0, %esi
movslq %esi, %rax
movw %dx, 0x920(%r15,%rax,2)
movl %r8d, %esi
movq 0x10(%rsp), %r8
incq %rdx
cmpq %rbp, %rdx
jne 0x3518
xorl %esi, %esi
movl 0x74(%rsp), %ecx
cmpl $0x2, %ecx
movq 0x48(%rsp), %r15
jne 0x3ab7
jmp 0x3a0f
movq %rax, 0x40(%rsp)
movl 0x180(%rsp), %edi
movl 0x1c(%rsp), %r9d
movq 0x38(%rsp), %rbp
jmp 0x3cce
movl $0x23, %eax
xorl %edx, %edx
xorl %esi, %esi
movl 0x180(%rsp), %edi
movq 0x60(%rsp), %r13
movl 0x1c(%rsp), %r9d
movq 0x28(%rsp), %r12
movq 0x38(%rsp), %rbp
movq 0x48(%rsp), %r15
jmp 0x2be7
cmpq %r8, %rbp
jb 0x2697
xorl %esi, %esi
testb $0x2, %dil
jne 0x39fb
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
cmpl $0x3, %r11d
jae 0x338e
jmp 0x39d1
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0xe, %eax
jmp 0x2be7
movq %r15, %rcx
movl 0x34(%r15), %r15d
movl 0x38(%rcx), %r12d
leal (%r12,%r15), %eax
cmpl %eax, %esi
jae 0x3a5c
movq %rcx, %r15
cmpl $0xe, %r11d
ja 0x3acc
movq %r8, %rax
movq 0x38(%rsp), %rbp
subq %rbp, %rax
cmpq $0x1, %rax
movl 0x180(%rsp), %edi
jg 0x3ae4
movl %esi, %ebx
movl 0x1c(%rsp), %r9d
movq 0x28(%rsp), %r12
jmp 0x2df1
jne 0x3bc9
movq %rcx, %rbp
leaq 0x50(%rcx), %rdi
movq %rsi, 0x68(%rsp)
leaq 0x2934(%rcx), %rsi
movq %r15, %rdx
movq %r11, 0x58(%rsp)
movq %r10, %rbx
callq 0x10e0
leaq 0xdf0(%rbp), %rdi
leaq (%r15,%rbp), %rsi
addq $0x2934, %rsi           # imm = 0x2934
movq %rbp, %r15
movq %r12, %rdx
callq 0x10e0
movq 0x10(%rsp), %r8
movq %rbx, %r10
movq 0x58(%rsp), %r11
movl 0x1c(%rbp), %ecx
movq 0x68(%rsp), %rbx
decl %ecx
movl %ecx, 0x1c(%r15)
movq 0x40(%rsp), %rax
movq 0x28(%rsp), %r12
jmp 0x33cf
movl 0x180(%rsp), %edi
movl 0x1c(%rsp), %r9d
movq 0x28(%rsp), %r12
movq 0x38(%rsp), %rbp
jmp 0x3b11
movzbl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
movzbl 0x1(%rbp), %edx
leal 0x8(%r11), %ecx
shlq %cl, %rdx
orq %rax, %rdx
orq %rdx, %r13
addq $0x2, %rbp
orl $0x10, %r11d
movl 0x1c(%rsp), %r9d
movq 0x28(%rsp), %r12
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0x1cb0(%r15,%rax,2), %r10d
testl %r10d, %r10d
movl %r9d, 0x1c(%rsp)
js 0x3b3b
movl %r10d, %ecx
shrl $0x9, %ecx
andl $0x1ff, %r10d           # imm = 0x1FF
jmp 0x3b62
movl $0xa, %eax
notl %r10d
movslq %r10d, %rdx
movl %eax, %ecx
incl %ecx
btq %rax, %r13
adcq $0x0, %rdx
movswl 0x24b0(%r15,%rdx,2), %r10d
movl %ecx, %eax
testl %r10d, %r10d
js 0x3b40
shrq %cl, %r13
subl %ecx, %r11d
cmpl $0xf, %r10d
ja 0x3b89
movq %rbp, 0x38(%rsp)
movq %r12, 0x28(%rsp)
movl %esi, %eax
incl %esi
movb %r10b, 0x2934(%r15,%rax)
jmp 0x3a0f
cmpl $0x10, %r10d
jne 0x3b93
testl %esi, %esi
je 0x3bae
leal -0x10(%r10), %eax
leaq 0x5361(%rip), %rcx      # 0x8eff
movsbl (%rax,%rcx), %r9d
cmpl %r9d, %r11d
jae 0x3c2d
jmp 0x3bf2
xorl %ebx, %ebx
movl $0x10, %r10d
movl $0x11, %eax
xorl %edx, %edx
xorl %esi, %esi
movl 0x1c(%rsp), %r9d
jmp 0x2be7
movl $0x15, %eax
xorl %edx, %edx
movl %esi, %ebx
xorl %esi, %esi
movl 0x180(%rsp), %edi
movl 0x1c(%rsp), %r9d
movq 0x28(%rsp), %r12
movq 0x38(%rsp), %rbp
movq %rcx, %r15
jmp 0x2be7
movl %esi, %ebx
cmpq %r8, %rbp
jb 0x2942
xorl %esi, %esi
testb $0x2, %dil
jne 0x3cba
movq %r13, %rax
movl %r11d, %ecx
shlq %cl, %rsi
movq %rsi, %r13
orq %rax, %r13
addl $0x8, %r11d
cmpl %r9d, %r11d
jae 0x3c26
movq %rbx, %rsi
jmp 0x3bf2
leal -0x10(%r10), %eax
movq %rbx, %rsi
movq %rbp, 0x38(%rsp)
movq %r12, 0x28(%rsp)
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %r9d, %ecx
shll %cl, %edx
notl %edx
movq %rsi, %rbp
movl %r13d, %esi
andl %edx, %esi
shrq %cl, %r13
movl %r9d, 0x1c(%rsp)
subl %r9d, %r11d
movq %r15, %rdx
movq %r11, %r15
leaq 0x52a0(%rip), %rcx      # 0x8f03
movsbl (%rax,%rcx), %ebx
addl %esi, %ebx
movq %rbp, %rcx
movl %ecx, %eax
movq %rdx, %r12
leaq (%rdx,%rax), %rdi
addq $0x2934, %rdi           # imm = 0x2934
xorl %eax, %eax
movq %r10, 0x30(%rsp)
cmpl $0x10, %r10d
jne 0x3c96
leaq 0x2934(%r12), %rax
decl %ecx
movb (%rax,%rcx), %al
movl %ebx, %edx
movzbl %al, %esi
callq 0x10a0
movq %rbp, %rsi
addl %ebx, %esi
movq %r15, %r11
movq %r12, %r15
movq 0x30(%rsp), %r10
movq 0x10(%rsp), %r8
jmp 0x3a0f
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x12, %eax
jmp 0x2be7
movq %r8, %rax
subq %rbp, %rax
cmpq $0x4, %rax
jl 0x3db9
movq 0x50(%rsp), %rcx
subq %r12, %rcx
cmpq $0x1, %rcx
jle 0x3db9
cmpl $0x1d, %r11d
ja 0x3d0a
movl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
orq %rax, %r13
addq $0x4, %rbp
orl $0x20, %r11d
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0x170(%r15,%rax,2), %ebx
testl %ebx, %ebx
js 0x3d26
movl %ebx, %ecx
shrl $0x9, %ecx
jmp 0x3d4b
movl $0xa, %eax
notl %ebx
movslq %ebx, %rdx
movl %eax, %ecx
incl %ecx
btq %rax, %r13
adcq $0x0, %rdx
movswl 0x970(%r15,%rdx,2), %ebx
movl %ecx, %eax
testl %ebx, %ebx
js 0x3d2b
shrq %cl, %r13
subl %ecx, %r11d
btl $0x8, %ebx
jb 0x3df1
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0x170(%r15,%rax,2), %eax
testl %eax, %eax
js 0x3d77
movl %eax, %ecx
shrl $0x9, %ecx
jmp 0x3d9b
movl $0xa, %edx
notl %eax
cltq
movl %edx, %ecx
incl %ecx
btq %rdx, %r13
adcq $0x0, %rax
movswl 0x970(%r15,%rax,2), %eax
movl %ecx, %edx
testl %eax, %eax
js 0x3d7c
shrq %cl, %r13
subl %ecx, %r11d
movb %bl, (%r12)
btl $0x8, %eax
jb 0x3df8
movb %al, 0x1(%r12)
addq $0x2, %r12
jmp 0x3cce
cmpl $0xe, %r11d
ja 0x3e8c
cmpq $0x1, %rax
jle 0x3e00
movzbl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
movzbl 0x1(%rbp), %edx
leal 0x8(%r11), %ecx
shlq %cl, %rdx
orq %rax, %rdx
orq %rdx, %r13
addq $0x2, %rbp
orl $0x10, %r11d
jmp 0x3e8c
movl %ebx, %eax
jmp 0x3ee3
incq %r12
jmp 0x3ee3
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0x170(%r15,%rax,2), %eax
testl %eax, %eax
js 0x3e2a
movzwl %ax, %ecx
cmpl $0x200, %ecx            # imm = 0x200
jb 0x3e60
shrl $0x9, %eax
cmpl %eax, %r11d
jae 0x3e8c
jmp 0x3e60
cmpl $0xb, %r11d
jb 0x3e60
movl $0xc, %ecx
leal -0x2(%rcx), %edx
notl %eax
cltq
btq %rdx, %r13
adcq $0x0, %rax
movswl 0x970(%r15,%rax,2), %eax
testl %eax, %eax
jns 0x3e5b
leal 0x1(%rcx), %edx
cmpl %ecx, %r11d
movl %edx, %ecx
jae 0x3e35
testw %ax, %ax
jns 0x3e8c
cmpq %r8, %rbp
jb 0x26c0
xorl %esi, %esi
testb $0x2, %dil
jne 0x3fb2
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
cmpl $0xf, %r11d
jb 0x3e00
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0x170(%r15,%rax,2), %ebx
testl %ebx, %ebx
js 0x3eae
movl %ebx, %ecx
shrl $0x9, %ecx
andl $0x1ff, %ebx            # imm = 0x1FF
jmp 0x3ed3
movl $0xa, %eax
notl %ebx
movslq %ebx, %rdx
movl %eax, %ecx
incl %ecx
btq %rax, %r13
adcq $0x0, %rdx
movswl 0x970(%r15,%rdx,2), %ebx
movl %ecx, %eax
testl %ebx, %ebx
js 0x3eb3
shrq %cl, %r13
subl %ecx, %r11d
movl %ebx, %eax
cmpl $0xff, %ebx
jbe 0x3f1d
andl $0x1ff, %eax            # imm = 0x1FF
movl $0x100, %ebx            # imm = 0x100
cmpl $0x100, %eax            # imm = 0x100
jne 0x3f30
testb $0x1, 0x18(%r15)
je 0x2fce
testb $0x1, %dil
je 0x400c
movl %r11d, %ecx
andb $0x7, %cl
shrq %cl, %r13
andl $-0x8, %r11d
xorl %ebx, %ebx
jmp 0x3fc6
cmpq 0x50(%rsp), %r12
jae 0x3f9e
movb %bl, (%r12)
incq %r12
jmp 0x3cce
addl $0xfffffeff, %eax       # imm = 0xFFFFFEFF
leaq 0x43c4(%rip), %rcx      # 0x8300
movl (%rcx,%rax,4), %ebx
leaq -0x1c(%rax), %rcx
xorl %r9d, %r9d
cmpq $-0x14, %rcx
jae 0x3f8e
cmpl $0xe, %r11d
ja 0x411c
movq %r8, %rax
subq %rbp, %rax
cmpq $0x1, %rax
jle 0x4090
movzbl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
movzbl 0x1(%rbp), %edx
leal 0x8(%r11), %ecx
shlq %cl, %rdx
orq %rax, %rdx
orq %rdx, %r13
addq $0x2, %rbp
orl $0x10, %r11d
jmp 0x411c
leaq 0x43eb(%rip), %rcx      # 0x8380
movl (%rcx,%rax,4), %r9d
jmp 0x2e8e
movl $0x2, 0xc(%rsp)
movb $0x1, %dl
movl $0x18, %eax
jmp 0x30e9
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x17, %eax
jmp 0x2be7
cmpl $0x3, %ebx
ja 0x400c
testl %r11d, %r11d
je 0x3fdc
cmpl $0x7, %r11d
ja 0x405c
jmp 0x4023
xorl %r11d, %r11d
cmpq %r8, %rbp
jae 0x3ff0
movzbl (%rbp), %esi
incq %rbp
xorl %r11d, %r11d
jmp 0x4068
xorl %esi, %esi
testb $0x2, %dil
je 0x4068
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x2a, %eax
jmp 0x2be7
movl $0x0, 0xc(%rsp)
movb $0x1, %dl
movl $0x22, %eax
movb $0x1, %sil
jmp 0x2be7
cmpq %r8, %rbp
jae 0x403e
movzbl (%rbp), %eax
movl %r11d, %ecx
shlq %cl, %rax
incq %rbp
orq %rax, %r13
addl $0x8, %r11d
jmp 0x405c
xorl %esi, %esi
testb $0x2, %dil
jne 0x407c
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
leal 0x8(%r11), %eax
cmpl $-0x9, %r11d
movl %eax, %r11d
ja 0x4023
movzbl %r13b, %esi
shrq $0x8, %r13
addl $-0x8, %r11d
movl 0x10(%r15), %eax
shll $0x8, %eax
orl %esi, %eax
movl %eax, 0x10(%r15)
incl %ebx
jmp 0x3fc6
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x29, %eax
jmp 0x2be7
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0xf10(%r15,%rax,2), %eax
testl %eax, %eax
js 0x40ba
movzwl %ax, %ecx
cmpl $0x200, %ecx            # imm = 0x200
jb 0x40f0
shrl $0x9, %eax
cmpl %eax, %r11d
jae 0x411c
jmp 0x40f0
cmpl $0xb, %r11d
jb 0x40f0
movl $0xc, %ecx
leal -0x2(%rcx), %edx
notl %eax
cltq
btq %rdx, %r13
adcq $0x0, %rax
movswl 0x1710(%r15,%rax,2), %eax
testl %eax, %eax
jns 0x40eb
leal 0x1(%rcx), %edx
cmpl %ecx, %r11d
movl %edx, %ecx
jae 0x40c5
testw %ax, %ax
jns 0x411c
cmpq %r8, %rbp
jb 0x28b1
xorl %esi, %esi
testb $0x2, %dil
jne 0x418e
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
cmpl $0xf, %r11d
jb 0x4090
movl %r13d, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movswl 0xf10(%r15,%rax,2), %eax
testl %eax, %eax
js 0x413d
movl %eax, %ecx
shrl $0x9, %ecx
andl $0x1ff, %eax            # imm = 0x1FF
jmp 0x4161
movl $0xa, %edx
notl %eax
cltq
movl %edx, %ecx
incl %ecx
btq %rdx, %r13
adcq $0x0, %rax
movswl 0x1710(%r15,%rax,2), %eax
movl %ecx, %edx
testl %eax, %eax
js 0x4142
shrq %cl, %r13
subl %ecx, %r11d
movl %eax, %eax
leaq 0x4290(%rip), %rcx      # 0x8400
movl (%rcx,%rax,4), %r10d
leaq -0x1e(%rax), %rcx
xorl %r9d, %r9d
cmpq $-0x1a, %rcx
jb 0x41e8
leaq 0x42f8(%rip), %rcx      # 0x8480
movl (%rcx,%rax,4), %r9d
jmp 0x41a2
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x1a, %eax
jmp 0x2be7
cmpl %r9d, %r11d
jae 0x41cb
cmpq %r8, %rbp
jb 0x296b
xorl %esi, %esi
testb $0x2, %dil
jne 0x42f9
movl %r11d, %ecx
shlq %cl, %rsi
orq %rsi, %r13
addl $0x8, %r11d
jmp 0x41a2
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %r9d, %ecx
shll %cl, %eax
notl %eax
movl %r13d, %edx
shrq %cl, %r13
andl %eax, %edx
addl %r10d, %edx
subl %r9d, %r11d
movl %edx, %r10d
movq %r12, %rax
subq 0x20(%rsp), %rax
movl %r10d, %ecx
testb $0x4, %dil
movq %rax, 0x40(%rsp)
je 0x4207
cmpq %rcx, %rax
jb 0x42ed
subq %rcx, %rax
andq 0x80(%rsp), %rax
addq 0x20(%rsp), %rax
cmpq %rax, %r12
movq %rax, %rcx
cmovaq %r12, %rcx
movl %ebx, %edx
addq %rcx, %rdx
cmpq 0x50(%rsp), %rdx
jbe 0x4242
movl %ebx, %ecx
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
subl $0x1, %ecx
jb 0x3cce
jmp 0x2d84
cmpl $0x9, %ebx
jb 0x429c
cmpl %r10d, %ebx
ja 0x429c
movl %ebx, %ecx
andl $-0x8, %ecx
addq %rax, %rcx
movl (%rax), %edx
movl %edx, (%r12)
movl 0x4(%rax), %edx
movl %edx, 0x4(%r12)
addq $0x8, %r12
addq $0x8, %rax
cmpq %rcx, %rax
jb 0x4254
andl $0x7, %ebx
cmpl $0x2, %ebx
ja 0x429c
testl %ebx, %ebx
je 0x3cce
movb (%rax), %cl
movb %cl, (%r12)
cmpl $0x2, %ebx
jne 0x4292
movb 0x1(%rax), %al
movb %al, 0x1(%r12)
movl %ebx, %eax
addq %rax, %r12
jmp 0x3cce
addl $-0x3, %ebx
addq $0x3, %rbx
movb (%rax), %cl
movb %cl, (%r12)
movb 0x1(%rax), %cl
movb %cl, 0x1(%r12)
movb 0x2(%rax), %cl
movb %cl, 0x2(%r12)
addq $0x3, %r12
addq $0x3, %rax
addq $-0x3, %rbx
cmpl $0x2, %ebx
jg 0x42a3
testl %ebx, %ebx
jle 0x3cce
movb (%rax), %cl
movb %cl, (%r12)
cmpl $0x2, %ebx
jne 0x42e5
movb 0x1(%rax), %al
movb %al, 0x1(%r12)
addq %rbx, %r12
jmp 0x3cce
xorl %edx, %edx
movl $0x25, %eax
jmp 0x30e9
movl $0x1, 0xc(%rsp)
movb $0x1, %dl
movl $0x1b, %eax
jmp 0x2be7