// File: /workspace/github_c_makefile_star2_O0/wkoszek[P]mini_gzip/miniz.c
// Function: tdefl_compress_normal
static mz_bool tdefl_compress_normal(tdefl_compressor *d)
{
  const mz_uint8 *pSrc = d->m_pSrc; size_t src_buf_left = d->m_src_buf_left;
  tdefl_flush flush = d->m_flush;

  while ((src_buf_left) || ((flush) && (d->m_lookahead_size)))
  {
    mz_uint len_to_move, cur_match_dist, cur_match_len, cur_pos;
    // Update dictionary and hash chains. Keeps the lookahead size equal to TDEFL_MAX_MATCH_LEN.
    if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1))
    {
      mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2;
      mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK];
      mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size);
      const mz_uint8 *pSrc_end = pSrc + num_bytes_to_process;
      src_buf_left -= num_bytes_to_process;
      d->m_lookahead_size += num_bytes_to_process;
      while (pSrc != pSrc_end)
      {
        mz_uint8 c = *pSrc++; d->m_dict[dst_pos] = c; if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;
        hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1);
        d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)(ins_pos);
        dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; ins_pos++;
      }
    }
    else
    {
      while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN))
      {
        mz_uint8 c = *pSrc++;
        mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK;
        src_buf_left--;
        d->m_dict[dst_pos] = c;
        if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))
          d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;
        if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN)
        {
          mz_uint ins_pos = d->m_lookahead_pos + (d->m_lookahead_size - 1) - 2;
          mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << (TDEFL_LZ_HASH_SHIFT * 2)) ^ (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1);
          d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)(ins_pos);
        }
      }
    }
    d->m_dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size);
    if ((!flush) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN))
      break;

    // Simple lazy/greedy parsing state machine.
    len_to_move = 1; cur_match_dist = 0; cur_match_len = d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1); cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK;
    if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS))
    {
      if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS)))
      {
        mz_uint8 c = d->m_dict[(cur_pos - 1) & TDEFL_LZ_DICT_SIZE_MASK];
        cur_match_len = 0; while (cur_match_len < d->m_lookahead_size) { if (d->m_dict[cur_pos + cur_match_len] != c) break; cur_match_len++; }
        if (cur_match_len < TDEFL_MIN_MATCH_LEN) cur_match_len = 0; else cur_match_dist = 1;
      }
    }
    else
    {
      tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, d->m_lookahead_size, &cur_match_dist, &cur_match_len);
    }
    if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U*1024U)) || (cur_pos == cur_match_dist) || ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5)))
    {
      cur_match_dist = cur_match_len = 0;
    }
    if (d->m_saved_match_len)
    {
      if (cur_match_len > d->m_saved_match_len)
      {
        tdefl_record_literal(d, (mz_uint8)d->m_saved_lit);
        if (cur_match_len >= 128)
        {
          tdefl_record_match(d, cur_match_len, cur_match_dist);
          d->m_saved_match_len = 0; len_to_move = cur_match_len;
        }
        else
        {
          d->m_saved_lit = d->m_dict[cur_pos]; d->m_saved_match_dist = cur_match_dist; d->m_saved_match_len = cur_match_len;
        }
      }
      else
      {
        tdefl_record_match(d, d->m_saved_match_len, d->m_saved_match_dist);
        len_to_move = d->m_saved_match_len - 1; d->m_saved_match_len = 0;
      }
    }
    else if (!cur_match_dist)
      tdefl_record_literal(d, d->m_dict[cur_pos]);
    else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || (cur_match_len >= 128))
    {
      tdefl_record_match(d, cur_match_len, cur_match_dist);
      len_to_move = cur_match_len;
    }
    else
    {
      d->m_saved_lit = d->m_dict[cur_pos]; d->m_saved_match_dist = cur_match_dist; d->m_saved_match_len = cur_match_len;
    }
    // Move the lookahead forward by len_to_move bytes.
    d->m_lookahead_pos += len_to_move;
    MZ_ASSERT(d->m_lookahead_size >= len_to_move);
    d->m_lookahead_size -= len_to_move;
    d->m_dict_size = MZ_MIN(d->m_dict_size + len_to_move, TDEFL_LZ_DICT_SIZE);
    // Check if it's time to flush the current LZ codes to the internal output buffer.
    if ( (d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) ||
         ( (d->m_total_lz_bytes > 31*1024) && (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= d->m_total_lz_bytes) || (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) )
    {
      int n;
      d->m_pSrc = pSrc; d->m_src_buf_left = src_buf_left;
      if ((n = tdefl_flush_block(d, 0)) != 0)
        return (n < 0) ? MZ_FALSE : MZ_TRUE;
    }
  }

  d->m_pSrc = pSrc; d->m_src_buf_left = src_buf_left;
  return MZ_TRUE;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0xb8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0xc0(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movl 0xb0(%rax), %eax
movl %eax, -0x24(%rbp)
movb $0x1, %al
cmpq $0x0, -0x20(%rbp)
movb %al, -0x69(%rbp)
jne 0x7225
xorl %eax, %eax
cmpl $0x0, -0x24(%rbp)
movb %al, -0x6a(%rbp)
je 0x721f
movq -0x10(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
setne %al
movb %al, -0x6a(%rbp)
movb -0x6a(%rbp), %al
movb %al, -0x69(%rbp)
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0x7231
jmp 0x7944
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %eax
movq -0x10(%rbp), %rcx
addl 0x30(%rcx), %eax
cmpl $0x2, %eax
jb 0x73d5
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x10(%rbp), %rcx
addl 0x2c(%rcx), %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movl %eax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x10(%rbp), %rcx
addl 0x2c(%rcx), %eax
subl $0x2, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
andl $0x7fff, %ecx           # imm = 0x7FFF
movl %ecx, %ecx
movzbl 0xd0(%rax,%rcx), %eax
shll $0x5, %eax
movq -0x10(%rbp), %rcx
movl -0x3c(%rbp), %edx
addl $0x1, %edx
andl $0x7fff, %edx           # imm = 0x7FFF
movl %edx, %edx
movzbl 0xd0(%rcx,%rdx), %ecx
xorl %ecx, %eax
movl %eax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rdx
movl $0x102, %ecx            # imm = 0x102
subl 0x2c(%rdx), %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x72cc
movq -0x20(%rbp), %rax
movq %rax, -0x78(%rbp)
jmp 0x72de
movq -0x10(%rbp), %rcx
movl $0x102, %eax            # imm = 0x102
subl 0x2c(%rcx), %eax
movl %eax, %eax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rax
movl -0x44(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movl -0x44(%rbp), %eax
movl %eax, %ecx
movq -0x20(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x20(%rbp)
movl -0x44(%rbp), %ecx
movq -0x10(%rbp), %rax
addl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
movq -0x18(%rbp), %rax
cmpq -0x50(%rbp), %rax
je 0x73d0
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x18(%rbp)
movb (%rax), %al
movb %al, -0x51(%rbp)
movb -0x51(%rbp), %dl
movq -0x10(%rbp), %rax
movl -0x38(%rbp), %ecx
movb %dl, 0xd0(%rax,%rcx)
cmpl $0x101, -0x38(%rbp)     # imm = 0x101
jae 0x7365
movb -0x51(%rbp), %dl
movq -0x10(%rbp), %rax
movl -0x38(%rbp), %ecx
addl $0x8000, %ecx           # imm = 0x8000
movl %ecx, %ecx
movb %dl, 0xd0(%rax,%rcx)
movl -0x40(%rbp), %eax
shll $0x5, %eax
movzbl -0x51(%rbp), %ecx
xorl %ecx, %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movl -0x40(%rbp), %ecx
movw 0x292b2(%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
andl $0x7fff, %ecx           # imm = 0x7FFF
movl %ecx, %ecx
movw %dx, 0x192b2(%rax,%rcx,2)
movl -0x3c(%rbp), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0x40(%rbp), %ecx
movw %dx, 0x292b2(%rax,%rcx,2)
movl -0x38(%rbp), %eax
addl $0x1, %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movl %eax, -0x38(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x7310
jmp 0x7528
jmp 0x73d7
xorl %eax, %eax
cmpq $0x0, -0x20(%rbp)
movb %al, -0x79(%rbp)
je 0x73f4
movq -0x10(%rbp), %rax
cmpl $0x102, 0x2c(%rax)      # imm = 0x102
setb %al
movb %al, -0x79(%rbp)
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0x7400
jmp 0x7526
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x18(%rbp)
movb (%rax), %al
movb %al, -0x52(%rbp)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x10(%rbp), %rcx
addl 0x2c(%rcx), %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movl %eax, -0x58(%rbp)
movq -0x20(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x20(%rbp)
movb -0x52(%rbp), %dl
movq -0x10(%rbp), %rax
movl -0x58(%rbp), %ecx
movb %dl, 0xd0(%rax,%rcx)
cmpl $0x101, -0x58(%rbp)     # imm = 0x101
jae 0x7469
movb -0x52(%rbp), %dl
movq -0x10(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x8000, %ecx           # imm = 0x8000
movl %ecx, %ecx
movb %dl, 0xd0(%rax,%rcx)
movq -0x10(%rbp), %rcx
movl 0x2c(%rcx), %eax
addl $0x1, %eax
movl %eax, 0x2c(%rcx)
movq -0x10(%rbp), %rcx
addl 0x30(%rcx), %eax
cmpl $0x3, %eax
jb 0x7521
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x10(%rbp), %rcx
movl 0x2c(%rcx), %ecx
subl $0x1, %ecx
addl %ecx, %eax
subl $0x2, %eax
movl %eax, -0x5c(%rbp)
movq -0x10(%rbp), %rax
movl -0x5c(%rbp), %ecx
andl $0x7fff, %ecx           # imm = 0x7FFF
movl %ecx, %ecx
movzbl 0xd0(%rax,%rcx), %eax
shll $0xa, %eax
movq -0x10(%rbp), %rcx
movl -0x5c(%rbp), %edx
addl $0x1, %edx
andl $0x7fff, %edx           # imm = 0x7FFF
movl %edx, %edx
movzbl 0xd0(%rcx,%rdx), %ecx
shll $0x5, %ecx
xorl %ecx, %eax
movzbl -0x52(%rbp), %ecx
xorl %ecx, %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movl %eax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movl -0x60(%rbp), %ecx
movw 0x292b2(%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movl -0x5c(%rbp), %ecx
andl $0x7fff, %ecx           # imm = 0x7FFF
movl %ecx, %ecx
movw %dx, 0x192b2(%rax,%rcx,2)
movl -0x5c(%rbp), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0x60(%rbp), %ecx
movw %dx, 0x292b2(%rax,%rcx,2)
jmp 0x73d7
jmp 0x7528
movq -0x10(%rbp), %rcx
movl $0x8000, %eax           # imm = 0x8000
subl 0x2c(%rcx), %eax
movq -0x10(%rbp), %rcx
cmpl 0x30(%rcx), %eax
jae 0x754e
movq -0x10(%rbp), %rcx
movl $0x8000, %eax           # imm = 0x8000
subl 0x2c(%rcx), %eax
movl %eax, -0x80(%rbp)
jmp 0x7558
movq -0x10(%rbp), %rax
movl 0x30(%rax), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x30(%rax)
cmpl $0x0, -0x24(%rbp)
jne 0x757a
movq -0x10(%rbp), %rax
cmpl $0x102, 0x2c(%rax)      # imm = 0x102
jae 0x757a
jmp 0x7944
movl $0x1, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x70(%rax)
je 0x75a1
movq -0x10(%rbp), %rax
movl 0x70(%rax), %eax
movl %eax, -0x84(%rbp)
jmp 0x75ae
movl $0x2, %eax
movl %eax, -0x84(%rbp)
jmp 0x75ae
movl -0x84(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x120000, %eax         # imm = 0x120000
cmpl $0x0, %eax
je 0x766c
movq -0x10(%rbp), %rax
cmpl $0x0, 0x30(%rax)
je 0x766a
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x100000, %eax         # imm = 0x100000
cmpl $0x0, %eax
jne 0x766a
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
andl $0x7fff, %ecx           # imm = 0x7FFF
movl %ecx, %ecx
movb 0xd0(%rax,%rcx), %al
movb %al, -0x61(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x2c(%rcx), %eax
jae 0x7652
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %ecx
addl -0x30(%rbp), %ecx
movl %ecx, %ecx
movzbl 0xd0(%rax,%rcx), %eax
movzbl -0x61(%rbp), %ecx
cmpl %ecx, %eax
je 0x7647
jmp 0x7652
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x761d
cmpl $0x3, -0x30(%rbp)
jae 0x7661
movl $0x0, -0x30(%rbp)
jmp 0x7668
movl $0x1, -0x2c(%rbp)
jmp 0x766a
jmp 0x7692
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x10(%rbp), %rax
movl 0x30(%rax), %edx
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %ecx
leaq -0x2c(%rbp), %r8
leaq -0x30(%rbp), %r9
callq 0x9160
cmpl $0x3, -0x30(%rbp)
jne 0x76a1
cmpl $0x2000, -0x2c(%rbp)    # imm = 0x2000
jae 0x76c0
movl -0x34(%rbp), %eax
cmpl -0x2c(%rbp), %eax
je 0x76c0
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x40000, %eax          # imm = 0x40000
cmpl $0x0, %eax
je 0x76ce
cmpl $0x5, -0x30(%rbp)
ja 0x76ce
movl $0x0, -0x30(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x70(%rax)
je 0x7786
movl -0x30(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x70(%rcx), %eax
jbe 0x7752
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x74(%rax), %eax
movzbl %al, %esi
callq 0x9540
cmpl $0x80, -0x30(%rbp)
jb 0x7726
movq -0x10(%rbp), %rdi
movl -0x30(%rbp), %esi
movl -0x2c(%rbp), %edx
callq 0x95f0
movq -0x10(%rbp), %rax
movl $0x0, 0x70(%rax)
movl -0x30(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x7750
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %ecx
movzbl 0xd0(%rax,%rcx), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x74(%rax)
movl -0x2c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x6c(%rax)
movl -0x30(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
jmp 0x7781
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x70(%rax), %esi
movq -0x10(%rbp), %rax
movl 0x6c(%rax), %edx
callq 0x95f0
movq -0x10(%rbp), %rax
movl 0x70(%rax), %eax
subl $0x1, %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movl $0x0, 0x70(%rax)
jmp 0x780f
cmpl $0x0, -0x2c(%rbp)
jne 0x77a6
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %ecx
movzbl 0xd0(%rax,%rcx), %esi
callq 0x9540
jmp 0x780d
movq -0x10(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
jne 0x77ca
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
jne 0x77ca
cmpl $0x80, -0x30(%rbp)
jb 0x77e1
movq -0x10(%rbp), %rdi
movl -0x30(%rbp), %esi
movl -0x2c(%rbp), %edx
callq 0x95f0
movl -0x30(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x780b
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %ecx
movzbl 0xd0(%rax,%rcx), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x74(%rax)
movl -0x2c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x6c(%rax)
movl -0x30(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
jmp 0x780d
jmp 0x780f
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
addl 0x28(%rax), %ecx
movl %ecx, 0x28(%rax)
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %eax
cmpl -0x28(%rbp), %eax
jb 0x782a
jmp 0x7849
leaq 0x5735(%rip), %rdi      # 0xcf66
leaq 0x5612(%rip), %rsi      # 0xce4a
movl $0x8cc, %edx            # imm = 0x8CC
leaq 0x5745(%rip), %rcx      # 0xcf89
callq 0x1080
movl -0x28(%rbp), %edx
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x2c(%rax)
movq -0x10(%rbp), %rax
movl 0x30(%rax), %eax
addl -0x28(%rbp), %eax
cmpl $0x8000, %eax           # imm = 0x8000
jae 0x787b
movq -0x10(%rbp), %rax
movl 0x30(%rax), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x88(%rbp)
jmp 0x7888
movl $0x8000, %eax           # imm = 0x8000
movl %eax, -0x88(%rbp)
jmp 0x7888
movl -0x88(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x10(%rbp), %rcx
addq $0x92b2, %rcx           # imm = 0x92B2
addq $0xfff8, %rcx           # imm = 0xFFF8
cmpq %rcx, %rax
ja 0x78f7
movq -0x10(%rbp), %rax
cmpl $0x7c00, 0x5c(%rax)     # imm = 0x7C00
jbe 0x793f
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x10(%rbp), %rcx
addq $0x92b2, %rcx           # imm = 0x92B2
subq %rcx, %rax
imull $0x73, %eax, %eax
shrl $0x7, %eax
movq -0x10(%rbp), %rcx
cmpl 0x5c(%rcx), %eax
jae 0x78f7
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x100000, %eax         # imm = 0x100000
cmpl $0x0, %eax
je 0x793f
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0xb8(%rax)
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0xc0(%rax)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x7980
movl %eax, -0x68(%rbp)
cmpl $0x0, %eax
je 0x793d
movl -0x68(%rbp), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovll %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x7969
jmp 0x793f
jmp 0x71fa
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0xb8(%rax)
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0xc0(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)